diff -uprN binutils-2.11.92.0.12.3/COPYING.NEWLIB binutils-2.11.93.0.2/COPYING.NEWLIB --- binutils-2.11.92.0.12.3/COPYING.NEWLIB Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/COPYING.NEWLIB Thu Feb 7 10:21:03 2002 @@ -9,8 +9,8 @@ All rights reserved. Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, -advertising materials, and other materials related to such -distribution and use acknowledge that the software was developed +and other materials related to such distribution and use +acknowledge that the software was developed by the University of California, Berkeley. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. @@ -128,17 +128,30 @@ PURPOSE. (10) Unless otherwise stated in each remaining newlib file, the remaining files in the newlib subdirectory are governed by the following copyright. -Copyright (c) 1994, 1997, 2001 Red Hat Incorporated. +Copyright (c) 1994, 1997, 2001, 2002 Red Hat Incorporated. All rights reserved. -Redistribution and use in source and binary forms are permitted -provided that the above copyright notice and this paragraph are -duplicated in all such forms and that any documentation, -advertising materials, and other materials related to such -distribution and use acknowledge that the software was developed -at Cygnus Solutions. Cygnus Solutions may not be used to -endorse or promote products derived from this software without -specific prior written permission. -THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + The name of Red Hat Incorporated may not be used to endorse + or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff -uprN binutils-2.11.92.0.12.3/ChangeLog binutils-2.11.93.0.2/ChangeLog --- binutils-2.11.92.0.12.3/ChangeLog Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/ChangeLog Thu Feb 7 10:21:03 2002 @@ -1,3 +1,115 @@ +2002-02-04 Jeff Johnston + + * COPYING.NEWLIB: Remove advertising clause from + Berkeley and Red Hat licenses. + +2002-02-01 Mo DeJong + + * Makefile.in: Add all-tix to deps for all-snavigator + so that tix is built when building snavigator. + +2002-02-01 Ben Elliston + + * config.guess: Import from master sources, rev 1.229. + * config.sub: Import from master sources, rev 1.240. + +2002-01-27 Daniel Jacobowitz + + From Steve Ellcey : + * libtool.m4 (HPUX_IA64_MODE): Set to 32 or 64 based on ABI. + (lt_cv_deplibs_check_method, lt_cv_file_magic_cmd, + lt_cv_file_magic_test_file): Set to appropriate values for HP-UX + IA64. + * ltcf-c.sh (archive_cmds, hardcode_*): Ditto. + * ltconfig (shlibpath_*, dynamic_linker, library_names_spec, + soname_spec, sys_lib_search_path_spec): Ditto. + +2002-01-26 Jason Thorpe + + * configure.in (*-*-netbsd*): New. Skip target-newlib, + target-libiberty, and target-libgloss. Skip Java-related + libraries if not supported for NetBSD on target CPU. + +2002-01-23 Nick Clifton + + * configure.in: Import StrongARM and XScale target_configdirs from + FSF GCC version. + +2002-01-16 H.J. Lu (hjl@gnu.org) + + * config.guess: Import from master sources, rev 1.225. + * config.sub: Import from master sources, rev 1.238. + + * MAINTAINERS: Updated notes on config.guess and config.sub. + +2002-01-11 Steve Ellcey + + * configure.in (ia64*-*-hpux*): New target for IA64 HP-UX, + ld and gdb are not supported. + +2002-01-07 Jeff Johnston + + * Change reference to Cygnus Solutions to be Red Hat. + +2002-01-07 Jeff Johnston + + * COPYING.NEWLIB: Update generic copyright date. + +2002-01-07 Mark Salter + + * configure.in: Remove target-bsp and target-cygmon from arm builds. + Allow target-libgloss to be built for arm, strongarm, and xscale. + +2002-01-03 Ben Elliston + + * MAINTAINERS: Update URL for config.* scripts. + +2001-12-18 Alan Modra + + * config.sub: Import latest version. + * config.guess: Likewise. + +2001-12-13 Thomas Fitzsimmons + + * configure.in (FLAGS_FOR_TARGET): Remove -nostdinc and -isystem + options for i[3456]86-pc-linux* native builds. + +2001-12-05 Laurent Guerby + + * MAINTAINERS: gcc adopts symlink-tree, refer more to + libiberty. + + Import this patch from gcc: + + 2000-12-09 Laurynas Biveinis + + * symlink-tree: handle DOS-style absolute paths. + +2001-11-28 DJ Delorie + Zack Weinberg + + When build != host, create libiberty for the build machine. + + * Makefile.in (TARGET_CONFIGARGS, BUILD_CONFIGARGS): Replace + CONFIG_ARGUMENTS. + (ALL_BUILD_MODULES_LIST, BUILD_CONFIGDIRS, BUILD_SUBDIR): + New variables. + (ALL_BUILD_MODULES, CONFIGURE_BUILD_MODULES): New variables + and rules. + (all.normal): Depend on ALL_BUILD_MODULES. + (CONFIGURE_TARGET_MODULES rule): Use TARGET_CONFIGARGS. + (all-build-libiberty): Depend on configure-build-libiberty. + + * configure: Calculate and substitute proper value for + ALL_BUILD_MODULES. + * configure.in: Create the build subdirectory. + Calculate and substitute TARGET_CONFIGARGS (formerly + CONFIG_ARGUMENTS); also BUILD_SUBDIR and BUILD_CONFIGARGS (new). + +2001-11-26 Geoffrey Keating + + * config.sub: Update to version 1.232 on subversion. + 2001-11-20 Nick Clifton * Makefile.in (do-proto-toplev): Use msgfmt to generate .gmo @@ -348,12 +460,12 @@ Fri Jun 8 11:14:02 2001 Andrew Cagney or C++ library to have already been built to work properly. (do_proto_toplev): Set them to an empty string. -Sat Nov 18 18:57:50 2000 Alexandre Oliva +2000-11-18 Alexandre Oliva * Makefile.in (HOST_LIB_PATH, TARGET_LIB_PATH): New macros. (REALLY_SET_LIB_PATH): Use them. -Mon Nov 6 14:19:35 2000 Christopher Faylor +2000-11-06 Christopher Faylor * config.sub: Add support for Sun Chorus @@ -514,7 +626,7 @@ Mon Nov 6 14:19:35 2000 Christopher Fa * symlink-tree: Check number of arguments. -Thu Jul 6 15:36:55 2000 Andrew Cagney +2000-06-06 Andrew Cagney * texinfo/texinfo.tex: Update to version 2000-05-28.15. @@ -544,11 +656,11 @@ Thu Jul 6 15:36:55 2000 Andrew Cagney * README-maintainer-mode: New file: Contains notes on using --enable-maintainer-mode with binutils. -Mon May 29 13:50:03 2000 Andrew Cagney +2000-05-29 Andrew Cagney * texinfo/texinfo.tex: Update. Version from makeinfo 4.0. -Tue May 30 19:01:12 2000 Andrew Cagney +2000-05-30 Andrew Cagney * config.sub: Import CVS version 1.167 Tue May 30 09:00:07 2000. * config.guess: Import CVS version 1.148 Tue May 30 09:00:06 2000 @@ -562,11 +674,11 @@ Tue May 30 19:01:12 2000 Andrew Cagney (GCC_FOR_TARGET): Likewise. (CXX_FOR_TARGET): Likewise. -Thu May 18 10:58:13 2000 Jeffrey A Law (law@cygnus.com) +2000-05-18 Jeffrey A Law (law@cygnus.com) * configure.in (hppa*64*-*-*): Do build ld for this configuration. -Wed May 17 16:03:48 2000 Alexandre Oliva +2000-05-17 Alexandre Oliva * Makefile.in (configure-target-libiberty): Depend on configure-target-newlib. @@ -576,12 +688,12 @@ Wed May 17 16:03:48 2000 Alexandre Oliv * configure.in, Makefile.in: Merge all libffi-related configury stuff from the libgcj tree. -Tue May 16 10:06:21 2000 Andrew Cagney +2000-05-16 Andrew Cagney Thu Apr 27 11:01:48 2000 Andrew Cagney : * Makefile.in (do-tar-bz2, do-md5sum): Skip CVS directories. -Tue May 16 09:57:35 2000 Andrew Cagney +2000-05-16 Andrew Cagney Wed Apr 26 17:03:53 2000 Andrew Cagney : * Makefile.in (do-djunpack): New target. Update djunpack.bat with @@ -597,11 +709,11 @@ Tue May 16 09:57:35 2000 Andrew Cagney * ltmain.sh: Preserve in relink_command any environment variables that may affect the linker behavior. -Fri May 12 11:23:17 2000 Jeffrey A Law (law@cygnus.com) +2000-05-12 Jeffrey A Law (law@cygnus.com) * config.sub (basic_machine): Recognize hppa64 as a valid cpu type. -Wed May 10 21:26:51 2000 Jim Wilson +2000-05-10 Jim Wilson * configure.in (ia64*-*-elf*): Add gdb and friends to noconfigdirs. @@ -618,7 +730,7 @@ Wed May 10 21:26:51 2000 Jim Wilson +2000-04-19 Andrew Cagney * Makefile.in (taz, gdb-taz, gas.tar.bz2, binutils.tar.bz2, gas+binutils.tar.bz2, libg++.tar.bz2, gnats.tar.bz2, gdb.tar.bz2, @@ -630,7 +742,7 @@ Wed Apr 19 12:46:26 2000 Andrew Cagney * config.sub (case $basic_machine): Change default for "ibm-*" to "openedition". -Wed Apr 12 16:42:48 2000 Andrew Cagney +2000-04-12 Andrew Cagney * Makefile.in (gdb-taz): New target. GDB specific archive. (do-md5sum): New target. @@ -644,7 +756,7 @@ Wed Apr 12 16:42:48 2000 Andrew Cagney (gdb.tar.bz2, dejagnu.tar.bz2, gdb+dejagnu.tar.bz2, insight.tar.bz2): Use gdb-taz to create archive. -Fri Apr 7 18:10:29 2000 Andrew Cagney +2000-04-07 Andrew Cagney * configure (warn_cflags): Delete. @@ -665,7 +777,7 @@ Fri Apr 7 18:10:29 2000 Andrew Cagney * configure.in: -linux-gnu*, not -linux-gnu. -Fri Mar 3 18:44:08 2000 Andrew Cagney +2000-03-03 Andrew Cagney * Makefile.in (taz): Set PACKAGE to TOOL when not defined. (do-tar-bz2): Replace TOOL with PACKAGE. @@ -686,7 +798,7 @@ Fri Mar 3 18:44:08 2000 Andrew Cagney * config.sub: Support an OS of "wince". -Thu Feb 24 16:15:56 2000 Andrew Cagney +2000-02-24 Andrew Cagney * config.guess, config.sub: Updated to match config's 2000-02-15 version. @@ -713,7 +825,7 @@ Thu Feb 24 16:15:56 2000 Andrew Cagney * config.sub: Add support for avr target. -Tue Feb 1 00:07:46 2000 Hans-Peter Nilsson +2000-02-01 Hans-Peter Nilsson * config.sub: Add mmix-knuth-mmixware. @@ -892,11 +1004,11 @@ Thu Jul 8 12:32:23 1999 John David Ang * config.sub: Add mcore target. -Sun May 30 16:03:16 1999 Cort Dougan +1999-05-30 Cort Dougan * config.guess (ppc-*-linux-gnu): Also use ld emul elf32ppclinux. -Tue May 25 11:20:46 1999 H.J. Lu (hjl@gnu.org) +1999-05-25 H.J. Lu (hjl@gnu.org) * config.guess (dummy): Changed to $dummy. @@ -913,7 +1025,7 @@ Tue May 25 11:20:46 1999 H.J. Lu (hjl@ more accurately recorded in this ChangeLog. * config.sub: Likewise. -Thu May 20 10:00:42 1999 Stephen L Moshier +1999-05-20 Stephen L Moshier * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include. @@ -941,13 +1053,13 @@ Tue Apr 13 22:50:54 1999 Donn Terry (do * configure.in (i?86-*-beos*): Do config gperf; don't config gdb, newlib, or libgloss. -Sun Apr 11 23:55:34 1999 Alexandre Oliva +1999-04-11 Alexandre Oliva * config-ml.in: On mips*-*-*, if multidirs contains mabi=64, try to link a trivial program with -mabi=64. If it fails, remove mabi=64 from multidirs. -Sat Apr 10 21:50:01 1999 Philipp Thomas (kthomas@gwdg.de) +1999-04-10 Philipp Thomas (kthomas@gwdg.de) * config.sub: Set basic_machine to i586 when target_alias = k6-*. @@ -1027,7 +1139,7 @@ Wed Mar 10 17:39:09 1999 Drew Moseley * config.sub: Rename CYGNUS LOCAL to EGCS LOCAL -Sun Feb 28 02:20:00 1999 Geoffrey Noer +1999-02-28 Geoffrey Noer * config.sub: Check for "cygwin*" rather than "cygwin32*" @@ -1035,14 +1147,14 @@ Sun Feb 28 02:20:00 1999 Geoffrey Noer * config.sub: Fix typo in arm recognition. -Wed Feb 24 13:51:40 1999 Drew Moseley +1999-02-24 Drew Moseley * configure.in (noconfigdirs): Changed target_configdirs to include target-bsp only for m68k-*-elf* and m68k-*-coff* rather than m68k-*-* since it is not known to work on m68k-aout. Ditto for arm-*-*oabi. -Wed Feb 24 12:52:17 1999 Stan Shebs +1999-02-24 Stan Shebs * configure.in (*-*-windows*): Remove, no longer used. * config/mh-windows: Ditto. @@ -1052,11 +1164,11 @@ Wed Feb 24 12:52:17 1999 Stan Shebs +1999-02-18 Marc Espie * config.guess: Recognize openbsd-*-hppa. -Wed Feb 17 01:38:59 1999 H.J. Lu (hjl@gnu.org) +1999-02-17 H.J. Lu (hjl@gnu.org) * Makefile.in (REALLY_SET_LIB_PATH): Append $$$(RPATH_ENVVAR) only if it is not empty. @@ -1073,7 +1185,7 @@ Wed Feb 17 01:38:59 1999 H.J. Lu (hjl@ * configure.in: Added target-bsp for sparclite. -Mon Feb 8 14:17:24 1999 Richard Henderson +1999-02-08 Richard Henderson * config.sub: Recognize alphapca5[67] and up to alphaev8. @@ -1082,51 +1194,51 @@ Mon Feb 8 14:17:24 1999 Richard Hender * configure.in: Add support for strongarm port. * config.sub: Add support for strongarm target. -Sun Feb 7 18:01:54 1999 Mumit Khan +1999-02-07 Mumit Khan * configure.in (*-*-cygwin32*): Use config/mh-cygwin instead of the old name config/mh-cygwin32. Enable texinfo. -Thu Feb 4 20:43:25 1999 Ian Lance Taylor +1999-02-04 Ian Lance Taylor * configure.in: Do build ld for ix86 Solaris. -Tue Feb 2 19:46:40 1999 Jim Wilson +1999-02-02 Jim Wilson * Makefile.in (EXTRA_GCC_FLAGS): Set AR to $AR instead of $AR_FOR_TARGET. Likewise for RANLIB. -Tue Feb 2 20:05:05 1999 Catherine Moore +1999-02-02 Catherine Moore * config.sub (oabi): Recognize. * configure.in (arm-*-oabi): Handle. -Sat Jan 30 06:09:00 1999 Robert Lipe (robertlipe@usa.net) +1999-01-30 Robert Lipe (robertlipe@usa.net) * config.guess: Improve detection of i686 on UnixWare 7. -Sat Jan 30 08:04:00 1999 Mumit Khan +1999-01-30 Mumit Khan * config.guess: Add support for i386-pc-interix. * config.sub: Likewise. * configure.in: Likewise. * config/mh-interix: New file. -Mon Jan 18 13:59:20 1999 Christopher Faylor +1999-01-18 Christopher Faylor * Makefile.in: Remove unneeded all-target-libio from from all-target-winsup target since it is now unneeded. Add all-target-libtermcap in its place since it is now needed. -Wed Dec 30 20:34:52 1998 Christopher Faylor +1998-12-30 Christopher Faylor * configure.in: makefile stub for cygwin target is probably unnecessary. Remove it for now. * config/mt-cygwin: Remove. -Wed Dec 30 01:13:03 1998 Christopher Faylor +1998-12-30 Christopher Faylor * configure.in: libtermcap.a should be built when cygwin is the target as well as the host. @@ -1134,11 +1246,11 @@ Wed Dec 30 01:13:03 1998 Christopher Fa * Makefile.in: Add libtermcap target. * config/mt-cygwin: New file. libtermcap target info. -Wed Dec 23 00:20:50 1998 Jeffrey A Law (law@cygnus.com) +1998-12-23 Jeffrey A Law (law@cygnus.com) * config.sub: Clean up handling of hppa2.0. -Tue Dec 22 23:56:31 1998 Rodney Brown (rodneybrown@pmsc.com) +1998-12-22 Rodney Brown (rodneybrown@pmsc.com) * config.guess: Use C code to identify more HP machines. @@ -1186,7 +1298,7 @@ Wed Nov 18 20:13:29 1998 Christopher Fa * configure.in: Add libtermcap to list of cygwin dependencies. -Tue Nov 17 16:57:51 1998 Geoffrey Noer +1998-11-17 Geoffrey Noer * Makefile.in: modify CC_FOR_TARGET and CXX_FOR_TARGET so that they include winsup/include when it's a cygwin target. @@ -1201,25 +1313,25 @@ Tue Nov 17 16:57:51 1998 Geoffrey Noer (INSTALL_MODULES): Added install-zip. (CLEAN_MODULES): Added clean-zip. -Thu Nov 12 17:27:21 1998 Geoffrey Noer +1998-11-12 Geoffrey Noer * Makefile.in: lose "32" from comment about cygwin. -Thu Nov 5 15:00:31 1998 Nick Clifton +1998-11-05 Nick Clifton * configure.in: Use -Os to build target libraries for the fr30. -Wed Nov 4 18:49:43 1998 Dave Brolley +1998-11-04 Dave Brolley * config.sub: Add fr30. -Mon Nov 2 15:19:33 1998 Geoffrey Noer +1998-11-02 Geoffrey Noer * configure.in: drop "32" from config/mh-cygwin32. Check cygwin* instead of cygwin32*. * config.sub: Check cygwin* instead of cygwin32*. -Thu Oct 22 10:55:25 1998 Robert Lipe +1998-10-22 Robert Lipe * config.guess: Match any version of Unixware7. @@ -1228,16 +1340,16 @@ Thu Oct 22 10:55:25 1998 Robert Lipe < * Makefile.in configure.in: Add the ability to use tcl8.1 and tk8.1 if desired. -Sun Oct 18 18:34:50 1998 Jeffrey A Law (law@cygnus.com) +1998-10-18 Jeffrey A Law (law@cygnus.com) * config.if (cxx_interface, libstdcxx_interface): Do not try to set these if the appropriate directories and files to not exist. -Wed Oct 14 10:29:06 1998 Jeffrey A Law (law@cygnus.com) +1998-10-14 Jeffrey A Law (law@cygnus.com) * Makefile.in (DEVO_SUPPORT): Add config.if. -Tue Oct 13 15:45:36 1998 Manfred Hollstein +1998-10-13 Manfred Hollstein * configure: Add pattern to replace "build_tooldir"'s definition in the generated Makefile with "tooldir"'s @@ -7535,7 +7647,7 @@ Fri Dec 13 01:17:06 1991 K. Richard Pix * config.subr: resync from rms. -Wed Dec 11 22:25:20 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-11 K. Richard Pixley (rich at rtl.cygnus.com) * configure, config.sub, config.subr: merge config.sub into config.subr, call the result config.subr, remove config.sub, use @@ -7543,7 +7655,7 @@ Wed Dec 11 22:25:20 1991 K. Richard Pix * Makefile.in: revised install for dir.info. -Tue Dec 10 00:04:35 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com) * configure.in: add decstation host makefile frag. @@ -7552,11 +7664,11 @@ Tue Dec 10 00:04:35 1991 K. Richard Pix Make directories for info install. Build dir.info here then install it. -Mon Dec 9 16:48:33 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-09 K. Richard Pixley (rich at rtl.cygnus.com) * Makefile.in: fix for bad directory tests. -Sat Dec 7 00:17:01 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-07 K. Richard Pixley (rich at rtl.cygnus.com) * configure: \{1,2\} appears to be a sysv'ism. Use a different regexp. -srcdir relative was being handled incorrectly. @@ -7565,13 +7677,13 @@ Sat Dec 7 00:17:01 1991 K. Richard Pix work again and so one can focus one's attention on a particular package. -Fri Dec 6 00:22:08 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com) * configure: added PWD as a stand in for `pwd` (for speed). use elif wherever possible. make -srcdir work without -objdir. -objdir= commented out. -Thu Dec 5 22:46:52 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com) * configure: +options become --options. -subdirs commented out. added -host, -datadir. Renamed -destdir to -prefix. Comment in @@ -7583,7 +7695,7 @@ Thu Dec 5 22:46:52 1991 K. Richard Pix and shift gpl to v2. Added ChangeLog if it didn't exist. docdir and mandir now keyed off datadir by default. -Fri Nov 22 07:38:11 1991 K. Richard Pixley (rich at rtl.cygnus.com) +1991-11-22 K. Richard Pixley (rich at rtl.cygnus.com) * Freshly created ChangeLog. diff -uprN binutils-2.11.92.0.12.3/ChangeLog.linux binutils-2.11.93.0.2/ChangeLog.linux --- binutils-2.11.92.0.12.3/ChangeLog.linux Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/ChangeLog.linux Thu Feb 7 10:21:03 2002 @@ -1,3 +1,12 @@ +2002-02-07 H.J. Lu + + * binutils.spec.in: Apply mips/build.patch for cross compile. + +2002-02-03 H.J. Lu + + * libtool.m4 (lt_cv_deplibs_check_method): Updated for + Linux/mips. + 2001-11-06 H.J. Lu * binutils.spec.in: Apply binutils-mips-isa.patch for mips. diff -uprN binutils-2.11.92.0.12.3/MAINTAINERS binutils-2.11.93.0.2/MAINTAINERS --- binutils-2.11.92.0.12.3/MAINTAINERS Thu Jul 26 18:02:55 2001 +++ binutils-2.11.93.0.2/MAINTAINERS Sun Feb 3 11:22:29 2002 @@ -23,11 +23,14 @@ cgen/; cgen parts of opcodes/, sim/ & in config.guess; config.sub; dejagnu/config.guess; readline/support/config.sub; readline/support/config.guess - config: http://gnu.org + config: http://savannah.gnu.org/projects/config Patches to config-patches@gnu.org. Changes need to be done in tandem with the official CONFIG sources or submitted to the master file maintainer and brought in via a merge. + Please notify the following of any committed patches: + binutils@sources.redhat.com + gdb-patches@sources.redhat.com dejagnu/ Notify http://dejagnu.sourceforge.net/ of generic changes. @@ -58,13 +61,17 @@ ltconfig; ltmain.sh sources or submitted to the master file maintainer and brought in via a merge. -mkinstalldirs; move-if-change; symlink-tree +mkinstalldirs; move-if-change autoconf: http://gnu.org Patches to autoconf-patches@gnu.org. Changes need to be done in tandem with the official AUTOCONF sources or submitted to the master file maintainer and brought in via a merge. +symlink-tree + gcc: http://gcc.gnu.org + See libiberty. + newlib/; libgloss/ http://sources.redhat.com/newlib/ Patches to newlib@sources.redhat.com. @@ -93,7 +100,7 @@ expect/; config-ml.in; mpw-README; mpw-b mpw-configure; mpw-install; setup.com; missing; makefile.vms; utils/; config/; config.if; makefile.vms; missing; ylwrap; mkdep; etc/; install-sh; intl/ - Ask. + Ask DJ Delorie after reading the libiberty entry. modules file Obviously changes to this file should not go through diff -uprN binutils-2.11.92.0.12.3/Makefile.in binutils-2.11.93.0.2/Makefile.in --- binutils-2.11.92.0.12.3/Makefile.in Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/Makefile.in Sun Feb 3 11:22:29 2002 @@ -179,8 +179,16 @@ TARGET_CONFIGDIRS = libiberty libgloss $ # Changed by configure to $(target_alias) if cross. TARGET_SUBDIR = . -# This is set by the configure script to the arguments passed to configure. -CONFIG_ARGUMENTS = +BUILD_CONFIGDIRS = libiberty +BUILD_SUBDIR = . + +# This is set by the configure script to the arguments to use when configuring +# directories built for the target. +TARGET_CONFIGARGS = + +# This is set by the configure script to the arguments to use when configuring +# directories built for the build system. +BUILD_CONFIGARGS = # This is set by configure to REALLY_SET_LIB_PATH if --enable-shared # was used. @@ -489,6 +497,18 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS) # This is a list of the targets for all of the modules which are compiled +# using the build machine's native compiler. Configure edits the second +# macro for build!=host builds. +ALL_BUILD_MODULES_LIST = \ + all-build-libiberty +ALL_BUILD_MODULES = + +# This is a list of the configure targets for all of the modules which +# are compiled using the native tools. +CONFIGURE_BUILD_MODULES = \ + configure-build-libiberty + +# This is a list of the targets for all of the modules which are compiled # using $(FLAGS_TO_PASS). ALL_MODULES = \ all-apache \ @@ -954,6 +974,7 @@ CLEAN_X11_MODULES = \ # The target built for a native build. .PHONY: all.normal all.normal: \ + $(ALL_BUILD_MODULES) \ $(ALL_MODULES) \ $(ALL_X11_MODULES) \ $(ALL_TARGET_MODULES) \ @@ -1195,6 +1216,106 @@ gcc-no-fixedincludes: mv gcc/tmp-include gcc/include 2>/dev/null; \ else true; fi +# This rule is used to build the modules which are built with the +# build machine's native compiler. +.PHONY: $(ALL_BUILD_MODULES) +$(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; \ + (cd $(BUILD_SUBDIR)/$${dir} && $(MAKE) all); \ + else \ + true; \ + fi + +# This rule is used to configure the modules which are built with the +# native tools. +.PHONY: $(CONFIGURE_BUILD_MODULES) +$(CONFIGURE_BUILD_MODULES): + @dir=`echo $@ | sed -e 's/configure-build-//'`; \ + if [ ! -d $(BUILD_SUBDIR) ]; then \ + true; \ + elif [ -f $(BUILD_SUBDIR)/$${dir}/Makefile ] ; then \ + true; \ + 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; \ + AR="$(AR_FOR_BUILD)"; export AR; \ + AS="$(AS_FOR_BUILD)"; export AS; \ + CC="$(CC_FOR_BUILD)"; export CC; \ + CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \ + CXX="$(CXX_FOR_BUILD)"; export CXX; \ + CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \ + GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \ + DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \ + LD="$(LD_FOR_BUILD)"; export LD; \ + LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \ + NM="$(NM_FOR_BUILD)"; export NM; \ + RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \ + WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \ + echo Configuring in $(BUILD_SUBDIR)/$${dir}; \ + cd "$(BUILD_SUBDIR)/$${dir}" || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) \ + topdir=$(srcdir) ;; \ + *) \ + case "$(BUILD_SUBDIR)" in \ + .) topdir="../$(srcdir)" ;; \ + *) topdir="../../$(srcdir)" ;; \ + esac ;; \ + esac; \ + if [ "$(srcdir)" = "." ] ; then \ + if [ "$(BUILD_SUBDIR)" != "." ] ; then \ + if $(SHELL) $$s/symlink-tree $${topdir}/$${dir} "no-such-file" ; then \ + if [ -f Makefile ]; then \ + if $(MAKE) distclean; then \ + true; \ + else \ + exit 1; \ + fi; \ + else \ + true; \ + fi; \ + else \ + exit 1; \ + fi; \ + else \ + true; \ + fi; \ + srcdiroption="--srcdir=."; \ + libsrcdir="."; \ + else \ + srcdiroption="--srcdir=$${topdir}/$${dir}"; \ + libsrcdir="$$s/$${dir}"; \ + fi; \ + if [ -f $${libsrcdir}/configure ] ; then \ + rm -f no-such-file skip-this-dir; \ + CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ + $(BUILD_CONFIGARGS) $${srcdiroption} \ + --with-build-subdir="$(BUILD_SUBDIR)"; \ + else \ + rm -f no-such-file skip-this-dir; \ + CONFIG_SITE=no-such-file $(SHELL) $$s/configure \ + $(BUILD_CONFIGARGS) $${srcdiroption} \ + --with-build-subdir="$(BUILD_SUBDIR)"; \ + fi || exit 1; \ + if [ -f skip-this-dir ] ; then \ + sh skip-this-dir; \ + rm -f skip-this-dir; \ + cd ..; rmdir $${dir} || true; \ + else \ + true; \ + fi; \ + else \ + true; \ + fi; \ + else \ + true; \ + fi + # This rule is used to build the modules which use FLAGS_TO_PASS. To # build a target all-X means to cd to X and make all. # @@ -1339,12 +1460,12 @@ $(CONFIGURE_TARGET_MODULES): if [ -f $${libsrcdir}/configure ] ; then \ rm -f no-such-file skip-this-dir; \ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ - $(CONFIG_ARGUMENTS) $${srcdiroption} \ + $(TARGET_CONFIGARGS) $${srcdiroption} \ --with-target-subdir="$(TARGET_SUBDIR)"; \ else \ rm -f no-such-file skip-this-dir; \ CONFIG_SITE=no-such-file $(SHELL) $$s/configure \ - $(CONFIG_ARGUMENTS) $${srcdiroption} \ + $(TARGET_CONFIGARGS) $${srcdiroption} \ --with-target-subdir="$(TARGET_SUBDIR)"; \ fi; \ if [ -f skip-this-dir ] ; then \ @@ -1635,6 +1756,9 @@ all-target-libio: configure-target-libio check-target-libio: all-target-libstdc++ all-libgui: all-tcl all-tk all-tcl8.1 all-tk8.1 all-itcl all-libiberty: + +all-build-libiberty: configure-build-libiberty + configure-target-libffi: $(ALL_GCC_C) all-target-libffi: configure-target-libffi configure-target-libjava: $(ALL_GCC_CXX) configure-target-zlib configure-target-boehm-gc configure-target-qthreads configure-target-libffi @@ -1675,7 +1799,7 @@ all-send-pr: all-prms all-shellutils: all-sid: all-tcl all-tk all-sim: all-libiberty all-bfd all-opcodes all-readline all-cgen -all-snavigator: all-tcl all-tk all-itcl all-db all-grep all-libgui +all-snavigator: all-tcl all-tk all-itcl all-tix all-db all-grep all-libgui all-tar: all-libiberty all-tcl: all-tcl8.1: diff -uprN binutils-2.11.92.0.12.3/bfd/ChangeLog binutils-2.11.93.0.2/bfd/ChangeLog --- binutils-2.11.92.0.12.3/bfd/ChangeLog Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/ChangeLog Thu Feb 7 10:21:03 2002 @@ -1,8784 +1,720 @@ -2001-11-21 Alan Modra +2002-02-06 H.J. Lu (hjl@gnu.org) - * elfxx-ia64.c (elfNN_ia64_relocate_section): Test r_symndx rather - than sym_sec->output_section to detect relocs against discarded - sections. + * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Update + the mach and ISA fields if necessary. -2001-11-19 H.J. Lu +2002-02-06 Nick Clifton - * elflink.h (elf_link_input_bfd): Assert r_symndx != 0 when - discarding relocations. - -2001-11-19 Nick Clifton - - * section.c (bfd_is_const_section): New macro. Return true if the - given seciton is one of the special, constant, sections. - * bfd-in2.h: Regenerate. - * coffgen.c (coff_count_linenumbers): Use bfd_is_const_section. - (coff_write_native_symbol): Use bfd_is_const_section. - -2001-11-19 Alan Modra - - * elf32-hppa.c (clobber_millicode_symbols): Dec dynstr refcount. - - * elf32-hppa.c (elf32_hppa_size_stubs): Don't consider undefined - millicode syms as candidates for import stubs. - - * elf32-hppa.c (PLABEL_PLT_ENTRY_SIZE): Delete. - (allocate_PIC_calls): Rename to allocate_plt_static. - (allocate_dynrelocs): Move most of code handling .plt entries to.. - (allocate_plt_static): ..here. Don't drop plabel entries. - -2001-11-19 Hans-Peter Nilsson - - * mmo.c: Adjust documentation tags to use texinfo 4 features. - -2001-11-16 Nick Clifton - - * section.c (bfd_is_const_section): New macro. Return true if the - section pointer refers to one of the special, constant sections. - * bfd-in2.h: Regenerate. - - * coffgen.c (coff_count_linenumbers): Only update the line number - count in non-special sections. - (coff_write_native_symbol): Only update the line number file - position in non-special sections. - -2001-11-15 Daniel Jacobowitz - - * elflink.h (elf_reloc_symbol_deleted_p): Catch all relocs against - local syms from discarded sections. Update comment. - -2001-11-15 Alan Modra - - * po/SRC-POTFILES.in: Regenerate. - - * elflink.h (elf_link_input_bfd): Complain about all relocs - against local syms from discarded sections. K&R fixes. - (elf_reloc_symbol_deleted_p): Don't try to swap in external syms. - K&R fixes. - -2001-11-15 Alexandre Oliva - - * elf64-sparc.c (sparc64_elf_relocate_section): Disregard - overflows in the .stab section. - -2001-11-14 Daniel Jacobowitz - - * bfd-in.h (bfd_elf32_discard_info): Add prototype. - (bfd_elf64_discard_info): Likewise. - * bfd-in2.h: Regenerate. - * elf-bfd.h (struct elf_reloc_cookie): New. - (struct elf_backend_data): Add elf_backend_discard_info, - elf_backend_ignore_discarded_relocs, and elf_backend_write_section. - (_bfd_elf32_reloc_symbol_deleted_p): Add prototype. - (_bfd_elf64_reloc_symbol_deleted_p): Likewise. - * elf32-mips.c (_bfd_elf32_mips_discard_info): New. - (_bfd_elf32_mips_ignore_discarded_relocs): New. - (_bfd_elf32_mips_write_section): New. - (elf_backend_discard_info): Define. - (elf_backend_ignore_discarded_relocs): Define. - (elf_backend_write_section): Define. - * elfcode.h (elf_bfd_discard_info): Define. - (elf_reloc_symbol_deleted_p): Define. - * elflink.h (elf_link_input_bfd): Check - elf_section_ignore_discarded_relocs. Call - bed->elf_backend_write_section if available. - (elf_reloc_symbol_deleted_p): New. - (elf_bfd_discard_info): New. - (elf_section_ignore_discarded_relocs): New. - * elfxx-target.h (elf_backend_discard_info): Define. - (elf_backend_ignore_discarded_relocs): Define. - (elf_backend_write_section): Define. - (elfNN_bed): Add elf_backend_discard_info, - elf_backend_ignore_discarded_relocs, and - elf_backend_write_section. - * libbfd-in.h (_bfd_discard_section_stabs): Add prototype. - * libbfd.h: Regenerate. - * stabs.c (_bfd_discard_section_stabs): New. - -2001-11-14 Martin Schwidefsky - - * elf32-s390.c (elf_s390_relocate_section): Use the "unresolved_reloc" - scheme to get rid of an ugly complicated test. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - -2001-11-14 Andreas Jaeger - - * cpu-i386.c (bfd_x86_64_arch_intel_syntax,bfd_x86_64_arch): Use - x86-64 for display. - -2001-11-14 Jakub Jelinek - - * dwarf2.c (struct line_head) [total_length]: Change type to - bfd_vma. - (struct dwarf2_debug): Add dwarf_str_buffer and dwarf_str_size. - (struct comp_unit): Add stash and offset_size. - (read_8_bytes): Return bfd_vma. - (read_indirect_string): New. - (read_attribute): Handle DW_FORM_strp. - (decode_line_info): Support 64-bit DWARF format. - (_bfd_dwarf2_find_nearest_line): Likewise. - (parse_comp_unit): Set offset_size and stash. - -2001-11-13 Keith Walker - - * dwarf2.c (read_attribute_value): New function to handle - DW_FORM_indirect. - (read_attribute): Use it. - -2001-11-13 Geoffrey Keating - - * dwarf2.c (decode_line_info): Properly deal with unknown standard - opcodes. - -2001-11-13 John Marshall - Alan Modra - - * section.c (bfd_make_section_anyway): Don't increment section_id - and the BFD's section_count if adding the section failed. - * vms.c (vms_new_section_hook): Adjust for bfd_make_section_anyway - change. - -2001-11-12 Orjan Friberg - - * elf32-cris.c (cris_elf_grok_prstatus): Adjust values to match new - core dump format. - -2001-11-11 H.J. Lu - - * elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Call - _bfd_elf_strtab_size instead of _bfd_stringtab_size. - - * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Change - dynstr type to `struct elf_strtab_hash *'. - -2001-11-11 Hans-Peter Nilsson - - * elf-strtab.c (_bfd_elf_strtab_finalize): Make first variable i - size_t. Rename second i to j. - -Sat Nov 10 08:56:02 2001 Jeffrey A Law (law@cygnus.com) - - * binary.c: Include safe-ctype.h after bfd.h and sysdep.h. - -2001-11-10 Alan Modra - - * elf32-arm.h (elf32_arm_final_link_relocate): Don't copy STN_UNDEF - relocs into shared libs. - * elf32-cris.c (cris_elf_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mips.c (mips_elf_calculate_relocation): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-s390.c (elf_s390_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. - - * elf.c (bfd_section_from_r_symndx): New function. - * elf-bfd.h (LOCAL_SYM_CACHE_SIZE): Define. - (struct sym_sec_cache): New. - (bfd_section_from_r_symndx): Declare. - (struct bfd_elf_section_data): Change local_dynrel type to PTR. - * elflink.h (elf_link_input_bfd): Don't test for removed linkonce - relocs when relocatable. Don't zero entire reloc, just zero the - addend and sym. - * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add sym_sec. - (elf32_hppa_link_hash_table_create): Init it. - (elf32_hppa_check_relocs): Track dynamic relocs needed for local - syms on a per-section basis as we do for globals. - (elf32_hppa_gc_sweep_hook): Update for local_dynrel change. - (allocate_dynrelocs): Warning fix. - (elf32_hppa_size_dynamic_sections): Don't allocate relocs when - section has been discarded. - (elf32_hppa_relocate_section): Don't copy STN_UNDEF relocs - into shared libs. - * elf32-i386.c (struct elf_i386_link_hash_table): Add sym_sec. - (elf_i386_link_hash_table_create): Init it. - (elf_i386_check_relocs): Track dynamic relocs needed for local - syms on a per-section basis as we do for globals. - (elf_i386_gc_sweep_hook): Update for local_dynrel change. - Remove dead code. - (allocate_dynrelocs): Warning fix. - (elf_i386_size_dynamic_sections): Don't allocate relocs when - section has been discarded. - (elf_i386_relocate_section): Don't copy STN_UNDEF relocs - into shared libs. - * elf32-s390.c (struct elf_s390_link_hash_table): Add sym_sec. - (elf_s390_link_hash_table_create): Init it. - (elf_s390_check_relocs): Track dynamic relocs needed for local - syms on a per-section basis as we do for globals. - (elf_s390_gc_sweep_hook): Update for local_dynrel change. - Remove dead code. - (allocate_dynrelocs): Warning fix. - (elf_s390_size_dynamic_sections): Don't allocate relocs when - section has been discarded. - (elf_s390_relocate_section): Don't copy STN_UNDEF relocs - into shared libs. - * elf64-ppc.c (struct ppc_link_hash_table): Add sym_sec. - (ppc64_link_hash_table_create): Init it. - (ppc64_elf_check_relocs): Track dynamic relocs needed for local - syms on a per-section basis as we do for globals. - (ppc64_elf_gc_sweep_hook): Update for local_dynrel change. - (allocate_dynrelocs): Call the correct record_dynamic_dymbol - function. Warning fix. - (ppc64_elf_size_dynamic_sections): Don't allocate relocs when - section has been discarded. - (ppc64_elf_relocate_section): Don't copy STN_UNDEF relocs - into shared libs. - * elf64-s390.c (struct elf_s390_link_hash_table): Add sym_sec. - (elf_s390_link_hash_table_create): Init it. - (elf_s390_check_relocs): Track dynamic relocs needed for local - syms on a per-section basis as we do for globals. - (elf_s390_gc_sweep_hook): Update for local_dynrel change. - Remove dead code. - (allocate_dynrelocs): Warning fix. - (elf_s390_size_dynamic_sections): Don't allocate relocs when - section has been discarded. - (elf_s390_relocate_section): Don't copy STN_UNDEF relocs - into shared libs. - -2001-11-08 Martin Schwidefsky - - * elf32-s390: Major rework that introduces all recent changes to - the s390 backends. Get a closer match to elf32-i386. - (elf_s390_relocate_section): Make use of dynamic section short-cuts. - Localise vars, and delay setting. Better error reporting, replace - BFD_ASSERT with abort. Check ELF_LINK_HASH_DEF_DYNAMIC to see if a - symbol is not defined in the regular object file and tread the weak - definition as the normal one. Don't discard relocs for undefweak or - undefined symbols and check !DEF_REGULAR as well as DEF_DYNAMIC in - test for avoided copy relocs. Reinstate fudge for unresolved relocs - in debugging sections. - (elf32_s390_adjust_dynamic_symbol): Handle nocopyreloc. Don't do copy - reloc processing for weakdefs. Remove redundant casts and aborts. - Delay setting of vars until needed. Move creation of dynamic symbols - and allocation of .plt and .rela.plt to allocate_dynrelocs. Replace - BFD_ASSERT with abort. Discard .plt entries for everything with - plt.refcount <= 0. - (elf_s390_check_relocs): Don't allocate space for dynamic relocs, - .got or .relgot here but do it in allocate_dynrelocs. Reference count - possible .plt and .got entries. Don't test input section SEC_READONLY - here to try to avoid copy relocs, and keep dyn_relocs regardless of - ELF_LINK_NON_GOT_REF. Don't set DF_TEXTREL here. Delay setting of - variables until needed. Remove separate switch stmt for creating .got - section. Initialise local_got_refcounts to 0. Cache pointer to - "sreloc" section in elf_section_data. Tweak condition under which .got - created. Report files with bad relocation section names. - (elf_s390_finish_dynamic_symbol): Don't copy relocs for symbols that - have been forced local. Use same test to decide if we can use a - relative reloc for got as elf_s390_relocate_section. Expand SHN_UNDEF - comment. Move expressions out of function calls. Replace BFD_ASSERT - with abort. - (elf_s390_finish_dynamic_sections): Migrate common code out of switch - statement. Replace BFD_ASSERT with abort. - (elf_s390_size_dynamic_sections): Call readonly_dynrelocs. Rename "i" - to "ibfd". Allocate space for local dyn relocs. Use DF_TEXTREL flag - instead of looking up section names for DT_TEXTREL. Replace - BFD_ASSERT with abort. Zero out the dynamic allocated content space. - Add a comment to remind us that one day this ought to be fixed. - (struct elf_s390_link_hash_entry): Rename "root" to "elf". - (struct elf_s390_link_hash_table): Likewise. - (elf_s390_link_hash_newfunc): Rename to link_hash_newfunc and get - rid of unnecessary casts. - (struct elf_s390_dyn_relocs): Add "sec", and "pc_count" fields. - Remove "section" field. - (elf_s390_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. - Reference count possible .plt entries. Don't deallocate .got and - .relgot space here. - (struct elf_s390_pcrel_relocs_copied): Rename to elf_s390_dyn_relocs. - Update comment. - (struct elf_s390_link_hash_entry): Rename pcrel_relocs_copied to - dyn_relocs. - (elf_s390_discard_copies): Delete. - (elf_s390_link_hash_traverse): Delete. - (bfd_elf32_bfd_final_link): Delete. (ie. use regular final link - rather than gc variety). - (struct elf_s390_link_hash_table): Add sgot, sgotplt, srelgot, splt, - srelplt, sdynbss, srelbss fields. - (elf_s390_link_hash_table_create): Init them. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (allocate_dynrelocs): New function. - (create_got_section): New function. - (elf_backend_can_refcount): Define. - (elf_backend_copy_indirect_symbol): Define. - (elf_s390_copy_indirect_symbol): New function. - (elf_s390_create_dynamic_sections): New function. - (readonly_dynrelocs): New function. - * elf64-s390.c: Likewise. - -2001-11-07 Jakub Jelinek - - * Makefile.am (BFD32_BACKENDS): Add elf-strtab.lo. - (BFD32_BACKENDS_CFILES): Add elf-strtab.c. - (elf-strtab.lo): Add rule. - * Makefile.in: Rebuilt. - * configure.in (elf): Add elf-strtab.lo. - * configure: Rebuilt. - * elf-bfd.h (elf_strtab_hash): Forward declare. - (struct elf_link_hash_table): Change dynstr type to - struct elf_strtab_hash *. - (struct elf_obj_tdata): Change strtab_ptr type to - struct elf_strtab_hash *. - (_bfd_elf_strtab_init, _bfd_elf_strtab_free, _bfd_elf_strtab_add, - _bfd_elf_strtab_addref, _bfd_elf_strtab_delref, - _bfd_elf_strtab_clear_all_refs, _bfd_elf_strtab_size, - _bfd_elf_strtab_offset, _bfd_elf_strtab_emit, - _bfd_elf_strtab_finalize): New prototypes. - * elf-strtab.c: New file. - * elflink.h (elf_link_add_object_symbols): Use _bfd_elf_strtab_add - and _bfd_elf_strtab_size instead of _bfd_stringtab calls. - Call _bfd_elf_strtab_delref if DT_NEEDED entry is not needed or - when forcing dynamic symbol to local. - (elf_link_create_dynamic_sections): Call - _bfd_elf_strtab_init instead of elf_stringtab_init. - (elf_link_record_local_dynamic_symbol): Likewise, change - dynstr type. Use _bfd_elf_strtab functions instead of - _bfd_stringtab calls. - (size_dynamic_sections): Use _bfd_elf_strtab functions instead of - _bfd_stringtab calls. For DT_RUNPATH and Verdaux vda_name fields, - call _bfd_elf_strtab_addref. Call elf_finalize_dynstr. - (elf_adjust_dynstr_offsets, elf_finalize_dynstr): New functions. - (elf_fix_symbol_flags): Call _bfd_elf_strtab_delref when forcing - dynamic symbol to local. - (elf_link_assign_sym_version): Likewise. - (elf_bfd_final_link): Call _bfd_elf_strtab_emit instead of - _bfd_stringtab_emit. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Change dynstr - type. Call _bfd_elf_strtab functions instead of - _bfd_stringtab functions. - * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise. - * elf.c (_bfd_elf_init_reloc_shdr): Likewise. - (elf_fake_sections): Likewise. - (assign_section_numbers): Call _bfd_elf_strtab_clear_all_refs - on shstrtab hash table, call _bfd_elf_strtab_addref on each section - name in the output. Call _bfd_elf_strtab_finalize and - use _bfd_elf_strtab_offset to finalize sh_name section header fields. - (_bfd_elf_compute_section_file_positions): Use _bfd_elf_strtab_size - instead of _bfd_stringtab_size. - (prep_headers): Change shstrtab type. - Use _bfd_elf_strtab calls instead of _bfd_stringtab calls. - -2001-11-07 Alan Modra - - * elflink.h (elf_link_input_bfd ): Fix - bad symtab segfault. Formatting and warning fixes. Improve - error message for internationalisation. - -2001-11-06 H.J. Lu (hjl@gnu.org) - - * elflink.h (elf_link_input_bfd): Complain about relocs against - discarded sections. - -2001-11-03 Alan Modra - - * elfxx-target.h (elfNN_bed): Correct want_got_sym, want_dynbss order. - -2001-11-02 H.J. Lu - - * elf32-mips.c (mips_elf_calculate_relocation): Don't create - dynamic relocation for symbols defined in regular objects when - creating executables. - -2001-11-02 Nick Clifton - - * configure.in (ALL_LINGUAS): Add "fr". - * configure: Regenerate. - * po/fr.po: New file. - - * coffgen.c (coff_object_p): Add comment to H.J.'s recent patch. - -2001-11-02 John David Anglin - - * som.c (setup_sections): Initialize subspace_sections. - -2001-11-02 H.J. Lu (hjl@gnu.org) - - * coffgen.c (coff_object_p): Return 0 if the header is too big. - -2001-11-02 Hans-Peter Nilsson - - * elfcore.h (elf_core_file_p): Preserve and clear abfd section - information. Save bfd arch and mach values. Restore on error. - -2001-11-02 Alan Modra - - * elf32-hppa.c (hppa_handle_PIC_calls): Rename to mark_PIC_calls. - (allocate_PIC_calls): New function. - (allocate_dynrelocs): Don't allocate pic_call plt entries here. - (elf32_hppa_size_dynamic_sections): Call allocate_PIC_calls. - (elf32_hppa_finish_dynamic_symbol): Remove dead code. - -2001-11-02 Hans-Peter Nilsson - - * elf32-cris.c (cris_elf_grok_prstatus): New function. - (cris_elf_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Define. - -2001-11-01 Alan Modra - - * elf64-ppc.c (ppc64_elf_relocate_section): Correct branch - prediction bits. - -2001-10-31 Chris Demetriou - - * elf32-mips.c (_bfd_mips_elf_hi16_reloc): Handle PC-relative - relocations properly. - -2001-10-31 H.J. Lu - - * elflink.h (elf_link_output_extsym): Don't clear the visibility - field for relocateable. - -2001-11-01 Alan Modra - - * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Don't count - .plt relocs in DT_RELASZ. - -2001-10-29 NIIBE Yutaka - - * config.bfd: Supports sh3/sh4/sh3eb/sh4eb-unknown-linux-gnu - targets. - -2001-10-31 Nick Clifton - - * targets.c: Fix typo: bfd_mmo_mmix_vec => bfd_mmo_vec. - -2001-10-30 Hans-Peter Nilsson - - * Makefile.am (ALL_MACHINES): Add cpu-mmix.lo. - (BFD64_BACKENDS): Add elf64-mmix.lo and mmo.lo. - (BFD64_BACKENDS_CFILES): Add elf64-mmix.c and mmo.c. - Regenerate dependencies. - * configure.in (bfd_elf64_mmix_vec, bfd_mmo_vec): New vectors. - * config.bfd: [BFD64] (mmix-*-*): New case. - * cpu-mmix.c, mmo.c, elf64-mmix.c: New files. - * archures.c (enum bfd_architecture): Add bfd_arch_mmix. - (bfd_mmix_arch): Declare. - (bfd_archures_list): Add bfd_mmix_arch. - * targets.c (enum bfd_flavour): Add bfd_target_mmo_flavour. - (bfd_elf64_mmix_vec, bfd_mmo_vec): Declare. - (bfd_target_vect) [BFD64]: Add bfd_elf64_mmix_vec and - bfd_mmo_mmix_vec. - * reloc.c: Add MMIX relocations. - * bfd.c (struct _bfd, tdata): Add mmo_data. - * Makefile.in: Regenerate. - * configure: Regenerate. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * configure: Rebuild. - -2001-10-30 Richard Earnshaw (rearnsha@arm.com) - - * elf.c (_bfd_elf_make_section_from_shdr): Set the LMA based on the - p_paddr of the segment that contains it. - (copy_private_bfd_data): If the LMA for a segment is known, use it - for matching sections to segments. - (assign_file_positions_for_segments): Use the LMA when adjusting - for inter-section alignment padding. - -2001-10-29 Kazu Hirata - - * README: Fix a typo. - -2001-10-24 Richard Henderson - - * peXXigen.c (_bfd_XX_print_private_bfd_data_common): Copy - timestamp to time_t for ctime. - -2001-10-24 Hans-Peter Nilsson - - * elf32-cris.c (cris_reloc_type_lookup): Change loop to use - unsigned, increasing index. - -2001-10-23 H.J. Lu - - * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Check - m != NULL before accessing it. - -2001-10-23 Alan Modra - - * elflink.h (elf_link_input_bfd): Zero the reloc instead of doing - bfd_reloc_type_lookup (bfd, BFD_RELOC_NONE) as bfd_reloc_type_lookup - doesn't accept BFD_RELOC_* on some targets, eg. hppa. - - * elf32-hppa.c (elf32_hppa_link_hash_entry): Remove plt_abs. - (hppa_link_hash_newfunc): Likewise. - (elf32_hppa_finish_dynamic_symbol): Likewise. - (allocate_dynrelocs): Always allocate .got relocs if shared. - (elf32_hppa_relocate_section): Output them too. Similarly - consolidate .plt reloc code, and no longer initialise .plt - when a reloc is output. - (elf32_hppa_finish_dynamic_symbol): Only initialise .plt entries - when no reloc is output. - - From Herbert Xu - * elf32-hppa.c (final_link_relocate): Call bfd_set_error for - unreachable branches. - -2001-10-22 H.J. Lu - - * configure.in (WIN32LIBADD): Use -L../libiberty for - mips*-*-linux*. - * configure: Rebuild. - -2001-10-21 H.J. Lu - - * configure.in (WIN32LIBADD): Include -L../libiberty/pic -liberty - if shared library is enabled only for Linux hosts. - * configure: Rebuild. - -2001-10-21 H.J. Lu - - * configure.in (WIN32LIBADD): Check if PICFLAG is defined in - ../libiberty/Makefile instead of $enable_shared. - * configure: Rebuild. - -2001-10-21 H.J. Lu - - * elf32-cris.c (cris_reloc_type_lookup): Use int for index. Cover - index 0. - -2001-10-20 H.J. Lu - - * configure.in (WIN32LIBADD): Include -L../libiberty/pic -liberty - if shared library is enabled. - * configure: Rebuild. - -2001-10-20 H.J. Lu - - * elf32-cris.c (cris_reloc_type_lookup): Allow index 0. - -2001-10-19 H.J. Lu - - * elfcode.h (elf_object_p): Don't clear D_PAGED if the section - size is empty. - -2001-10-18 H.J. Lu - - * elf32-i370.c (i370_elf_relocate_section): Ignore R_XXX_NONE. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - -2001-10-18 Jakub Jelinek - - * section.c (_bfd_strip_section_from_output): Don't count - SEC_EXCLUDE sections as references. Set SEC_EXCLUDE. - -2001-10-17 Alan Modra - - * elf-m10200.c (mn10200_elf_relax_section): Cast assignment to - Elf_Internal_Shdr.contents now that it's no longer a PTR. - * elf-m10300.c (mn10300_elf_relax_section): Likewise. - * elf32-h8300.c (elf32_h8_relax_section): Likewise. - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. - * elf32-sh.c (sh_elf_relax_section): Likewise. - * elf64-alpha.c (elf64_alpha_relax_section): Likewise. - * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. - * elf.c (setup_group): Warning fixes. - * elflink.h (elf_link_sort_relocs): Likewise. - * pdp11.c (slurp_reloc_table): Likewise. - -2001-10-16 Jeff Holcomb - - * elflink.h (elf_link_sort_relocs): Remove unnecessary pointer - casts. - -2001-10-15 H.J. Lu - - * elflink.h (elf_link_input_bfd): Set type to BFD_RELOC_NONE - for relocations against discarded link-once section. - -2001-10-15 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Report some detail on - bfd_reloc_outofrange and similar errors. - - * elf.c (_bfd_elf_link_hash_copy_indirect): Test ind->root.type - rather than ind->weakdef. - * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. - -2001-10-15 Alan Modra - H.J. Lu - - * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Merge dyn_reloc - counts for aliases instead of aborting. - * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. - - * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Set plt.offset - to -1 for non-function symbols. - * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise. - * elf32-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. - * elf64-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. - * elf64-x86-64.c (elf64_x86_64_adjust_dynamic_symbol): Likewise. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Refer to - plt.offset instead of plt.refcount when setting to -1. - -2001-10-12 Nick Clifton - - * elf32-arm.h (elf32_arm_relocate_section): Treat R_ARM_THM_PC22 - like R_ARM_PC24. Include reloc number in error message about - unresolvable relocs. - -2001-10-10 Jakub Jelinek - - * elflink.h (elf_link_sort_cmp2): Don't mix PLT and non-PLT - relocations against the same symbol in .rel{,a}.dyn section. - -2001-10-10 Kazu Hirata - - * aout-encap.c: Fix comment typos. - * aoutx.h: Likewise. - * archive.c: Likewise. - * bout.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - * coff-mips.c: Likewise. - * ecoff.c: Likewise. - * elf32-m32r.c: Likewise. - * libcoff-in.h: Likewise. - * libecoff.h: Likewise. - * libxcoff.h: Likewise. - * nlm32-i386.c: Likewise. - * pdp11.c: Likewise. - * section.c: Likewise. - * som.c: Likewise. - * som.h: Likewise. - * bfd-in2.h: Regenerate. - * libcoff.h: Likewise. - -2001-10-10 Alan Modra - - * elf.c (elf_map_symbols): Don't create new section symbols; Use - existing section syms. Update comments. - (copy_private_bfd_data): Formatting fixes. - (elfcore_grok_win32pstatus): Likewise. - (swap_out_syms): Likewise. Remove unnecessary level of braces. - -2001-10-09 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data): Rename "group" to - "group_name". - (elf_group_name): Define. - (elf_next_in_group): Define. - * elf.c: Make use of elf_group_name and elf_next_in_group throughout. - (setup_group): Don't use sec->lineno for SHT_GROUP section to store - first member section; Instead use elf_next_in_group. - (bfd_section_from_shdr): Likewise. - (set_group_contents): Likewise. Use elf_section_syms, not sec->symbol. - -2001-10-09 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data): Add "group" and - "next_in_group". Fix gp and gp_size comments. - * elf.c (union elf_internal_group): New. - (setup_group): New function. - (_bfd_elf_make_section_from_shdr): Set BFD flags for SHT_GROUP. - Call setup_group for SHF_GROUP sections. - (bfd_section_from_shdr): Build a BFD section for SHT_GROUP. - (elf_fake_sections): Set header type for SEC_GROUP, and header - flags for sections in a group. - (set_group_contents): New function. - (_bfd_elf_compute_section_file_positions): Call it. - (assign_section_numbers): Set sh_link for SHT_GROUP. - - * elflink.h (gc_mark_hook): Handle section groups. - * elfxx-target.h: Add SEC_GROUP to applicable_flags. - * section.c (SEC_GROUP): Define. - (struct sec): Comment fixes. - * bfd-in2.h: Regenerate. - - * elf.c (bfd_elf_print_symbol): Formatting fix; migrate expression - out of function args. - (_bfd_elf_canonicalize_reloc): Similarly. - (_bfd_elf_get_symtab): Here too. - (_bfd_elf_canonicalize_dynamic_symtab): And here. - * elfcode.h (elf_slurp_symbol_table): Don't recalculate size for - bfd_bread, and remove unnecessary cast. - -2001-10-08 Aldy Hernandez - - * bfd/config.bfd (targ_cpu): Add arm9e-*-elf. - -2001-10-06 Stephane Carrez - - * dwarf2.c (comp_unit_find_nearest_line): Check for end of - compilation unit. - -2001-10-06 Alan Modra - - * bfd.c (bfd_assert): Report bfd version. - (_bfd_abort): Likewise. - - * elflink.h (elf_link_input_bfd): Don't zero discarded link-once - section sym values. Instead replace any relocs against them with - relocs against STN_UNDEF, which has a zero value. - - * elf32-arc.c (elf_arc_howto_table): Set partial_inplace for all - relocs. - -2001-10-05 Jeff Law - - * som.h (som_exec_data): New field "version_id". - * som.c (som_object_setup): Record the version_id if it - exists. - (som_prep_headers): Do not initialize version_id here. - (som_finish_writing): Initialize version_id here. - -2000-10-05 Thiemo Seufer - - * elf32-mips.c (elf_mips_howto_table): Fix some relocation howtos - according to the MIPS/SGI ELF64 ABI Draft. - (mips_elf_sort_hash_table): Typo. - -2001-10-04 Alan Modra - - * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Comment typo. - - * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after - copying flags if this is a weakdef. - -2001-10-04 Alan Modra - - * elf-bfd.h (struct elf_link_hash_entry): Reorganise for better - packing. - - * elf32-mips.c (mips_elf_record_global_got_symbol): Set got.offset - to 1 rather than 0 to avoid confusing copy_indirect_symbol. - (mips_elf_sort_hash_table_f): Compare got.offset against 1. - - * Makefile.am (BFD_H_DEPS): Add symcat.h. Ensure everything - depends on $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS), not just those - backends we configure. Run "make dep-am". - (install-data-local): Install symcat.h. - * dep-in.sed: Remove symcat.h from dependencies. - * Makefile.in: Regenerate. - -2001-10-03 Vassili Karpov - - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Handle nocopyreloc. - -2001-10-03 Thiemo Seufer - - * elf64-mips.c (elf_backend_may_use_rela_p): New define. - (elf_backend_default_use_rela_p): New define. - -2001-10-03 Alan Modra - - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Fix typos in last - change. - - * configure.in (AC_OUTPUT ): Remove version.h. - * configure: Regenerate. - * Makefile.am (BFD_H_FILES): Add version.h. - * Makefile.in: Regenerate. - * po/SRC-POTFILES.in: Regenerate. - - * elflink.h (elf_fix_symbol_flags): Copy flags to weakdef using - elf_backend_copy_indirect_symbol so that backend has a chance to - copy other necessary fields. - * elf-bfd.h (struct elf_backend_data): Update description of - elf_backend_copy_indirect_symbol. - * elf.c (_bfd_elf_link_hash_copy_indirect): Bail out after - copying flags if this is a weakdef. - * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. - (elfNN_ia64_aix_add_symbol_hook): Use elf_link_hash_lookup rather - than bfd_link_hash_lookup. - * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Don't do copy - reloc processing for weakdefs. - * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise. - * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. - -2001-10-02 Alan Modra - - * elf64-ppc.c (ppc64_elf_check_relocs): Use a local var and cast - result of ELF64_R_TYPE to enum before using in a switch. - (ppc64_elf_gc_mark_hook): Likewise. - (ppc64_elf_gc_sweep_hook): Likewise. - (ppc64_elf_reloc_type_class): Likewise. - -2001-10-02 Alan Modra - - * version.h: New file. - * bfd-in.h: (BFD_VERSION): Substitute bfd_version. - (BFD_VERSION_DATE): Define. - (BFD_VERSION_STRING): Define. - * configure.in: AC_SUBST bfd_version, bfd_version_date and - bfd_version_string. - (AC_OUTPUT ): Depend on version.h. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * bfd-in.h: Include "symcat.h". - (CONCAT4): Redefine as for old CAT4. - * aout-arm.c: Use equivalent CONCAT* macro in place of CAT* macros. - Add warning regarding whitespace. - * aout-cris.c: Likewise. - * aout-ns32k.c: Likewise. - * aout-sparcle.c: Likewise. - * aout-tic30.c: Likewise. - * aout0.c: Likewise. - * armnetbsd.c: Likewise. - * demo64.c: Likewise. - * elf-bfd.h: Likewise. - * gen-aout.c: Likewise. - * host-aout.c: Likewise. - * hp300bsd.c: Likewise. - * hp300hpux.c: Likewise. - * i386aout.c: Likewise. - * i386bsd.c: Likewise. - * i386dynix.c: Likewise. - * i386freebsd.c: Likewise. - * i386linux.c: Likewise. - * i386lynx.c: Likewise. - * i386mach3.c: Likewise. - * i386netbsd.c: Likewise. - * libaout.h: Likewise. - * m68k4knetbsd.c: Likewise. - * m68klinux.c: Likewise. - * m68klynx.c: Likewise. - * m68knetbsd.c: Likewise. - * m88kmach3.c: Likewise. - * mipsbsd.c: Likewise. - * newsos3.c: Likewise. - * ns32knetbsd.c: Likewise. - * pc532-mach.c: Likewise. - * pdp11.c: Likewise. - * riscix.c: Likewise. - * sparclinux.c: Likewise. - * sparclynx.c: Likewise. - * sparcnetbsd.c: Likewise. - * sunos.c: Likewise. - * targets.c: Likewise. - * vaxnetbsd.c: Likewise. - * vms-hdr.c: Likewise. - -2001-10-01 Alan Modra - - * bfd-in.h: Remove comments regarding generated files. - * libbfd-in.h: Likewise. - * libcoff-in.h: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Likewise. - * libcoff.h: Likewise. - -2001-09-30 kaz Kojima - Hans-Peter Nilsson - - * elf32-sh.c (sh_elf_howto_table, R_SH_REL32): Make - partial_inplace, matching assembler output. Set src_mask to - all ones. - (sh_elf_relocate_section): Delete misplaced comment. - For relocatable linking against section symbol, call - _bfd_relocate_contents for partial_inplace relocs and adjust - rel->r_addend for others. - : Fetch partial_inplace addend with - bfd_get_32, not at rel->r_addend. - -2001-09-30 Alan Modra - - * elf.c (_bfd_elf_link_hash_copy_indirect): Set ind refcounts to - the old dir refcount, so we indirectly set them to init_refcount. - Short-circuit asserts when we've just verified they are true. - -2001-09-29 Alan Modra - - * section.c (struct sec): Remove kept_section. - (STD_SECTION): Remove kept_section initialisation. - (bfd_make_section_anyway): Here too. - * ecoff.c (bfd_debug_section): Remove kept_section initialisation. - * cofflink.c (_bfd_coff_link_input_bfd): Don't test kept_section. - * elflink.h (elf_link_input_bfd): Set discarded link-once section - symbols to zero, and remove all code involved with kept_section - and tracking section symbol values. - * bfd-in2.h: Regenerate. - * configure.in: Bump version number. - * configure: Regenerate. - -2001-09-29 Alan Modra - - * elf64-ppc.c (struct ppc_dyn_relocs): New. - (IS_ABSOLUTE_RELOC): Define. - (struct ppc_link_hash_entry): New. - (struct ppc_link_hash_table): New. - (ppc_hash_table): Define. - (link_hash_newfunc): New function. - (ppc64_elf_link_hash_table_create): New function. - (create_got_section): New function. - (ppc64_elf_create_dynamic_sections): Call create_got_section. Stash - pointers to our dynamic sections in hash table. - (ppc64_elf_copy_indirect_symbol): New function. - (ppc64_elf_check_relocs): Remove DEBUG code. Use short-cuts to - dynamic sections. Localise vars. Modify code for refcounts - starting from zero. Don't allocate here, or force symbols dynamic. - Don't copy all relocs if shared, select ones we need. Add code - to track possible copy relocs for non-shared link. - (ppc64_elf_gc_mark_hook): Update comment. - (ppc64_elf_gc_sweep_hook): Sweep dynrelocs too. - (ppc64_elf_adjust_dynamic_symbol): Remove DEBUG code. Rewrite .plt - code for reference counting garbage collection. Don't create .plt - entries for functions that don't comply with ABI naming convention, - and don't allocate .plt space here. Use short-cuts to dynamic - sections. If possible, keep dynamic relocations instead of using - copy relocs. Remove confused comments. - (ppc_adjust_dynindx): Delete. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (allocate_dynrelocs): New function. - (readonly_dynrelocs): New function. - (ppc64_elf_size_dynamic_sections): Rewrite. Allocate local .got - space here, and call allocate_dynrelocs to allocate space for - global .plt, .got and reloc sections. Use short-cuts to dynamic - sections. Call readonly_dynrelocs to determine whether we need - DT_TEXTREL. Don't generate section symbols here, the generic - ELF linker code does it for us. - (ppc64_elf_final_link): Call regular ELF backend linker rather than - gc variety, since we do our own .got handling. - (ppc64_elf_relocate_section): Remove DEBUG code. Make use of - dynamic section short-cuts. Localise vars, and delay setting. - Handle unknown relocs in main switch statement. Replace ugly - complicated tests for unresolvable relocs with a simple direct - scheme using "unresolved_reloc" var. Test ELF_ST_VISIBILITY - before allowing an undefined sym in a shared lib. Do R_*_DS tests - after main switch, when we've set addend. Do non-addend insn - tweaks before main swithc. Ignore input_section->vma when - calculating reloc offsets as it's always zero. Rewrite dynamic - reloc handling. Consolidate R_*_HA handling. Handle more relocs. - (ppc64_elf_finish_dynamic_symbol): Remove DEBUG code. Make use - of dynamic section short-cuts. Reorganise .plt handling code. - Remove confused comments. Take note of ELF_LINK_FORCED_LOCAL. - Move expressions out of swap_reloca_out function calls. - (ppc64_elf_reloc_type_class): New function. - (ppc64_elf_info_to_howto): Move common expression to local var. - (ppc64_elf_finish_dynamic_sections): Remove DEBUG code. Make use - of dynamic section short-cuts. Don't fiddle with section syms - here as the ELF linker does it for us. - (elf_backend_can_refcount): Define. - (bfd_elf64_bfd_link_hash_table_create): Define. - (elf_backend_copy_indirect_symbol): Define. - (elf_backend_reloc_type_class): Define. - (elf_backend_*, bfd_elf64_bfd_* defines): Sort. - -2001-09-29 Alan Modra - - * elf-bfd.h (struct elf_link_local_dynamic_entry): Add init_refcount. - (struct elf_backend_data): Add can_refcount. - * elf.c (_bfd_elf_link_hash_newfunc): Get rid of a few casts. Set - got.refcount and plt.refcount from init_refcount. - (_bfd_elf_link_hash_table_init): Set up init_refcount. - (_bfd_elf_link_hash_copy_indirect): Reference got/plt.refcount - rather than got/plt.offset, and test for <= 0 rather than -1. - * elflink.h (size_dynamic_sections): Set init_refcount to -1. - * elfxx-target.h (elf_backend_can_refcount): Define. - (elfNN_bed): Init can_refcount. - * linker.c (_bfd_link_hash_newfunc): Get rid of a few casts. - (_bfd_generic_link_hash_newfunc): Likewise. - * elf32-cris.c (cris_elf_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - * elf32-hppa.c (elf32_hppa_check_relocs): Modify for refcounts - starting from zero. - (elf32_hppa_copy_indirect_symbol): Make static to agree with - prototype. - (elf_backend_can_refcount): Define. - * elf32-i386.c (elf_i386_check_relocs): Modify for refcounts - starting from zero. - (allocate_dynrelocs): Set plt/got.offset rather than *.refcount. - (elf_i386_finish_dynamic_symbol): Expand SHN_UNDEF comment. - (elf_i386_finish_dynamic_sections): Use local var so line < 80 chars. - (elf_backend_can_refcount): Define. - (elf_i386_copy_indirect_symbol): Make static to agree with - prototype. Formatting fix. - * elf32-m68k.c (elf_m68k_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - * elf32-ppc.c (ppc_elf_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - * elf32-s390.c (elf_s390_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - * elf64-s390.c (elf_s390_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - * elf64-x86-64.c (elf64_x86_64_check_relocs): Modify for refcounts - starting from zero. - (elf_backend_can_refcount): Define. - - * som.c (som_write_symbol_strings): Cast current_offset in - bfd_seek call to match param type. - -2001-09-28 J. Brobecker - - * som.c (som_write_symbol_strings): Fix incorrect type of - current_offset to match the function definition. Fixes a build - failure on HPUX-11.00. - -2001-09-28 Richard Henderson - - * elfxx-target.h [section_flags]: Add SEC_ARCH_BIT_0, SEC_SMALL_DATA, - SEC_MERGE, SEC_STRINGS. - - * section.c (SEC_ARCH_BIT_0): New; replace unused SEC_BALIGN. - * bfd-in2.h: Rebuild. - -2001-09-28 Alan Modra - - * elf64-x86-64.c (elf64_x86_64_reloc_type_lookup): Don't map bfd - reloc code using x86_64_reloc_map. - - * elf32-hppa.c (elf32_hppa_check_relocs): Update comment since we - no longer allocate here. Localise some vars to blocks where they - are used. - (elf32_hppa_adjust_dynamic_symbol): Correct a comment. Delay - setting of vars until needed. - (allocate_dynrelocs): Don't create a .plt entry without a reloc - when symbol visibilty makes a function local. - (elf32_hppa_finish_dynamic_symbol): Move expressions out of - swap_reloca_out function calls. - (elf32_hppa_relocate_section): Likewies. Comment typo fix. - (elf32_hppa_finish_dynamic_sections): Migrate common code out of - switch statement. - - * elf32-i386.c (elf_i386_check_relocs): Update comment since we - no longer allocate here. Localise some vars to blocks where they - are used. Remove separate switch stmt for creating .got sec. - (elf_i386_adjust_dynamic_symbol): Correct a comment. Remove - redundant casts and aborts. Delay setting of vars until needed. - (allocate_dynrelocs): Remove redundant casts and aborts. - (elf_i386_size_dynamic_sections): Move comment. - (elf_i386_finish_dynamic_symbol): Move expressions out of function - calls. - (elf_i386_relocate_section): Likewise. Comment typo fix. - (elf_i386_finish_dynamic_sections): Migrate common code out of - switch statement. - (elf_backend_* defines): Sort. - - * elf32-i386.c (allocate_dynrelocs): Don't create a .plt entry - without a reloc when symbol visibilty makes a function local. - -2001-09-27 Nick Clifton - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix detection of - conflicting float flags. - -2001-09-26 Alan Modra - - * elf32-i386 (elf_i386_copy_indirect_symbol): New function. - (elf_backend_copy_indirect_symbol): Define. - (struct elf_i386_link_hash_entry): Rename "root" to "elf". - (struct elf_i386_link_hash_table): Likewise. - (link_hash_newfunc): Get rid of unnecessary casts. - (elf_i386_link_hash_table_create): Likewise. - (elf_i386_check_relocs): Initialise local_got_refcounts to 0. - Don't test input section SEC_READONLY here to try to avoid copy - relocs, and keep dyn_relocs regardleas of ELF_LINK_NON_GOT_REF. - (elf_i386_adjust_dynamic_symbol): Check output section SEC_READONLY - here to properly test whether we need copy relocs. Do so for weak - syms too. - - * elf32-hppa (elf32_hppa_copy_indirect_symbol): New function. - (elf_backend_copy_indirect_symbol): Define. - (struct elf32_hppa_link_hash_table): Rename "root" to "elf". - (stub_hash_newfunc): Get rid of unnecessary casts. - (hppa_link_hash_newfunc): Likewise. - (elf32_hppa_check_relocs): Initialise local_got_refcounts to 0. - Don't test input section SEC_READONLY here to try to avoid copy - relocs, and keep dyn_relocs regardleas of ELF_LINK_NON_GOT_REF. - (elf32_hppa_adjust_dynamic_symbol): Check output section SEC_READONLY - here to properly test whether we need copy relocs. Do so for weak - syms too. - -2001-09-26 Alan Modra - - * bfd.c (_bfd_default_error_handlerl): Define using VPARAMS, - VA_OPEN, VA_FIXEDARG, VA_CLOSE. - (bfd_archive_filename): Cast bfd_malloc arg to the correct size. - -2001-09-25 Jakub Jelinek - - * elf64-sparc.c (sparc64_elf_build_plt): Fix .plt[32768+] slot - computation. - -2001-09-25 H.J. Lu - - * bfd-in2.h: Regenerated. - -2001-09-25 Alan Modra - - * elf32-i386.c: Add comment re linker function names and ordering. - (elf_i386_link_hash_newfunc): Rename to link_hash_newfunc. - (elf_i386_grok_prstatus): Move before linker functions. - (elf_i386_grok_psinfo): Likewise. - (elf_i386_fake_sections): Move so that functions are ordered. - (elf_i386_reloc_type_class): Likewise. Comment function purpose. - -2001-09-25 Alan Modra - - * elf32-hppa.c: Rename occurrences of "hplink" to "htab" - throughout file. - - * elf32-hppa.c: (LONG_BRANCH_PIC_IN_SHLIB): Delete. Remove all - code handling this option. - (LONG_BRANCH_VIA_PLT): Likewise. - (RELATIVE_DYNRELOCS): Define as zero. - (struct elf32_hppa_dyn_reloc_entry): Add "sec", and - "pc_count" fields. Remove "section" field. - (elf32_hppa_link_hash_entry): Rename reloc_entries to dyn_relocs. - (elf32_hppa_check_relocs): Don't allocate space for dynamic - relocs here. Instead, record all needed dynamic relocs via - dyn_relocs and local_dynrel. Cache pointer to "sreloc" section - in elf_section_data. - (elf32_hppa_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. - (allocate_plt_and_got_and_discard_relocs): Rename to - allocate_dynrelocs. Allocate rather than discarding dyn relocs. - (readonly_dynrelocs): New function. - (elf32_hppa_size_dynamic_sections): Mark output_bfd unused. - Call readonly_dynrelocs to determine need for DT_TEXTREL. - Rename "i" to "ibfd". Allocate space for local dyn relocs. - (elf32_hppa_relocate_section): Make use of cached sreloc. - (elf32_hppa_reloc_type_class): New function. - (elf_backend_reloc_type_class): Define. - -2001-09-25 Alan Modra - - * elf-bfd.h (struct bfd_elf_section_data): Add "local_dynrel" - and "sreloc" fields. - * elf32-i386.c (struct elf_i386_dyn_relocs): Add "sec", and - "pc_count" fields. Remove "section" field. - (elf_i386_check_relocs): Don't set DF_TEXTREL here. Don't - allocate space for dynamic relocs here. Instead, record all - needed dynamic relocs via dyn_relocs and local_dynrel. Cache - pointer to "sreloc" section in elf_section_data. - (elf_i386_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. - (allocate_plt_and_got_and_discard_relocs): Rename to - allocate_dynrelocs. Allocate rather than discarding dyn relocs. - (readonly_dynrelocs): New function. - (elf_i386_size_dynamic_sections): Call readonly_dynrelocs. - Rename "i" to "ibfd". Allocate space for local dyn relocs. - (elf_i386_relocate_section): Make use of cached sreloc. - -2001-09-24 Alan Modra - - * elf-bfd.h (elf_backend_reloc_type_class): Pass in the entire - reloc rather than just the type. - (_bfd_elf_reloc_type_class): Likewise. - * elf.c (_bfd_elf_reloc_type_class): Likewise. - * elf32-arm.h (elf32_arm_reloc_type_class): Likewise. - * elf32-cris.c (elf_cris_reloc_type_class): Likewise. - * elf32-i386.c (elf_i386_reloc_type_class): Likewise. - * elf32-m68k.c (elf32_m68k_reloc_type_class): Likewise. - * elf32-ppc.c (ppc_elf_reloc_type_class): Likewise. - * elf32-s390.c (elf_s390_reloc_type_class): Likewise. - * elf32-sh.c (sh_elf_reloc_type_class): Likewise. - * elf32-sparc.c (elf32_sparc_reloc_type_class): Likewise. - * elf64-alpha.c (elf64_alpha_reloc_type_class): Likewise. - * elf64-s390.c (elf_s390_reloc_type_class): Likewise. - * elf64-sparc.c (sparc64_elf_reloc_type_class): Likewise. - * elf64-x86-64.c (elf64_x86_64_reloc_type_class): Likewise. - * elfxx-ia64.c (elfNN_ia64_reloc_type_class): Likewise. - * elflink.h: Formatting fixes. - (elf_link_sort_relocs): Make "count" and "size" bfd_size_type. - Call bfd_zmalloc rather than calloc. Remove unnecessary cast of - o->contents to PTR. Update call to elf_backend_reloc_type_class. - -2001-09-22 John Reiser - - * elfcode.h (elf_object_p): Allow for no section header at all in - non-ET_REL files. Honor 0 for e_shnum, e_shstrndx, e_shoff. - -2001-09-21 Nick Clifton - - * elfxx-ia64.c: Fix compile time warning messages. - * coff-mcore.c: Fix compile time warning messages. - * coff-ppc.c: Fix compile time warning messages. - * coffcode.h: Fix compile time warning messages. - * elf32-mips.c: Fix compile time warning messages. - * elf64-alpha.c: Fix compile time warning messages. - * libbfd.c: Fix compile time warning messages. - * bfd-in2.h: Regenerate. - -2001-09-21 Alan Modra - - * Makefile.am: Run "make dep-am". - * Makefile.in: Regenerate. - - * aoutx.h: Formatting fixes. - * merge.c (_bfd_merged_section_offset): Break line at 80 chars. - - * linker.c: Replace bfd_get_filename with bfd_archive_filename - in error message. - -2001-09-21 Alan Modra - - * bfd.c (bfd_archive_filename): New function. - * bfd-in2.h: Regenerate. - * aout-adobe.c: Replace bfd_get_filename with bfd_archive_filename - in error messages where the bfd is an input bfd. - * aout-cris.c: Likewise. - * coff-arm.c: Likewise. - * coff-mcore.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-tic54x.c: Likewise. - * coff-tic80.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - * ecofflink.c: Likewise. - * elf-hppa.h: Likewise. - * elf.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-cris.c: Likewise. - * elf32-gen.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-gen.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elflink.h: Likewise. - * elfxx-ia64.c: Likewise. - * ieee.c: Likewise. - * ihex.c: Likewise. - * libbfd.c: Likewise. - * pdp11.c: Likewise. - * pe-mips.c: Likewise. - * peicode.h: Likewise. - * srec.c: Likewise. - * xcofflink.c: Likewise. - - * elf32-arm.h: Make _bfd_error_handler calls K&R compatible. - - * elflink.c (_bfd_elf_create_linker_section): Better grammar for - error message. - - * coff-mcore.c (coff_mcore_relocate_section): Internalionalise - error message. - - * elf64-sparc.c (sparc64_elf_add_symbol_hook): Constify stt_types. - Consolidate error messages, and split long messages to two lines. - -2001-09-20 John Reiser - - * elf32-i386.c (elf_i386_relocate_section): Coordinate info->symbolic - and info->allow_shlib_undefined. - * elf32-cris.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sparc.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfxx-ia64.c: Likewise. - -2001-09-18 Bruno Haible - - * aoutx.h: Include "safe-ctype.h" instead of . - (aout_link_write_symbols): Use ISDIGIT instead of isdigit. - * archive.c: Include "safe-ctype.h" instead of . - (_bfd_generic_read_ar_hdr_mag): Use ISDIGIT instead of isdigit. - * archures.c: Include "safe-ctype.h" instead of . - (bfd_default_scan): Use ISDIGIT instead of isdigit. - * bfd.c: Include "safe-ctype.h" instead of . - (bfd_scan_vma): Use ISXDIGIT/ISDIGIT/ISLOWER instead of - isxdigit/isdigit/islower. - * binary.c: Include "safe-ctype.h" instead of . - (mangle_name): Use ISALNUM instead of isalnum. - * cpu-v850.c: Include "safe-ctype.h" instead of . - (scan): Use ISDIGIT instead of isdigit. - * hosts/alphavms.h: Don't include . - * ieee.c: Include "safe-ctype.h" instead of . - (ieee_object_p): Use TOUPPER instead of toupper. - * ihex.c: Include "safe-ctype.h" instead of . - (ihex_bad_byte): Use ISPRINT instead of isprint. - * merge.c: Don't include . - * oasys.c: Include "safe-ctype.h" instead of . - (oasys_write_sections): Use ISDIGIT instead of isdigit. - * pdp11.c: Include "safe-ctype.h" instead of . - (aout_link_write_symbols): Use ISDIGIT instead of isdigit. - * ppcboot.c: Include "safe-ctype.h" instead of . - (mangle_name): Use ISALNUM instead of isalnum. - * som.c: Include "safe-ctype.h" instead of . - (som_set_reloc_info): Use ISUPPER/ISLOWER/ISDIGIT instead of - isupper/islower/isdigit. - (som_decode_symclass): Use TOUPPER instead of toupper. - * srec.c: Include "safe-ctype.h" instead of . - (srec_bad_byte): Use ISPRINT instead of isprint. - (srec_scan): Use ISSPACE instead of isspace. - * stabs.c: Include "safe-ctype.h" instead of . - (_bfd_link_section_stabs): Use ISDIGIT instead of isdigit. - * syms.c: Include "safe-ctype.h" - (islower, toupper): Remove macro definitions. - (bfd_decode_symclass): Use TOUPPER instead of toupper. - * vms-gsd.c: Don't include . - * vms-hdr.c: Include "safe-ctype.h" instead of . - (_bfd_vms_write_hdr): Use ISLOWER/TOUPPER instead of - islower/toupper. - * vms-tir.c: Don't include . - -2001-09-18 Alan Modra - - * libbfd.c (bfd_bread): New function replacing bfd_read without - redundant params. Allow reads up to (size_t) -2 in length. - (bfd_bwrite): Similarly for bfd_write. - (real_read): Return a size_t. - (bfd_read): Call bfd_bread. - (bfd_write): Call bfd_bwrite. - (warn_deprecated): New function to annoy everybody. - (bfd_get_file_window): Don't call bfd_set_error unnecessarily. - * bfd-in.h (bfd_bread, bfd_bwrite, warn_deprecated): Declare. - (bfd_read, bfd_write): Define as macro. - * aix386-core.c: Replace calls to bfd_read with bfd_bread, and - likewise for bfd_write. Ensure function args are correct size by - using casts or local vars. In some cases, remove unnecessary - casts. Formatting fixes, in some cases removing a large expression - from function args by using a local var. Replace CONST with const. - Modify variable types to avoid warings. Use casts to avoid - warnings when using negative numbers in unsigned expressions. - * aout-adobe.c: Likewise. - * aout-arm.c: Likewise. - * aout-cris.c: Likewise. - * aout-encap.c: Likewise. - * aout-ns32k.c: Likewise. - * aout-target.h: Likewise. - * aout-tic30.c: Likewise. - * aoutf1.h: Likewise. - * aoutx.h: Likewise. - * archive.c: Likewise. - * archures.c: Likewise. - * bfd-in.h: Likewise. - * bfd.c: Likewise. - * binary.c: Likewise. - * bout.c: Likewise. - * cache.c: Likewise. - * cisco-core.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-arm.c: Likewise. - * coff-h8300.c: Likewise. - * coff-h8500.c: Likewise. - * coff-i386.c: Likewise. - * coff-i860.c: Likewise. - * coff-i960.c: Likewise. - * coff-ia64.c: Likewise. - * coff-m68k.c: Likewise. - * coff-m88k.c: Likewise. - * coff-mcore.c: Likewise. - * coff-mips.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-sparc.c: Likewise. - * coff-stgo32.c: Likewise. - * coff-tic30.c: Likewise. - * coff-tic54x.c: Likewise. - * coff-tic80.c: Likewise. - * coff-w65.c: Likewise. - * coff-z8k.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - * coffswap.h: Likewise. - * corefile.c: Likewise. - * cpu-arc.c: Likewise. - * cpu-h8300.c: Likewise. - * cpu-h8500.c: Likewise. - * cpu-i960.c: Likewise. - * cpu-ia64-opc.c: Likewise. - * cpu-ns32k.c: Likewise. - * cpu-pdp11.c: Likewise. - * cpu-pj.c: Likewise. - * cpu-sh.c: Likewise. - * cpu-w65.c: Likewise. - * cpu-z8k.c: Likewise. - * dwarf1.c: Likewise. - * dwarf2.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - * ecoffswap.h: Likewise. - * elf-bfd.h: Likewise. - * elf-hppa.h: Likewise. - * elf-m10200.c: Likewise. - * elf-m10300.c: Likewise. - * elf.c: Likewise. - * elf32-arc.c: Likewise. - * elf32-arm.h: Likewise. - * elf32-avr.c: Likewise. - * elf32-cris.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-gen.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-hppa.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i860.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-mips.c: Likewise. - * elf32-openrisc.c: Likewise. - * elf32-pj.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-s390.c: Likewise. - * elf32-sh-lin.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-ppc.c: Likewise. - * elf64-s390.c: Likewise. - * elf64-sparc.c: Likewise. - * elf64-x86-64.c: Likewise. - * elfarm-nabi.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-target.h: Likewise. - * format.c: Likewise. - * hash.c: Likewise. - * hp300hpux.c: Likewise. - * hppabsd-core.c: Likewise. - * hpux-core.c: Likewise. - * i386aout.c: Likewise. - * i386dynix.c: Likewise. - * i386linux.c: Likewise. - * i386lynx.c: Likewise. - * i386mach3.c: Likewise. - * i386msdos.c: Likewise. - * i386os9k.c: Likewise. - * ieee.c: Likewise. - * ihex.c: Likewise. - * irix-core.c: Likewise. - * libaout.h: Likewise. - * libbfd-in.h: Likewise. - * libbfd.c: Likewise. - * libcoff-in.h: Likewise. - * libecoff.h: Likewise. - * libieee.h: Likewise. - * libnlm.h: Likewise. - * libpei.h: Likewise. - * libxcoff.h: Likewise. - * linker.c: Likewise. - * lynx-core.c: Likewise. - * m68klinux.c: Likewise. - * merge.c: Likewise. - * mipsbsd.c: Likewise. - * netbsd-core.c: Likewise. - * nlm.c: Likewise. - * nlm32-alpha.c: Likewise. - * nlm32-i386.c: Likewise. - * nlm32-ppc.c: Likewise. - * nlm32-sparc.c: Likewise. - * nlmcode.h: Likewise. - * nlmswap.h: Likewise. - * ns32k.h: Likewise. - * oasys.c: Likewise. - * opncls.c: Likewise. - * osf-core.c: Likewise. - * pc532-mach.c: Likewise. - * pdp11.c: Likewise. - * pe-mips.c: Likewise. - * peXXigen.c: Likewise. - * peicode.h: Likewise. - * ppcboot.c: Likewise. - * ptrace-core.c: Likewise. - * reloc.c: Likewise. - * reloc16.c: Likewise. - * riscix.c: Likewise. - * rs6000-core.c: Likewise. - * sco5-core.c: Likewise. - * section.c: Likewise. - * som.c: Likewise. - * sparclinux.c: Likewise. - * sparclynx.c: Likewise. - * srec.c: Likewise. - * stabs.c: Likewise. - * sunos.c: Likewise. - * syms.c: Likewise. - * targets.c: Likewise. - * tekhex.c: Likewise. - * trad-core.c: Likewise. - * versados.c: Likewise. - * vms-gsd.c: Likewise. - * vms-hdr.c: Likewise. - * vms-misc.c: Likewise. - * vms-tir.c: Likewise. - * vms.c: Likewise. - * vms.h: Likewise. - * xcofflink.c: Likewise. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * libcoff.h: Regenerate. - - * bfd.c (struct _bfd): Make "where" and "origin" unsigned. - * bfd-in.h (file_ptr): Change from a long int to a bfd_signed_vma. - (ufile_ptr): Define. - (bfd_tell): Return a ufile_ptr. - * libbfd.c (bfd_tell): Likewise. - (bfd_seek): Use bfd_size_type locals. Don't call bfd_set_error - unnecessarily. - * aix386-core.c: Test != 0 for bfd_seek errors rather than < 0. - * aoutf1.h: Likewise. - * som.c: Likewise. - * cache.c (bfd_cache_lookup_worker): Guard against abfd->where - larger than unsigned long can represent. - - * libbfd.c (bfd_malloc): Take a bfd_size_type arg. Error if - size overflows size_t. - (bfd_realloc): Likewise. - (bfd_zmalloc): Likewise. - * opncls.c (bfd_alloc): Likewise. - (bfd_zalloc): Likewise. - * libbfd-in.h (bfd_malloc, bfd_realloc, bfd_zmalloc): Update. - (bfd_alloc, bfd_zalloc): Update. - - * libbfd.c (bfd_get_8): Mask with 0xff in case char is more than - 8 bits. - (bfd_get_signed_8): Likewise. - (H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8, - H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8, - H_GET_64, H_GET_32, H_GET_16, H_GET_8, - H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Define and use. - * libaout.h: Likewise define and use here. - * aout-adobe.c: Use H_GET_* and H_PUT_* macros. - * aout-arm.c: Likewise. - * aout-encap.c: Likewise. - * aout-ns32k.c: Likewise. - * aout-tic30.c: Likewise. - * aoutf1.h: Likewise. - * aoutx.h: Likewise. - * bout.c: Likewise. - * coff-alpha.c: Likewise. - * coff-h8300.c: Likewise. - * coff-h8500.c: Likewise. - * coff-i960.c: Likewise. - * coff-ia64.c: Likewise. - * coff-m88k.c: Likewise. - * coff-mips.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-sparc.c: Likewise. - * coff-stgo32.c: Likewise. - * coff-tic30.c: Likewise. - * coff-tic80.c: Likewise. - * coff-w65.c: Likewise. - * coff-z8k.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - * coffswap.h: Likewise. - * ecoff.c: Likewise. - * ecoffswap.h: Likewise. - * elf.c: Likewise. - * elf32-mips.c: Likewise. - * elf64-mips.c: Likewise. - * hp300hpux.c: Likewise. - * i386dynix.c: Likewise. - * i386lynx.c: Likewise. - * i386msdos.c: Likewise. - * i386os9k.c: Likewise. - * libpei.h: Likewise. - * nlm32-alpha.c: Likewise. - * nlm32-i386.c: Likewise. - * nlm32-ppc.c: Likewise. - * nlmcode.h: Likewise. - * nlmswap.h: Likewise. - * oasys.c: Likewise. - * pdp11.c: Likewise. - * pe-mips.c: Likewise. - * peXXigen.c: Likewise. - * peicode.h: Likewise. - * riscix.c: Likewise. - * sunos.c: Likewise. - * xcofflink.c: Likewise. - * elfcode.h: (put_word, get_word, put_signed_word, get_signed_word): - Rename to H_PUT_WORD, H_GET_WORD, H_PUT_SIGNED_WORD, H_GET_SIGNED_WORD. - * coff-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Don't define. Use - equivalent H_PUT_* macro instead. - (GETWORD, GETHALF, GETBYTE): Similarly. - * coff64-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Likewise. - (GETWORD, GETHALF, GETBYTE): Likewise. - * coffswap.h (PUTWORD, PUTHALF, PUTBYTE): Likewise. - - * bfd-in.h (struct orl): Change "pos" to a union. - * archive.c (_bfd_compute_and_write_armap): Use it instead of casts. - (bsd_write_armap): Here too. - (coff_write_armap): And here. - * coff-rs6000.c (xcoff_write_armap_old): And here. - (xcoff_write_one_armap_big): And here. - (xcoff_write_armap_big): And here. - * ecoff.c (_bfd_ecoff_write_armap): And here. - * elf64-mips.c (mips_elf64_write_armap): And here. - - * aoutf1.h (sunos_set_arch_mach): Make "mach" param an enum. - * elf-m10300.c (elf_mn10300_mach): Return an unsigned long. - * elf32-h8300.c (elf32_h8_mach): Likewise. - * elf32-mips.c (elf_mips_mach): Likewise. - * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise. - - * aix386-core.c (aix386_core_file_p): Remove redundant bfd_release - calls. - (aix386_core_vec): Typo fix. - - * aout-arm.c: Include libaout.h and aout/aout64.h after N_TXTADDR - etc. to avoid redefined macro warning. - (MY(put_reloc)): Use bfd_vma for "value" rather than long. - (MY(fix_pcrel_26)): Likewise. - * aout-ns32k.c (MY(put_reloc)): Likewise. - * aout-cris.c (MY(swap_ext_reloc_out)): Likewise for r_addend. - * aoutx.h (NAME(aout,swap_ext_reloc_out)): Likewise. - * coff-arm.c (coff_arm_relocate_section): Likewise for my_offset. - - * aout-encap.c: Include "file", not for binutils headers. - (encap_object_p): Half baked attempt to fix compile errors in - code dealing with "magic". - - * aout-ns32k.c: Include "file", not for binutils headers. - (_bfd_ns32k_relocate_contents): get_data and put_data manipulate - bfd_vma's rather than longs. - * cpu-ns32k.c (ns32k_sign_extend): Delete. - (_bfd_ns32k_get_displacement): Return a bfd_vma, don't pass in offset. - (_bfd_ns32k_get_immediate): Likewise. Add code for 8 byte values, - remove case 3. - (_bfd_ns32k_put_displacement): Accept a bfd_vma, don't pass in offset. - Use unsigned comparisons. - (bfd_ns32k_put_immediate): Likewise, and add code for 8 byte values. - (do_ns32k_reloc): get_data and put_data operate on bfd_vma's. - (_bfd_do_ns32k_reloc_contents): Likewise. - * ns32k.h (_bfd_ns32k_get_displacement): Update prototype. - (_bfd_ns32k_get_immediate): Likewise. - (_bfd_ns32k_put_displacement): Likewise. - (_bfd_ns32k_put_immediate): Likewise. - (bfd_reloc_status_type): Likewise. - - * aoutx.h (NAME(aout,find_nearest_line)): Rename 'p' to 'colon' - to avoid shadowing. - * pdp11.c (NAME(aout,find_nearest_line)): Likewise. - * coff-h8300.c (h8300_reloc16_extra_cases): Remove shadowing "value". - * coff-ppc.c (enum ref_category): Rename "data" to "tocdata" to - avoid shadowing. - (record_toc): Use a bfd_signed_vma for our_toc_offset. - * coffcode.h (coff_write_relocs): Rename "i" to avoid shadowing. - * elf.c (bfd_elf_get_bfd_needed_list): Rename "link" var to avoid - shadow warning. - (_bfd_elfcore_strndup): Likewise for "dup". - * elf32-cris.c (cris_elf_relocate_section): "symname" instead of - "name" to avoid shadowing. - * elf32-hppa.c (elf32_hppa_relocate_section): Remove duplicate - definition of "off". - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Remove duplicate - definition of "s". - (_bfd_mips_elf_final_link): Rename "i" to "j". Remove duplicate - "secpp". - * elf64-x86-64.c (elf64_x86_64_relocate_section): Rename inner "indx" - to avoid shadowing. - * elflink.h (elf_link_add_object_symbols): Rename "link" to "shlink" - to avoid shadowing. - (elf_link_input_bfd): Likewise. - (elf_bfd_final_link): Remove duplicate innermost "off" var. - * oasys.c (oasys_write_data): Rename innermost "p" to "sym". - * reloc16.c (bfd_coff_reloc16_relax_section): Rename "i" param to - "input_section". - * som.c (som_prep_for_fixups): Rename inner "i" to "j". - * sunos.c (sunos_add_dynamic_symbols): Localise "s" var. - (sunos_write_dynamic_symbol): Remove unused vars. - * syms.c (_bfd_stab_section_find_nearest_line): Remove duplicate - innermost "directory_name" and "file_name" vars. - * tekhex.c (first_phase): Rename local var "type" to "stype". - (tekhex_write_object_contents): Rename innermost "s" to "sym". - * vms-gsd.c (vms_secflag_by_name): Change "size" param to "hassize", - doing comparison at caller. - (vms_esecflag_by_name): Likewise. - * vms-tir.c (etir_sto): Rename innermost "psect" to "psect1". - * xcofflink.c (xcoff_link_input_bfd): Delete duplicate innermost "o". - (xcoff_write_global_symbol): Rename "p" param to "inf". - - * cisco-core.c: Add missing prototypes. - (cisco_core_file_failing_command): Add ATTRIBUTE_UNUSED. - (cisco_core_file_failing_signal): Likewise. - (cisco_core_file_matches_executable_p): Likewise. - * hpux-core.c (hpux_core_core_file_failing_signal): Likewise. - * netbsd-core.c (netbsd_core_file_matches_executable_p): Likewise. - * osf-core.c (osf_core_core_file_matches_executable_p): Likewise. - * sco5-core.c (sco5_core_file_matches_executable_p): Likewise. - - * coff-arm.c (coff_arm_link_hash_table): Use bfd_size_type for - thumb_glue_size and arm_glue_size. - * elf32-arm.h (elf32_arm_link_hash_table): Likewise here. - - * coff64-rs6000.c: Group prototypes together. - - * coffcode.h (coff_set_arch_mach): Add ATTRIBUTE_UNUSED. - (buy_and_read): Remove "seek" param. Change "size" to bfd_size_type. - - * cpu-arc.c: Add missing prototypes. - * cpu-h8500.c: Likewise. - * cpu-i960.c: Likewise. - * cpu-pj.c: Likewise. - * cpu-sh.c: Likewise. - * cpu-w65.c: Likewise. - * cpu-z8k.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-h8300.c: Likewise. - * elf32-i370.c: Likewise. - * hpux-core.c: Likewise. - * versados.c: Likewise. - - * cpu-h8300.c (bfd_default_scan_num_mach): Don't declare. - * cpu-h8500.c: Likewise. - * cpu-i960.c: Likewise. - * cpu-z8k.c: Likewise. - - * cpu-ia64-opc.c: Correct comment. - - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove unused var. - - * elf-bfd.h (elf_size_info): Change count param of write_out_phdrs - to unsigned. - (bfd_elf32_write_out_phdrs): Likewise. - (bfd_elf64_write_out_phdrs): Likewise. - (elf_linker_section_pointers): Change addend to bfd_vma. - (_bfd_elf_find_pointer_linker_section): Likewise. - (_bfd_elfcore_make_pseudosection): Change size param to size_t and - filepos to unsigned file_ptr. - (_bfd_elfcore_strndup): Change max param to size_t. - * elf.c (_bfd_elfcore_make_pseudosection): As above. - (_bfd_elfcore_strndup): Likewise. - (_bfd_elf_find_pointer_linker_section): Likewise. - - * elf-hppa.h (elf_hppa_relocate_insn): Return an int, and change - insn and sym_value to ints. - - * elf.c (elf_read): Make "offset" param a file_ptr, "size" a - bfd_size_type. - (elfcore_read_notes): Likewise. - - * elf32-arm.h (elf32_arm_final_link_relocate): Change sym_flags - param from unsigned char to int. - (elf32_arm_relocate_section): If USE_REL, cast "rel" appropriately - for info_to_howto call. - (add_dynamic_entry): Define macro. - (elf32_arm_size_dynamic_sections): Use add_dynamic_entry. - - * elf32-cris.c (add_dynamic_entry): Define macro. - (elf_cris_size_dynamic_sections): Use add_dynamic_entry. - - * elf32-h8300.c (elf32_h8_final_write_processing): Make static. - (elf32_h8_object_p): Likewise. - (elf32_h8_merge_private_bfd_data): Likewise. - (elf32_h8_relax_section): Cast gap to int so signed comparisons work. - - * elf32-hppa.c (add_dynamic_entry): Define macro. - (elf32_hppa_size_dynamic_sections): Use it. - * elf32-i370.c (add_dynamic_entry): Define macro. - (i370_elf_size_dynamic_sections): Use it. - (i370_noop): Make static. - * elf32-i386.c (add_dynamic_entry): Define macro. - (elf_i386_size_dynamic_sections): Use it. - * elf32-m68k.c (add_dynamic_entry): Define macro. - (elf_m68k_size_dynamic_sections): Use it. - * elf32-ppc.c (add_dynamic_entry): Define macro. - (ppc_elf_size_dynamic_sections): Use it. - * elf32-s390.c (add_dynamic_entry): Define macro. - (elf_s390_size_dynamic_sections): Use it. - * elf64-alpha.c (add_dynamic_entry): Define macro. - (elf64_alpha_size_dynamic_sections): Use it. - * elf64-hppa.c (add_dynamic_entry): Define macro. - (elf64_hppa_size_dynamic_sections): Use it. - * elf64-ppc.c (add_dynamic_entry): Define macro. - (ppc64_elf_size_dynamic_sections): Use it. - * elf64-s390.c (add_dynamic_entry): Define macro. - (elf_s390_size_dynamic_sections): Use it. - * elf64-sparc.c (add_dynamic_entry): Define macro. - (sparc64_elf_size_dynamic_sections): Use it. - * elf64-x86-64.c (add_dynamic_entry): Define macro. - (elf64_x86_64_size_dynamic_sections): Use it. - * elfxx-ia64.c (add_dynamic_entry): Define macro. - (elfNN_ia64_size_dynamic_sections): Use it. - - * elf32-v850.c (SEXT24): Modify to avoid signed/unsigned warning. - (v850_elf_perform_relocation): Make "r_type" param unsigned. - - * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Just return - false if the first malloc fails rather than going via error_return. - - * elf64-sparc.c (sparc64_elf_plt_entry_offset): Use a bfd_vma for - "index" param. - (sparc64_elf_plt_ptr_offset): Likewise, and for "max" param too. - - * elflink.h (elf_link_input_bfd): s/ingored/ignored/ in error message. - - * elfxx-ia64.c (global_sym_index): Return a long. - - * ieee.c (get_symbol): Use int rather than char param. - (ieee_slurp_sections): Move "section" var to inner blocks. - (copy_expression): Don't init "value" to zero or worry about - clearing to zero after using. - (ieee_write_debug_part): Rename "output_buffer" to "obuff" to avoid - shadowing. - - * ihex.c (ihex_write_record): Make "count" var a size_t, "addr" an - unsigned int. - - * libbfd-in.h (BFD_ALIGN): Add cast to avoid signed/unsigned warning. - (bfd_write_bigendian_4byte_int): Pass an unsigned int value param. - - * mipsbsd.c (mips_fix_jmp_addr): Add "error_message" param. - - * pc532-mach.c (MYNSX): Delete. - (ns32kaout_bfd_reloc_type_lookup): Define prototype without MYNSX. - (write_object_contents): Correct prototype. - - * peicode.h (pe_ILF_build_a_bfd): Use an unsigned int param rather - than unsigned short. - - * section.c (bfd_set_section_contents): Remove redundant - "offset < 0" test. Check that "count" doesn't overflow size_t. - (bfd_get_section_contents): Likewise. - - * som.c (som_fixup_formats): Add missing braces. - (som_reloc_addend): Pass a bfd_vma for "addend". - - * srec.c (srec_write_record): Pass "type" as an unsigned int. - (srec_write_symbols): Remove an unnecessary var. - - * targets.c (_bfd_target_vector): Sort entries. Sort externs - to match. - * configure.in: Sort to match. Bump version number. - * configure: Regenerate. - - * tekhex.c (move_section_contents): Assert offset == 0. - - * versados.c (new_symbol_string): Constify arg. - (process_esd): Use bfd_und_section_ptr rather than &bfd_und_section. - (versados_get_symbol_info): Make static. - (versados_print_symbol): Likewise. - (versados_get_reloc_upper_bound): Likewise. - (versados_canonicalize_reloc): Likewise. - -2001-09-18 Nick Clifton - - * elflink.h (elf_link_input_bfd): Fix typo in error message. - -2001-09-17 H.J. Lu - - * dwarf1.c (parse_die): Take a new arg for the end of the - section. Return false if die is beyond the section. - (parse_functions_in_unit): Pass the end of the section to - parse_die (). - (_bfd_dwarf1_find_nearest_line): Likewise. - -2001-09-14 Michael Rauch - - * elf32-sparc.c (elf32_sparc_relocate_section): Treat R_SPARC_UA32 - just like R_SPARC_32. - -2001-09-14 Kevin Lo - - * configure.bfd: Add arm-openbsd target. - -2001-09-14 Thiemo Seufer - - * config.bfd: Change machine triplets from mips*el*-* to mips*el-*. - Add support for mips64. - -2001-09-13 Alexandre Oliva - - * elf32-openrisc.c (ELF_MACHINE_ALT1): Define as EM_OPENRISC_OLD. - -2001-09-12 Alexandre Oliva - - * elf.c (prep_headers): Get the machine code from the elf - backend data. - * elf-m10200.c (ELF_MACHINE_CODE): Redefine to EM_MN10200. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10200. - * elf-m10300.c (ELF_MACHINE_CODE): Redefine to EM_MN10300. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300. - * elf-arc.c (arc_elf_final_write_processing): Don't override - e_machine, it's now properly set in prep_headers. - * elf32-avr.c (elf32_avr_object_p): Accept both EM_AVR and - EM_AVR_OLD. - (ELF_MACHINE_ALT1): Define to EM_AVR_OLD. - * elf-d10v.c (ELF_MACHINE_CODE): Redefine to EM_D10V. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_D10V. - * elf-d30v.c (ELF_MACHINE_CODE): Redefine to EM_D30V. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_D30V. - * elf-fr30.c (ELF_MACHINE_CODE): Redefine to EM_FR30. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_FR30. - * elf-m32r.c (ELF_MACHINE_CODE): Redefine to EM_M32R. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_M32R. - * elf32-pj.c (ELF_MACHINE_ALT1): DEfine to EM_PJ_OLD. - * elf-v850.c (ELF_MACHINE_CODE): Redefine to EM_V850. - (ELF_MACHINE_ALT1): Define to EM_CYGNUS_V850. - -2001-09-11 Richard Henderson - - * elf64-alpha.c (elf64_alpha_section_flags): New. - (elf64_alpha_fake_sections): Map SEC_SMALL_DATA to SHF_ALPHA_GPREL. - -2001-09-11 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Do not - apply HINT relocations against dynamic symbols. - -2001-09-11 H.J. Lu - - * linker.c (link_action): Change COMMON_ROW\defw from CREF to COM. - -2001-09-09 Richard Henderson - - * elf64-alpha.c: Delete all unused ERIC_neverdef and rth_notdef code. - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): Nop out gpdisp - following a call to a near function. - -2001-09-08 Richard Henderson - - * elf64-alpha.c (elf64_alpha_relocate_section): Soft fail - relocation errors. Fail gp-relative relocations against - dynamic symbols. - -2001-09-08 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section): Check !DEF_REGULAR - as well as DEF_DYNAMIC in test for avoided copy relocs. - (allocate_plt_and_got_and_discard_relocs): Likewise. - * elf32-hppa.c (elf_i386_relocate_section): Likewise. - (allocate_plt_and_got_and_discard_relocs): Likewise. - -2001-09-07 Thiemo Seufer - - * elf32-mips.c (mips_elf_calculate_relocation): Fix overflow handling - of R_MIPS_PC16. - -2001-09-06 Thiemo Seufer - - * elf64-mips.c (mips_elf64_howto_table_rel): Fix relocation HOWTO - definitions. - (mips_elf64_howto_table_rel): Likewise. - -2001-09-05 Tom Rix - - * xcofflink.c (bfd_xcoff_import_symbol): Handle import file XMC_XO - and syscall symbols. - (write_global_symbol) : Same. - (bfd_xcoff_export_symbol): Remove unused syscall param. - * libxcoff.h: Change prototype of bfd_xcoff_export symbol and - bfd_xcoff_import_symbol. - * bfd-in.h: Same. - * bfd-in2.h : Regenerate. - -2001-09-04 Richard Henderson - - * elf64-alpha.c (SKIP_HOWTO): New. - (elf64_alpha_howto_table): Use it to remove dead ECOFF relocs. - Fix sizes of 16-bit mem format relocs. - (elf64_alpha_reloc_map): Update to match. - (elf64_alpha_relax_with_lituse): Use GPREL16 as appropriate. - (elf64_alpha_relax_without_lituse): Likewise. - (elf64_alpha_check_relocs): Handle GPREL16. - (elf64_alpha_relocate_section): Likewise. - * reloc.c (BFD_RELOC_ALPHA_USER_*): Remove. - (BFD_RELOC_ALPHA_GPREL_HI16, BFD_RELOC_ALPHA_GPREL_LO16): New. - * bfd-in2.h, libbfd.h: Rebuild. - -2001-09-04 Jeff Law - - * elf32-h8300.c (elf32_h8_relax_section): New function. - (elf32_h8_relax_delete_bytes): Likewise. - (elf32_h8_symbol_address_p): Likewise. - (elf32_h8_get_relocated_section_contents): Likewise. - (bfd_elf32_bfd_relax_section): Define. - (bfd_elf32_bfd_get_relocated_section_contents): Likewise. - - * elf32-h8300.c (special): New function. - (h8_elf_howto_table): Use it for SPECIAL_FUNCTION field in - all relocations. - (elf32_h8_final_link_relocate): Treat R_H8_DIR24A8 like 32bit - relocations. Fix problems with the true 24bit reloc R_H8_DIR24R8. - Fix minor problems with 8bit and 16bit PC relative relocations. - -2001-09-01 Andreas Jaeger - - * vms-tir.c: Add missing prototypes. - * vms-hdr.c: Likewise. - * vms-gsd.c: Likewise. - * vms-misc.c: Likewise. - -2001-08-31 H.J. Lu - - * elf32-mips.c (_bfd_mips_elf_check_relocs): Report filename - with bad relocation. - -2001-08-31 Eric Christopher - Jason Eckhardt - - * bfd/archures.c: Add mipsisa32 and mipsisa64. Remove mips32, - mips32_4k and mips64. - * bfd/aoutx.h: Remove bfd_mach_mips32, bfd_mach_mips32_4k, - bfd_mach_mips64. Add bfd_mach_mipsisa32, bfd_mach_mipsisa64. - * bfd/cpu-mips.c: Ditto. - * bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing): Ditto. - * bfd/bfd-in2.h: Regenerate. - -2001-08-31 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_relocate_section): Duplicate memory - value into R_ALPHA_RELATIVE's addend. - (elf64_alpha_finish_dynamic_symbol): Likewise. - -2001-08-31 Nick Clifton - - * elf32-arm.h (elf32_arm_relocate_section): Do not rightshift - recomputed addend during relocatable link if not USE_REL. - - * elflink.h (elf_gc_propagate_vtable_entries_used): Fix off-by-one - error. - -2001-08-30 H.J. Lu - - * elf32-mips.c (mips_elf_calculate_relocation): Revert the last - 2 changes. - (_bfd_mips_elf_adjust_dynamic_symbol): Allocate dynamic - relocations for weak definitions. - -2001-08-30 H.J. Lu - - * Makefile.am (BFD32_BACKENDS): Add elf32-h8300.lo. - (BFD32_BACKENDS_CFILES): Add elf32-h8300.c. - * Makefile.in: Rebuild. - -2001-08-30 H.J. Lu - - * elf32-mips.c (mips_elf_calculate_relocation): Don't create - dynamic relocation for undefined weak symbols when creating - executables. Check h->root.root.type, instead of h->root.type. - -2001-08-29 Joel Sherrill - - * config.bfd (i[3456]86-*-rtems*, m68*-*-rtems*): Change - default from coff to elf. - -2001-08-29 Jeff Law - - * elf32-h8300.c (h8_elf_howto_table): Add new PC relative - relocations. - (h8_reloc_map): Similarly. - (elf32_h8_final_link_relocate): Remove incorrect overflow tests. - Add support for PC relative relocations. - - * elf32-h8300.c: Put all prototypes together. - (elf32_h8_info_to_howto): Parameter elf_reloc is used. - (elf32_h8_final_link_relocate): New function for linker. - (elf32_h8_relocate_section): Similarly. - (elf_backend_relocate_section): Define. - - * cpu-h8300.c (h8300_scan, compatible): Prototype. - (h8300_scan): Handle architecture:machine encodings typically - found in linker scripts. - * elf.c (prep_headers): Do not try to do H8 machine recognition - here. - * elf32-h8300.c: Add some missing prototypes. - (elf32_h8_mach, elf32_h8_final_write_processing): New functions. - (elf32_h8_object_p): Similarly. - -2001-08-29 Tom Rix - - * xcofflink.c (xcoff_link_add_symbols): Fix XTY_LD symbol that - does not follow a XTY_SD. - -2001-08-29 Alan Modra - - * targmatch.sed: Delete case statements. - * config.bfd : Select 64 bit xcoff for - aix4.3 and above. - -Wed Aug 29 02:27:36 2001 J"orn Rennecke - - * Makefile.am (elf32-h8300.lo): New target. - * config.bfd (h8300*-*-elf): New case. - * configure.in (bfd_elf32_h8300_vec): New case. - * elf.c (prep_headers): Add case for bfd_arch_h8300. - * reloc.c (BFD_RELOC_H8_DIR16A8): New relocation. - (BFD_RELOC_H8_DIR16R8, BFD_RELOC_H8_DIR24A8): Likewise. - (BFD_RELOC_H8_DIR24R8, BFD_RELOC_H8_DIR32A16): Likewise. - * targets.c (bfd_target bfd_elf32_h8300_vec): New extern declaration. - * elf32-h8300.c: New file. - * Makefile.in, bfd-in2.h, libbfd.h, configure: Regenerated. - -2001-08-28 Nick Clifton - - * sparclynx.c: Add missing prototypes. - * coff-mcore.c: Add missing prototypes. - * elf32-pj.c: Add missing prototypes. - * nlm32-sparc.c: Add missing prototypes. - * oasys.c: Add missing prototypes. - * pdp11.c: Add missing prototypes. - * pe-mips.c: Add missing prototypes. - * riscix.c: Add missing prototypes. - -2001-08-27 Daniel Jacobowitz - - * elf32-i386.c: Add missing prototypes. - * elf32-ppc.c: Likewise. - * elf32-sh-lin.c: Likewise. - * elfarm-nabi.c: Likewise. - -2001-08-27 Daniel Jacobowitz - - * elf32-i386.c (elf_i386_grok_prstatus): New function. - (elf_i386_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Likewise. - * elf32-ppc.c (ppc_elf_grok_prstatus): New function. - (ppc_elf_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Likewise. - * elf32-sh-lin.c (elf32_shlin_grok_prstatus): New function. - (elf32_shlin_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Likewise. - * elfarm-nabi.c (elf32_arm_nabi_grok_prstatus): New function. - (elf32_arm_nabi_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Likewise. - -2001-08-27 H.J. Lu - - * elf32-mips.c (mips_elf_create_dynamic_relocation): Add more - sanity check. - (mips_elf_calculate_relocation): Create dynamic relocation for - symbols with weak definition or the ELF_LINK_HASH_DEF_REGULAR - bit is not set. - -2001-08-27 H.J. Lu - - * elf32-mips.c (_bfd_mips_elf_hide_symbol): Add prototype. - (_bfd_mips_elf_copy_indirect_symbol): Likewise. - (_bfd_elf32_mips_grok_prstatus): Likewise. - (_bfd_elf32_mips_grok_psinfo): Likewise. - (_bfd_mips_elf_hide_symbol): Make it static and cast to - `struct mips_elf_link_hash_entry *'. - (_bfd_mips_elf_copy_indirect_symbol): Make it static. - -2001-08-27 Nick Clifton - - * mipsbsd.c: Add missing prototypes. - * hp300hpux.c: Add missing prototypes. - * i386aout.c: Add missing prototypes. - * i386lynx.c: Add missing prototypes. - * i386mach3.c: Add missing prototypes. - * i386msdos.c: Add missing prototypes. - * i386os9k.c: Add missing prototypes. - -2001-08-27 Linus Nordberg - Torbjorn Granlund - Staffan Ulfberg - Alan Modra - - * config.bfd: Add powerpc64 target. Add powerpc64 vectors to - targ64_selvecs for 32 bit powerpc targets. - * Makefile.am (BFD64_BACKENDS): Add elf64-ppc.lo. - (BFD64_BACKENDS_CFILES): Add elf64-ppc.c. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in: Add elf64_powerpc vecs. - * configure: Regenerate. - * cpu-powerpc.c: Default to bfd_mach_ppc_620 entry for 64 bit. - * elf.c (prep_headers): EM_PPC64 for 64 bit ppc elf target. - * targets.c: Add bfd_elf64_powerpc_vec and bfd_elf64_powerpcle_vec. - * elf64-ppc.c: New file. - * reloc.c: Add powerpc64 relocs. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2001-08-27 Andreas Schwab - - * elf32-m68k.c (elf32_m68k_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf32_m68k_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf32_m68k_reloc_type_class): New function. - (elf_backend_reloc_type_class): Define. - -2001-08-27 Andreas Jaeger - - * elf64-s390.c (elf_s390_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf_s390_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf_s390_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - - * elf32-s390.c (elf_s390_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf_s390_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf_s390_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - - * elf32-ppc.c (ppc_elf_check_relocs): Set DF_TEXTREL if the reloc - is against read-only section. - (ppc_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (ppc_elf_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - -2001-08-26 Andreas Jaeger - - * elf32-cris.c (cris_elf_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf_cris_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf_cris_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - - * elf32-sh.c (sh_elf_check_relocs): Set DF_TEXTREL if the reloc is - against read-only section. - (elf_backend_reloc_type_class): Define. - (sh_elf_reloc_type_class): New. - (sh_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - - * elf32-arm.h (elf32_arm_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf32_arm_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf32_arm_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - -2001-08-25 Andreas Jaeger - - * oasys.c: Add missing prototypes. - - * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Add unused - attribute for parameter. - * elf.c (_bfd_elf_reloc_type_class): Likewise. - - * versados.c (get_4): Make static. - (get_10): Make static. - Add missing prototypes. - (process_esd): Fix call to versados_new_symbol. - -2001-08-25 Nick Clifton - - * coff-a29k.c: Add missing prototypes. - * coff-apollo.c: Add missing prototypes. - * coff-arm.c: Add missing prototypes. - * coff-i860.c: Add missing prototypes. - * coff-rs6000.c: Add missing prototypes. - * coff-tic80.c: Add missing prototypes. - * elf-m10200.c: Add missing prototypes. - * elf-m10300.c: Add missing prototypes. - * elf32-arm.h: Add missing prototypes. - * elf32-d10v.c: Add missing prototypes. - * elf32-m32r.c: Add missing prototypes. - * elf32-mcore.c: Add missing prototypes. - * elf32-openrisc.c: Add missing prototypes. - * elf32-sh.c: Add missing prototypes. - * elf32-sparc.c: Add missing prototypes. - * elf32-v850.c: Add missing prototypes. - * elfarm-nabi.c: Add missing prototypes. - * elfarm-oabi.c: Add missing prototypes. - -2001-08-25 Thiemo Seufer - - * elf32-mips.c (elf_mips_abi_name): Return the right ABI string for - E_MIPS_ABI_O64 and E_MIPS_ABI_EABI64 - -2001-08-24 H.J. Lu - - * elf.c (_bfd_elf_merge_sections): Fail if not using an ELF - hash structure. - -2001-08-24 Nick Clifton - - * elf-bfd.h (elf_hash_table): Revert definition. - (is_elf_hash_table): New macro. - * elflink.h (elf_link_add_object_symbols): Test - is_elf_hash_table before accessing ELF only fields in hash - structure. - (elf_link_create_dynamic_sections): Fail if not using an ELF - hash structure. - (elf_add_dynamic_entry): Fail if not using an ELF hash - structure. - (elf_link_record_local_dynamic_symbol): Fail if not using an - ELF hash structure. - (size_dynamic_sections): Fail if not using an ELF hash - structure. - (elf_adjust_dynamic_symbol): Fail if not using an ELF - hash structure. - (elf_bfd_final_link): Fail if not using an ELF hash - structure. - -2001-08-24 H.J. Lu - - * elf-bfd.h (elf_hash_table): Return NULL if the linker hash - table is not an ELF linker hash table. - - * elf.c (_bfd_elf_link_hash_table_init): Set the linker hash - table type to bfd_link_elf_hash_table. - - * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_create): Revert - the last change. - - * linker.c (_bfd_link_hash_table_init): Set the linker hash - table type to bfd_link_generic_hash_table. - -2001-08-24 Alexandre Oliva - - * bfd.c (bfd_alt_mach_code): New function. - * bfd-in2.h: Rebuilt. - -2001-08-24 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relocate_section): Test the right - `type' field in the hash entry when deciding whether to follow a - link. - -2001-08-24 Jakub Jelinek - - * elflink.h (elf_link_sort_cmp1): Sort RELATIVE relocs first, not - last. - (elf_link_sort_relocs): Adjust accordingly. - - * elf64-alpha.c (struct alpha_elf_link_hash_entry): Add reltext flag. - (elf64_alpha_check_relocs): Set it if section this reloc is against - is read-only. Set DF_TEXTREL if a RELATIVE reloc is needed against - read-only section. - (elf64_alpha_calc_dynrel_sizes): Set DF_TEXTREL flag if relocation - is is against read-only section. - (elf64_alpha_size_dynamic_sections): Use DF_TEXTREL flag, don't - check section names. - (elf64_alpha_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - -2001-08-24 Thiemo Seufer - - * linker.c (_bfd_generic_link_add_archive_symbols): Replace alloca() - by bfd_malloc(). - -2001-08-23 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Set DF_TEXTREL if - the reloc is against read-only section. - (elf64_x86_64_size_dynamic_sections): Use DF_TEXTREL flag instead - of looking up section names for DT_TEXTREL. - (elf64_x86_64_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - -2001-08-23 H.J. Lu - - * syms.c (bfd_print_symbol_vandf): Add abfd to arg. - * bfd-in2.h (bfd_print_symbol_vandf): Regenerated. - - * aoutx.h (NAME(aout,print_symbol)): Pass abfd to - bfd_print_symbol_vandf. - * coffgen.c (coff_print_symbol): Likewise. - * elf.c (bfd_elf_print_symbol): Likewise. - * ieee.c (ieee_print_symbol): Likewise. - * nlmcode.h (nlm_print_symbol): Likewise. - * oasys.c (oasys_print_symbol): Likewise. - * pdp11.c (NAME(aout,print_symbol)): Likewise. - * som.c (som_print_symbol): Likewise. - * srec.c (srec_print_symbol): Likewise. - * tekhex.c (tekhex_print_symbol): Likewise. - * versados.c (versados_print_symbol): Likewise. - * vms.c (vms_print_symbol): Likewise. - - * elf.c (_bfd_elf_print_private_bfd_data): Replace fprintf_vma - with bfd_fprintf_vma. - (bfd_elf_print_symbol): Likewise. - * syms.c (bfd_print_symbol_vandf): Likewise. - -2001-08-23 Nick Clifton - - * aoutf1.h (sunos_write_object_contents): Silence compile time - warning. - * libaout.h (N_SET_DYNAMIC): Silence compile time warning. - - * bout.c: Add missing function prototypes. Fix formatting. - * coff-z8k.c: Add missing function prototypes. Fix formatting. - * coff-w65.c: Add missing function prototypes. Fix formatting. - * coff-h8500.c: Add missing function prototypes. Fix formatting. - * coff-h8300.c: Add missing function prototypes. Fix formatting. - * coff-tic54x.c: Add missing function prototypes. Fix formatting. - * coff-tic30.c: Add missing function prototypes. Fix formatting. - * coff-m68k.c: Add missing function prototypes. Fix formatting. - * coff-rs6000.c: Add missing function prototypes. Fix formatting. - * coff-sh.c: Add missing function prototypes. Fix formatting. - -2001-08-23 Jakub Jelinek - - * elf-bfd.h (enum elf_reloc_type_class): New. - (struct elf_backend_data): Add elf_backend_reloc_type_class. - (_bfd_elf_reloc_type_class): New. - * elfxx-target.h (elf_backend_reloc_type_class): Define. - (elfNN_bed): Add elf_backend_reloc_type_class. - * elf.c (_bfd_elf_reloc_type_class): New. - * elf32-i386.c (elf_i386_check_relocs): Set DF_TEXTREL if the reloc - is against read-only section. - (elf_i386_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf_i386_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - * elf32-sparc.c (elf32_sparc_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (elf32_sparc_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (elf32_sparc_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - * elf64-sparc.c (sparc64_elf_check_relocs): Set DF_TEXTREL if the - reloc is against read-only section. - (sparc64_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of - looking up section names for DT_TEXTREL. - (sparc64_elf_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add reltext field. - (elfNN_ia64_hash_table_create): Clear ia64_info. - (get_reloc_section): Set DF_TEXTREL if the reloc is against read-only - section. - (elfNN_ia64_size_dynamic_sections): Use ia64_info->reltext flag - instead of looking up section names for DT_TEXTREL. - (elfNN_ia64_reloc_type_class): New. - (elf_backend_reloc_type_class): Define. - * elflink.h (size_dynamic_sections): Add spare DT_NULL tags. - (struct elf_link_sort_rela): New. - (elf_link_sort_cmp1, elf_link_sort_cmp2, elf_link_sort_relocs): New. - (elf_bfd_final_link): Call elf_link_sort_relocs. - Convert one spare DT_NULL into DT_RELCOUNT resp. DT_RELACOUNT if - necessary. - -2001-08-23 Nick Clifton - - * configure.in (x86-bsdi): No corefile support. - * configure: Regenerate. - -2001-08-22 Nick Clifton - - * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add missing - comma. - -2001-08-21 Mark Elbrecht - - * coff-go32.c: Make DWARF2 sections use an alignment of 0. Set - the alignment of dwarf2 linkonce sections to 0. - * coff-sto32.c: Likewise. - -2001-08-20 Andreas Jaeger - - * coff-sparc.c: Add missing prototypes. - * elf32-s390.c: Likewise. - * elf32-i960.c: Likewise. - * aout-target.h: Likewise. - -2001-08-20 H.J. Lu - - * elf-bfd.h (elf_obj_tdata): Add num_section_syms. - (elf_num_section_syms): New for num_section_syms. - - * elf.c (elf_map_symbols): Set num_section_syms. - (_bfd_elf_symbol_from_bfd_symbol): Check num_section_syms for - the section symbol index. - -2001-08-20 Nick Clifton - - * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_create): Never - select the generic has table creator. All elf backends need elf - specific fields in the hash table. - -2001-08-20 Alan Modra - - * archive.c (offsetof): Remove define. - * elf.c: Likewise. - * oasys.c: Likewise - * sysdep.h (offsetof): Define. - -2001-08-17 Alan Modra - - * bfd.c (bfd_get_gp_size): Return an unsigned int. - (bfd_set_gp_size): Make param unsigned. - * bfd-in2.h: Regenerate. - * elf32-ppc.c (ppc_elf_add_symbol_hook): Use elf_gp_size rather - than calling bfd_get_gp_size. - * elf64-alpha.c (elf64_alpha_add_symbol_hook): Likewise. - * elfxx-ia64.c (elfNN_ia64_add_symbol_hook): Likewise. - -2001-08-17 Alan Modra - - * linker.c (default_fill_link_order): Handle four byte fill value. - -2001-08-17 Alan Modra - - * elf64-sparc.c (sparc64_elf_output_arch_syms): Add missing - prototype. - * nlm32-alpha.c (nlm_alpha_write_external): Fix warning. - - * elf64-mips.c (UNUSED_RELOC): Define. - (mips_elf64_howto_table_rel): Use it. - (mips_elf64_howto_table_rela): Here too. - (mips_elf64_write_relocs): Fix signed/unsigned warning. - - * coffcode.h (coff_write_object_contents): Add ATTRIBUTE_UNUSED to - silence warning. - * coffgen.c (coff_print_symbol): Fix warnings. - (coff_find_nearest_line): Likewise. - * cofflink.c (_bfd_coff_link_input_bfd): Likewise. - * coff-alpha.c (alpha_convert_external_reloc): Likewise. - * format.c (bfd_check_format_matches): Likewise. - (bfd_set_format): Likewise. - * coff-ia64.c: Add missing prototypes. - * elf64-alpha.c (struct alpha_elf_link_hash_entry): Make addend - signed to silence warnings. - (elf64_alpha_relocate_section): Likewise. - (elf64_alpha_find_reloc_at_ofs): Fix warnings. - (elf64_alpha_add_symbol_hook): Likewise. - (elf64_alpha_final_link): Likewise. - (elf64_alpha_relax_section): Remove redundant assign to info.gotent. - (elf64_alpha_merge_gots): Add ATTRIBUTE_UNUSED to unused args. - (elf64_alpha_size_got_sections): Likewise. - * elfxx-ia64.c: Add missing prototypes. - (elfNN_ia64_relocate_section): Fix warning. - (elfNN_ia64_unwind_entry_compare): Make params const. - -2001-08-17 Alan Modra - - * config.bfd (targ64_selvecs): New. - : Use it here instead of ineffectual #ifdef. - - * bfd-in.h (BFD_VERSION): Remove wrong comment. - (BFD_DEFAULT_TARGET_SIZE): New. - (BFD_ARCH_SIZE): Comment. - * configure.in (target_size): New. Set instead of target64 in - selvecs case statement. Set target64 from it. - (bfd_default_target_size): New. Set from taget_size. AC_SUBST. - * bfd-in2.h: Regenerate. - * configure: Regenerate. - -2001-08-17 Alan Modra - - * bfd.c (enum bfd_error): Add bfd_error_wrong_object_format. - (bfd_errmsgs): Add corresponding message. - * archive.c (bfd_generic_archive_p): Don't release bfd_ardata when - finding an archive that contains different format object files. - Return bfd_error_wrong_object_format for this case. - * format.c: Formatting fixes. s/CONST/const/. - (bfd_check_format_matches): Accept archives that give - bfd_error_wrong_object_format if no full match is found. Tidy - code handling matching_vector. Don't return a pointer to freed - memory in `matching'. Handle ambiguous matches as for partial - archive matches. - * bfd-in2.h: Regenerate. - -2001-08-15 Alan Modra - - * libieee.h (common_header_type): Add last_byte field. - - * ieee.c: Add missing prototypes. Some format fixes. - (struct output_buffer_struct): Move for availability to prototypes. - (ieee_part_after): New function. - (ieee_slurp_debug): Use it here. - (ieee_seek): Pass in ieee_data_struct rather than bfd. Use - ieee_part_after to set last_byte to one past end of current part. - Update callers. - (ieee_pos): Pass in ieee_data_struct rather than bfd. - Update callers. - (parse_expression): Don't go beyond the end of the current part. - (ieee_slurp_external_symbols): Correct type passed to read_2bytes. - (ieee_get_symtab_upper_bound, ieee_get_symtab, - ieee_get_symbol_info, ieee_print_symbol, ieee_new_section_hook, - ieee_get_reloc_upper_bound, ieee_canonicalize_reloc, block, - ieee_set_section_contents, ieee_write_object_contents, - ieee_make_empty_symbol): Make static. - (ieee_archive_p): Correct comments regarding bfd_read. - (ieee_object_p): Similarly. - (ieee_mkobject): Move it. Clear output_ptr_start, output_ptr, - output_ptr_end, input_ptr_start, input_ptr, input_ptr_end, - input_bfd, output_bfd, output_buffer. - (do_as_repeat): Write out ieee_set_current_pc_enum value as for - do_with_relocs, ie. as a symbol for relocatable files. - (ieee_vec): Add comments showing functions referenced by macros. - -2001-08-14 Nick Clifton - - * aout-tic30.c: Add missing prototypes. Fix formatting. - * aout-ns32k.c: Add missing prototypes. Fix formatting. - * peXXigen.c: Add missining prototypes. Fix formatting. - * aout-adobe.c: Add missining prototypes. Fix formatting. - -2001-08-13 Nick Clifton - - * elf32-v850.c: Add missing function prototypes. - Fix some formatting. - - * cpu-v850.c: Add missing function prototype. - Fix some formatting. - -2001-08-11 Nick Clifton - - * elf-bfd.h (struct elf_backend_data): Add new fields - 'elf_backend_sprintf_vma' and 'elf_backend_fprintf_vma'. - (bfd_elf_sprintf_vma): Rename function prototype to - '_bfd_elf_sprintf_vma'. - (bfd_elf_fprintf_vma): Rename function prototype to - '_bfd_elf_fprintf_vma'. - * bfd.c (bfd_sprintf_vma): Do not invoke bfd_elf_sprintf_vma - directly, instead indirect via the elf_backend_data structure. - (bfd_fprintf_vma): Do not invoke bfd_elf_fprintf_vma directly, - instead indirect via the elf_backend_data structure. - * elf.c (bfd_elf_sprintf_vma): Rename to _bfd_elf_sprintf_vma. - (bfd_elf_fprintf_vma): Rename to _bfd_elf_fprintf_vma. - * elfxx-target.h (elf_backend_sprintf_vma): Initialise if not - already defined. - (elf_backend_fprintf_vma): Initialise if not already defined. - (struct elf_backend_data): Initialise the - elf_backend_sprintf_vma and elf_backend_fprintf_vma fields. - -2001-08-10 Andreas Jaeger - - * elf64-sparc.c: Add missing prototypes. - * elf32-cris.c: Likewise. - * elf32-i370.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-s390.c: Likewise. - -2001-08-10 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_elf_object_p): Make static. - Add prototypes where needed. - -2001-08-10 H.J. Lu - - * bfd.c (bfd_sprintf_vma): Fix a typo in the last change. - (bfd_fprintf_vma): Likewise. - -2001-08-10 H.J. Lu - - * bfd.c (bfd_sprintf_vma): Don't return void. - (bfd_fprintf_vma): Likewise. - -2001-08-10 Andreas Jaeger - - * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes - to build warnings. - * configure: Regenerate. - -2001-08-10 Alan Modra - - * elf.c (bfd_elf_sprintf_vma): Add ATTRIBUTE_UNUSED to quiet - warning if not BFD64. Add braces so emacs auto format works. - (bfd_elf_fprintf_vma): Likewise. - - * libxcoff.h (struct xcoff_backend_data_rec): Constify src param - of _xcoff_swap_ld*. - * coff-rs6000.c (xcoff_swap_ldhdr_in): Modify type of external - param to agree with libxcoff.h. - (xcoff_swap_ldhdr_out): Likewise. - (xcoff_swap_ldsym_in): Likewise. - (xcoff_swap_ldsym_out): Likewise. - (xcoff_swap_ldrel_in): Likewise. - (xcoff_swap_ldrel_out): Likewise. - (xcoff_create_csect_from_smclas): Likewise. - * coff64-rs6000.c: Add missing prototypes. - (xcoff64_swap_ldhdr_in): Modify type of external param to agree - with libxcoff.h. - (xcoff64_swap_ldhdr_out): Likewise. - (xcoff64_swap_ldsym_in): Likewise. - (xcoff64_swap_ldsym_out): Likewise. - (xcoff64_swap_ldrel_in): Likewise. - (xcoff64_swap_ldrel_out): Likewise. - (xcoff64_ppc_relocate_section): Make static. - (xcoff64_slurp_armap): Likewise. - (xcoff64_archive_p): Likewise. - (xcoff64_openr_next_archived_file): Likewise. - (xcoff64_sizeof_headers): Likewise. - (xcoff64_is_lineno_count_overflow): Likewise. - (xcoff64_is_reloc_count_overflow): Likewise. - (xcoff64_loader_symbol_offset): Likewise. - (xcoff64_loader_reloc_offset): Likewise. - * elf64-gen.c: Add missing prototypes. - -2001-08-09 H.J. Lu - - * elf.c (bfd_elf_sprintf_vma): Check ELFCLASS64 only in BFD64. - (bfd_elf_fprintf_vma): Likewise. - -2001-08-09 H.J. Lu - - * bfd-in.h (bfd_elf_sprintf_vma, bfd_elf_fprintf_vma): Moved - to ... - * elf-bfd.h: Here. - * bfd-in2.h: Regenerated. - -2001-08-09 H.J. Lu - - * bfd-in.h (bfd_sprintf_vma): New prototype. - (bfd_fprintf_vma): Likewise. - (bfd_elf_sprintf_vma): Likewise. - (bfd_elf_fprintf_vma): Likewise. - (bfd_printf_vma): New. Defined with bfd_fprintf_vma. - * bfd-in2.h: Regenerated. - - * bfd.c (bfd_sprintf_vma): New. Defined. - (bfd_fprintf_vma): Likewise. - - * elf.c (bfd_elf_sprintf_vma): New. Defined. - (bfd_elf_fprintf_vma): Likewise. - -2001-08-09 Alan Modra - - * coff-rs6000.c: Add missing prototypes. - (xcoff_ppc_relocate_section, xcoff_is_lineno_count_overflow, - xcoff_is_reloc_count_overflow, xcoff_loader_symbol_offset, - xcoff_loader_reloc_offset): Make static. - * dwarf1.c: Add missing prototypes. - * dwarf2.c: Add missing prototypes. - (struct abbrev_info): Move definition. - (struct attr_abbrev, ABBREV_HASH_SIZE, ATTR_ALLOC_CHUNK): Likewise. - * elf.c: Add missing prototypes. - * elf32-gen.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-ppc.c: Likewise. - (ppc_elf_sort_rela): Use PTR instead of "void *". - * elflink.h: Add missing prototypes. Formatting fixes. - * merge.c: Add missing prototypes. - (last4_eq): Use PTR instead of "void *". - (last_eq): Likewise. - * syms.c: Add missing prototypes. - -2001-08-09 Nick Clifton - - * bfd.c: Fix formatting. - * bfd-in2.h: Regenerate. - -2001-08-09 Nick Clifton - - * elf32-arc.c (R_ARC_B22_PCREL): Change 'partial_inplace' to - true (this target uses REL relocations) and 'pcrel_offset' to - false (the PC is implied, not stored in the offset). - -2001-08-08 Alan Modra - - 1999-10-19 Linus Nordberg - * elf-bfd.h (struct elf_backend_data): Add want_got_sym. - * elfxx-target.h (elf_backend_want_got_sym): Define. - (elfNN_bed): Add elf_backend_want_got_sym. - * elflink.c (_bfd_elf_create_got_section): Define - _GLOBAL_OFFSET_TABLE_ only if bed->want_got_sym. - -2001-08-08 Alexandre Oliva - - * dwarf2.c (struct dwarf2_debug): Add sec, sec_info_ptr and syms. - (find_rela_addend): New function. - (parse_comp_unit): Call it to find the abbrev offset addend. - (_bfd_dwarf2_find_nearest_line): Initialize and maintain the new - members of dwarf2_debug as debugging information is read. - -2001-08-07 Nick Clifton - - * coff-sh.c (sh_coff_reloc_type_lookup): Provide for sh-coff - targets as well as sh-pe. - -2001-08-03 Ben Harris - - * elf32-arm.h (elf32_arm_final_link_relocate): Include offset of - reloc from start of section when computing value for R_ARM_REL32 - reloc. - -2001-08-03 Alan Modra - - From H.J. Lu - * elf32-i386.c (allocate_plt_and_got_and_discard_relocs): Don't - keep relocs for undefined syms if there are no dynamic sections in - executable. - * elf32-hppa.c (allocate_plt_and_got_and_discard_relocs): Likewise. - -2001-08-02 Paul Sokolovsky - - * cofflink.c (coff_link_check_ar_symbols): also search for - __imp__symbol as well as _symbol. - * linker.c (_bfd_generic_link_add_archive_symbols): also - search for __imp__symbol as well as _symbol. - -2001-08-01 Adam Nemet - - * elf.c (elf_sort_sections): Return zero only as the last step. - -2001-08-01 Nick Clifton - - * config.bfd (arm-vxworks): Change name of define from VXWORKS to - ARM_COFF_BUGFIX. - (arm-epoc-pe): Define ARM_COFF_BUGFIX. - coff-arm.c (coff_arm_relocate_section): Replace VXWORKS with - ARM_COFF_BUGFIX. - -2001-07-30 Rainer Orth - - * libecoff.h (_bfd_ecoff_styp_to_sec_flags): Changed return type - to match corresponding bfd_coff_backend data member. - -2001-07-24 Alan Modra - - * Makefile.am: Update dependencies with "make dep-am". - * Makefile.in: Regenerate - -2001-07-15 H.J. Lu - - * Makefile.am (po/SRC-POTFILES.in): Use tmp.src instead of tmp. - (po/BLD-POTFILES.in): Use tmp.bld instead of tmp. - * Makefile.in: Regenerate. - -2001-07-11 H.J. Lu - - * elf64-alpha.c (elf64_alpha_check_relocs): Set the ALLOC|LOAD - flags when creating the reloc section if the ALLOC flag in the - source section is set. - -2001-07-11 Steve Ellcey - - * reloc.c (bfd_reloc_code_type): Add IA64 relocs - BFD_RELOC_IA64_LTOFF_FPTR32MSB and BFD_RELOC_IA64_LTOFF_FPTR32LSB - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * elfxx-ia64.c (ia64_howto_table): Define how to handle - new relocations. - (elfNN_ia64_reloc_type_lookup): Handle new relocations. - (elfNN_ia64_check_relocs): Likewise. - (elfNN_ia64_install_value): Likewise. - (elfNN_ia64_relocate_section): Likewise. - -2001-07-11 Jakub Jelinek - - * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for - R_SPARC_UA64. - (elf32_sparc_check_relocs): Likewise. - Only create .rela section for alloced sections in shared libraries. - (elf32_sparc_relocate_section): Likewise. - Remove redundant check. - Optimize unaligned reloc usage. - * elf64-sparc.c (sparc64_elf_relocate_section): Remove redundant - check. - -2001-07-11 H.J. Lu - - * elf64-alpha.c (elf64_alpha_check_relocs): Only use the same - ALLOC|LOAD flags as the source section for debugging sections - when creating the reloc section. - -2001-07-05 Jim Wilson - - * linker.c (_bfd_generic_link_add_one_symbol, case BIG): Use - the section of the bigger symbol. - - * syms.c (bfd_is_local_label): Return false if BSF_SECTION_SYM. - -2001-07-05 Nick Clifton - - * peicode.h (coff_swap_scnhdr_in): For sections containing - uninitialised data, only set their size to s_paddr if this does - not reset their size to zero. MS's latest compilers will set - s_paddr to zero. - -2001-07-04 H.J. Lu - - * bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing): - Handle bfd_mach_mips4400, bfd_mach_mips4600 and - bfd_mach_mips5000. - -2001-07-03 Mark Elbrecht - - * bfd.c (bfd_get_sign_extend_vma): Support DJGPP COFF targets. - - * cofflink.c (_bfd_coff_link_input_bfd): Skip section symbols from - sections being discarded. - -2001-06-30 Alan Modra - - * elfcore.h (elf_core_file_p): Call bfd_section_from_phdr directly - instead of _bfd_elfcore_section_from_phdr. - * elf-bfd.h (_bfd_elfcore_section_from_phdr): Remove. - * elf.c (_bfd_elfcore_section_from_phdr): Remove. - (_bfd_elfcore_make_pseudosection): Expedite tail-call. - (elfcore_grok_prstatus): Likewise. - (elfcore_grok_lwpstatus): Likewise. - (bfd_get_elf_phdr_upper_bound): Likewise. - (elfcore_make_note_pseudosection): Formatting. - (_bfd_elfcore_strndup): Formatting. - * elf32-mips.c (mips_elf_sym_is_global): Formatting. - (_bfd_elf32_mips_grok_prstatus): Expedite tail-call. - -2001-06-29 Daniel Jacobowitz - - * elf-bfd.h: Add prototypes for _bfd_elfcore_make_pseudosection - and _bfd_elfcore_strndup. - (struct elf_backend_data): Add elf_backend_grok_prstatus - and elf_backend_grok_psinfo. - * elf.c (_bfd_elfcore_make_pseudosection): New function. - (elfcore_grok_prstatus): Use it. - (elfcore_make_note_pseudosection): Likewise. - (elfcore_strndup): Rename to... - (_bfd_elfcore_strndup): Here, and make global. - (elfcore_grok_psinfo): Use _bfd_elfcore_strndup. - (elfcore_grok_note): Call elf_backend_grok_prstatus - and elf_backend_grok_psinfo if available. - * elf32-mips.c (_bfd_elf32_mips_grok_prstatus): New function. - (_bfd_elf32_mips_grok_psinfo): New function. - (elf_backend_grok_prstatus): Define. - (elf_backend_grok_psinfo): Define. - * elfxx-target.h (elf_backend_grok_prstatus): Default to NULL. - (elf_backend_grok_psinfo): Likewise. - (elfNN_bed): Include elf_backend_grok_prstatus and - elf_backend_grok_psinfo. - -2001-06-29 H.J. Lu - - * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Check if - hplink->sgot is NULL before filling GOT. Check if hplink->splt - is NULL before filling PLT. - -2001-06-29 Alan Modra - - * elflink.h (elf_link_output_extsym): Revert 1999-04-10. - -2001-06-27 Alan Modra - - * elf32-hppa.c (elf32_hppa_check_relocs): Don't make syms dynamic - here.. - (elf32_hppa_adjust_dynamic_symbol): ..nor here.. - (allocate_plt_and_got_and_discard_relocs): .. instead do so here - after gc has run. - - * elf32-hppa.c (RELATIVE_DYNAMIC_RELOCS): Delete. - (IS_ABSOLUTE_RELOC): Define. - (elf32_hppa_link_hash_entry): Always include reloc_entries field. - (hppa_link_hash_newfunc): Always init it. - (elf32_hppa_check_relocs): Mark symbols as ELF_LINK_NON_GOT_REF to - create COPY relocs only when the reloc is in a read-only section. - Instead, allocate space for a dynamic reloc to reference the - library symbol directly. Keep track of space we allocate using - relocs_entries. - (hppa_discard_copies): Delete, and move code to.. - (allocate_plt_and_got): ..here. Rename to - allocate_plt_and_got_and_discard_relocs. Remove unneeded dynamic - relocs for non-shared link. - (elf32_hppa_size_dynamic_sections): Update calls to above. - (elf32_hppa_relocate_section): Write out the dynamic relocs used - in lieu of COPY relocs. - - * elf32-i386.c (elf_i386_check_relocs): Don't make syms dynamic - here.. - (elf_i386_adjust_dynamic_symbol): ..nor here.. - (allocate_plt_and_got_and_discard_relocs): .. instead do so here - after gc has run. - (elf_i386_size_dynamic_sections): Fix a comment. - (elf_i386_relocate_section ): Rearrange code - involved in writing reloc out. - -2001-06-25 Alan Modra - - * elf32-i386.c (elf_i386_check_relocs ): - Ensure syms are dynamic if we might be emitting a reloc. - (allocate_plt_and_got_and_discard_relocs): Don't discard relocs - for undefweak or undefined syms.. - (elf_i386_relocate_section ): .. and emit. - - * elf32-i386.c (allocate_plt_and_got_and_discard_relocs): Discard - relocs without ELF_LINK_HASH_DEF_DYNAMIC set. - (elf_i386_relocate_section ): Remove - redundant bfd_link_hash_defined, bfd_link_hash_defweak test. - -2001-06-24 H.J. Lu - - * cpu-i960.c (scan_960_mach): Don't modify const char *. Use - strncasecmp/strcasecmp instead of strncmp/strcmp. - -2001-06-23 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section ): - Check ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined - in the regular object file and treat the weak definition as - the normal one. - -2001-06-23 Alan Modra - - * elf32-i386.c (elf_i386_relocate_section ): Tighten - unresolved_reloc test to exclude cases where we use "relocation" - before setting it to point into the .got. Reinstate fudge for - unresolved relocs in debugging sections. - - * elf32-i386.c (elf_i386_relocate_section): Replace ugly - complicated tests for unresolvable relocs with a simple direct - scheme using "unresolved_reloc" var. - - * elf32-i386.c (struct elf_i386_pcrel_relocs_copied): Rename to - elf_i386_dyn_relocs. Update comment. - (struct elf_i386_link_hash_entry): Rename pcrel_relocs_copied to - dyn_relocs. - (elf_i386_adjust_dynamic_symbol): Remove a BFD_ASSERT, change - others to aborts. - (allocate_plt_and_got_and_discard_relocs): Replace BFD_ASSERT with - abort. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_finish_dynamic_symbol): Likewise. - (elf_i386_finish_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. Tidy R_386_GOT32 and error - handling code. - - Avoid creating COPY relocs if possible. - * elf32-i386.c (elf_i386_check_relocs): Tweak condition under - which .got created. Mark symbols used by R_386_32 and R_386_PC32 - relocs as ELF_LINK_NON_GOT_REF to create COPY relocs only when the - reloc is in a read-only section. Instead, allocate space for a - dynamic reloc to reference the library symbol directly. Keep - track of space we allocate using pcrel_relocs_copied. - (discard_copies): Delete, and move code to .. - (allocate_plt_and_got): ..here. Rename to - allocate_plt_and_got_and_discard_relocs. Remove unneeded dynamic - relocs for non-shared link. - (elf_i386_size_dynamic_sections): Update calls to above functions. - (elf_i386_relocate_section): Write out the dynamic relocs. Add - more ugly logic to avoid "unresolvable relocation" error. Use - htab shortcut in place of elf_hash_table macro. - (elf_i386_finish_dynamic_sections): Allow that dynamic .got may - not always be created now. - -2001-06-20 Bo Thorsen - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix linking of - shared libraries. - -2001-06-18 Thiemo Seufer - - * configure.host (mips64-*-linux): Reformat. - -2001-06-21 Alan Modra - - * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Always - allocate local .got space. Use shortcuts from hash table for .got - and .plt rather than comparing section names. - (elf32_hppa_check_relocs): Use local_plt_refcounts var rather than - adjusting index into local_got_refcounts to document what we are - really doing. - (elf32_hppa_relocate_section): Similarly for local_plt_offsets. - Tidy .got and .plt error checking. - -2001-06-20 Catherine Moore - - * elf-bfd.h (struct elf_backend_data): - elf_backend_emit_relocs: New field: Function for emitting - relocs. - elf_backend_count_relocs: New field: Function for determining - the number of relocs to be emitted. - * elfxx-target.h: Provide default (NULL) values for - elf_backend_emit_relocs and elf_backend_count_relocs. - * elflink.h (elf_link_size_reloc_section): Make the hash table - big enough to hold the relocs counted by either reloc_count or - o->reloc_count. - (elf_bfd_final_link) emit_relocs: New boolean, set if relocs - should be emitted, either because of a command line option - stored in the info structure or because the target provides a - special reloc emitting function. - If the target provides a reloc counting function use it, - unless performing a relocatable link or emitting all relocs. - Also set the SEC_RELOC flag on any output section which will - contain relocs. - (elf_link_input_bfd): emit_relocs: New boolean, set if relocs - should be emitted, either because of a command line option - stored in the info structure or because the target provides a - special reloc emitting function. - If the target provides a reloc emitting function, use it, - unless performing a relocatable link or emitting all relocs. - -2001-06-20 H.J. Lu - - * elf32-i386.c (elf_i386_size_dynamic_sections): Always - allocate local .got space. - -2001-06-19 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix creation of - dynamic symbols. - -2001-06-18 Hans-Peter Nilsson - - * elflink.h (struct elf_assign_sym_version_info): Remove member - export_dynamic. All users changed to use info member. - NAME(bfd_elf,size_dynamic_sections)): Remove parameter - export_dynamic, instead use member in parameter info. - * bfd-in.h (bfd_elf32_size_dynamic_sections, - bfd_elf64_size_dynamic_sections): Update prototype. - * bfd-in2.h: Regenerate. - -2001-06-18 H.J. Lu - - * elflink.h (elf_info_failed): Add a new field, verdefs. - (NAME(bfd_elf,size_dynamic_sections): Pass verdefs to - elf_export_symbol. - (elf_export_symbol): Check eif->verdefs to decide if a symbol - should be exported. - -2001-06-17 H.J. Lu - - * elf32-mips.c (mips_elf_link_hash_entry): Add a new field, - readonly_reloc, to record if a relocation in the .rel.dyn - section is against a read-only section. - (mips_elf_link_hash_newfunc): Initialize the readonly_reloc - field to false. - (_bfd_mips_elf_check_relocs): Record if there is a relocation - in the .rel.dyn section against a read-only section by setting - DF_TEXTREL or readonly_reloc. - (_bfd_mips_elf_copy_indirect_symbol): Copy readonly_reloc if - it is true. - (_bfd_mips_elf_adjust_dynamic_symbol): Record DF_TEXTREL if - there is a relocation in the .rel.dyn section against a - read-only section. - (_bfd_mips_elf_size_dynamic_sections): Set DT_TEXTREL if - DF_TEXTREL is set. - -2001-06-12 Nick Clifton - - * coffcode.h (styp_flags_to_sec_flags): Change to a boolean - function. Move flagword result into parameter list. Remove - comment about setting bfd_error_handler to intercept failure - results. - * coffgen.c (make_a_section_from_file): Examine result of - calling bfd_coff_styp_to_sec_flags and pass a failure back to - caller. - * ecoff.h (styp_flags_to_sec_flags): Change to a boolean - function. Move flagword result into parameter list. - * libcoff.h: Regenerate. - * libecoff.h: Regenerate. - -2001-06-13 Nick Clifton - - * aoutx.h (adjust_z_magic): Only pad the tesxt section if the data - section is going to follow it. - -2001-06-12 Catherine Moore - - * elflink.h (elf_gc_propagate_vtable_entries): Replace FILE_ALIGN - with the file_align entry from elf_backend_data. - (elf_gc_smash_unused_vtentry_relocs): Likewise. - (elf_gc_record_vtentry): Likewise. - -2001-06-10 Alan Modra - - * elflink.h: Whitespace changes. - (elf_link_read_relocs_from_section): Use "unsigned int" iterator - rather than "unsigned char". - (elf_link_output_relocs): Likewise. - (elf_link_input_bfd): Likewise. - (elf_reloc_link_order): LIkewise. - * elf.c: s/CONST/const/. Whitespace changes. - * elf32-mips.c: Formatting fix. - - * Makefile.am (SOURCE_HFILES): Include xcoff-target.h, remove xcoff.h. - * Makefile.in: Regenerate. - * po/Make-in: Remove trailing tab. - -2001-06-09 Philip Blundell - - * elf32-arm.h (elf32_arm_plt0_entry): Correct error in last - change. - (elf32_arm_plt_entry): Likewise. - -2001-06-08 H.J. Lu - - * elf.c (swap_out_syms): Keep names for global section symbols. - -2001-06-07 H.J. Lu - - * config.bfd: Put back ecoff for Linux/mips. Firmwares on some - MIPS-based machines need it. - -2001-06-07 H.J. Lu - - * elf32-mips.c (_bfd_mips_elf_object_p): Set the bad symtab - for SGI only. - - * config.bfd: Remove ecoff from Linux/mips. - -2001-06-07 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Add an - assertion. - (elf64_x86_64_check_relocs): Fix VTENTRY relocation; set an - alignment of 8 for .rela sections; handle further relocations. - -2001-06-06 Christian Groessler - - * coff-z8k.c: Fix formatting. - Fix howtos: howto->size was always 1. - -2001-06-05 Thiemo Seufer - - * configure.host (mips64*-*-linux*): Define. - -2001-06-05 Alan Modra - - * elf32-i386.c (elf_i386_discard_copies): Rename to - discard_copies, and use elf_link_hash_entry arg rather than - elf_i386_link_hash_entry. - (elf_i386_link_hash_traverse): Delete. - (elf_i386_size_dynamic_sections): Adjust call to discard_copies. - Tidy sizing of dynamic sections. - (elf_i386_check_relocs ): Reference count - possible .plt entries. - (elf_i386_gc_sweep_hook): Likewise. - (elf_i386_adjust_dynamic_symbol): Discard .plt entries for - everything with plt.refcount <= 0. - - * elf32-i386.c (elf_i386_check_relocs): Don't allocate .got and - .relgot space here. - (elf_i386_gc_sweep_hook): ..and no need to deallocate here.. - (elf_i386_adjust_dynamic_symbol): ..and don't allocate .plt and - .rel.plt here.. - (allocate_plt_and_got): ..instead do it all here. New function. - (elf_i386_size_dynamic_sections): Allocate local .got space and - call allocate_plt_and_got. No need to zap .relgot if not dynamic. - (bfd_elf32_bfd_final_link): Delete. (ie. use regular final link - rather than gc variety). - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf_i386_relocate_section): Use it here and correct handling of - R_386_GOT32. Provide section and offset for "unresolvable - relocation" error message. - (elf_i386_finish_dynamic_symbol): Correct handling of R_386_GOT32. - - * elf32-i386.c (struct elf_i386_link_hash_table): Add sgot, - sgotplt, srelgot, splt, srelplt, sdynbss, srelbss fields. - (elf_i386_link_hash_table_create): Init them. - (create_got_section): New function. - (elf_i386_create_dynamic_sections): New function. - (elf_backend_create_dynamic_sections): Set to above. - (elf_i386_check_relocs): Use shortcuts from hash table rather than - calling bfd_get_section_by_name. - (elf_i386_gc_sweep_hook): Likewise. - (elf_i386_adjust_dynamic_symbol): Likewise. - (elf_i386_size_dynamic_sections): Likewise. - (elf_i386_relocate_section): Likewise. - (elf_i386_finish_dynamic_sections): Likewise. - - * elf32-hppa.c (allocate_plt_and_got): Skip indirect and warning syms. - -2001-06-02 H.J. Lu - - * elf32-hppa.c (elf32_hppa_object_p): Check ELFOSABI_LINUX - and ELFOSABI_HPUX. - * elf64-hppa.c (elf64_hppa_object_p): Likewise. - -2001-06-02 H.J. Lu - - * aout-cris.c (MACHTYPE_OK): New. Defined. - -2001-06-02 Hans-Peter Nilsson - - * section.c (_bfd_strip_section_from_output): Handle NULL - output_section. - -2001-06-02 H.J. Lu - - * config.bfd (powerpc-*-aix*, powerpc-*-beos*, rs6000-*-*): Add - rs6000coff64_vec only if BFD64 is defined. - (powerpc64-*-aix*): Enable only if BFD64 is defined. - -2001-06-02 H.J. Lu - - * coff-ia64.c (ia64coff_object_p): Rewrite with - external_PEI_DOS_hdr and external_PEI_IMAGE_hdr. - -2001-06-01 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Add PC8 - relocation, small reformatting. - -2001-05-29 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Handle R_X86_64_64. - (elf64_x86_64_relocate_section): Likewise. - -2001-05-30 Alan Modra - - * elf32-hppa.c (elf32_hppa_check_relocs): Don't NEED_PLT for - millicode. Don't allocate .got and .rela.got space here.. - (elf32_hppa_gc_sweep_hook): ..and no need to deallocate here.. - (elf32_hppa_adjust_dynamic_symbol): ..and don't allocate .plt and - .rela.plt here.. - (hppa_handle_PIC_calls): ..nor here.. - (allocate_plt_and_got): ..instead do it all here. New function. - (elf32_hppa_size_dynamic_sections): Allocate local .got space and - call allocate_plt_and_got. No need to zap .got if not dynamic. - (elf32_hppa_final_link): Call regular bfd_final_link instead of - gc_common_final_link. - (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. - (elf32_hppa_relocate_section): Use it here. - (elf32_hppa_finish_dynamic_symbol): Remove superfluous test of - dynamic_sections_created. - (hppa_type_of_stub): Don't LONG_BRANCH_VIA_PLT if millicode sym. - -2001-05-28 Andreas Jaeger - - * elf64-x86-64.c (elf64_86_64_size_info): Remove, we can use the - generic version since we want a hashsize of 4. - (elf_backend_size_info): Likewise. - -2001-05-28 Thiemo Seufer - - * elflink.h (elf_link_size_reloc_section): Use bfd_zmalloc instead of - a zeroing loop. - (elf_link_output_relocs): Handle MIPS ELF64 relocations correctly. - (elf_link_input_bfd): Likewise. - (elf_reloc_link_order): Likewise. - (elf_finish_pointer_linker_section): Typo. Handle MIPS ELF64 - relocations correctly. - -2001-05-28 Nicolas Pitre - - * elf32-arm.h: fix PLT generation for big endian ARM - -2001-05-28 Alan Modra - - * elf32-hppa.c (elf32_hppa_relocate_section): Set up .plt entries - for symbols forced local that need plabels. - (elf32_hppa_adjust_dynamic_symbol): Don't allocate space in - .plt.rela for local syms if non-shared. - (hppa_build_one_stub): Mask lsb of plt.offset. - (elf32_hppa_finish_dynamic_symbol): Abort if lsb of plt.offset set. - (clobber_millicode_symbols): Correct comment. - (elf32_hppa_relocate_section): Likewise. - (elf32_hppa_finish_dynamic_symbol): Likewise. - -2001-05-28 Jeff Sturm - - * reloc.c: Add BFD_RELOC_SPARC_UA16 and BFD_RELOC_SPARC_UA64. - * bfd-in2.h: Regenerate. - * libbfd.h: Regenerate. - * elf32-sparc.c: Enable BFD_RELOC_SPARC_UA16, BFD_RELOC_SPARC_UA32 - and BFD_RELOC_SPARC_UA64 mapping - * elf64-sparc.c: Likewise. - -2001-05-25 H.J. Lu - - * Makefile.am (BFD32_BACKENDS): Remove coff-pmac.lo. - (BFD32_BACKENDS_CFILES): Remove coff-pmac.c. - (coff-rs6000.lo): Remove the old dependency. - * Makefile.in: Rebuild. - - * configure.in (pmac_xcoff_vec): Replace coff-pmac.lo with - coff-rs6000.lo. - -2001-05-25 H.J. Lu - - * coff-rs6000.c (rs6000coff_vec): Use rs6000coff_core_p, - rs6000coff_core_file_matches_executable_p, - rs6000coff_core_file_failing_command and - rs6000coff_core_file_failing_signal only if AIX_CORE is - defined. - (pmac_xcoff_vec): Likewise. - * coff64-rs6000.c (rs6000coff64_vec): Likewise. - -2001-05-25 Timothy Wall - - * elfxx-ia64.c (allocate_dynrel_entries): Don't allocate an entry - for __GLOB_DATA_PTR on AIX5. Clean up some relocation bugs. - -2001-05-25 H.J. Lu - - * bfd-in2.h: Regenerated. - * libcoff.h: Likewise. - -2001-05-25 Alan Modra - - * elf32-hppa.c (elf32_hppa_relocate_section): Don't allow - undefined millicode syms in shared libs. - (hppa_build_one_stub): Turn BFD_ASSERTs into aborts. - (elf32_hppa_check_relocs): Likewise. - (elf32_hppa_adjust_dynamic_symbol): Likewise. - (elf32_hppa_size_dynamic_sections): Likewise. - (elf32_hppa_relocate_section): Likewise. - (elf32_hppa_finish_dynamic_symbol): Likewise. - (elf32_hppa_finish_dynamic_sections): Likewise. - -2001-05-24 Tom Rix - - * Makefile.am coff-pmac bfd now defined in coff-rs6000.c - xcoff-target.h not used to define rs6000 or ppc bfd. - * Makefile.in same - - * bfd-in.h : (struct lineno_cache_entry) promote element "offset" - to 64 bit. - - * coff-rs6000.c : Many changes for 64 bit support. Move common - 32/64 code to xcofflink.c. Explictly define the rs6000coff_vec - and pmac_xcoff_vec - - * coff64-rs6000.c : Many changes for 64 bit support. 64 bit - linker now supported. Explictly define the rs6000coff64_vec. - - * coffcode.h : (coff_set_arch_mach_hook) xcoff 64 bit support - (coff_print_aux) same - (coff_write_object_contents) same - (coff_slurp_line_table) same - - * coffgen.c : (coff_fix_symbol_name) formatting - (coff_mangle_symbols) xcoff 64 bit support - (coff_write_symbol) same - (coff_write_alien_symbol) same - (coff_write_native_symbol) same - (coff_write_symbols) same - (coff_get_symbol_info) same - (bfd_coff_get_syment) same - (coff_print_symbol) same - - * config.bfd : add powerpc64-*-aix* target - - * libcoff-in.h : formatting - - * libcoff.h : move xcoff extern declarations to libxcoff.h - - * libxcoff.h : New file - - * xcofflink.c : Many changes for xcoff64 support. Move common - structures to include/coff/xcoff.h. Move specific structure to - backends coff-rs6000.c and coff64-rs6000.c. Use new backend - functions, defined in libxcoff.h, to isolate 32/64 dependencies. - - (bfd_xcoff_size_dynamic_sections) : special __rtinit symbol for - aix4.2+ -binitfini. - - (xcoff_build_ldsyms) : handle special __rtinit symbol. - -2001-05-23 Alexandre Oliva - - * elf64-sparc.c (sparc64_elf_slurp_reloc_table): Fix typo - s/ENTIRES/ENTRIES/. - -2001-05-23 Thiemo Seufer - - * reloc.c (bfd_reloc_code_real): Add MIPS ELF64 relocations. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - - * aoutx.h (aout_@var{size}_machine_type): Add MIPS r12k support. - * archures.c (bfd_mach_mips12000): Define. - * cpu-mips.c (arch_info_struct): Add MIPS r12k support. - * elf32-mips.c (_bfd_mips_elf_final_write_processing): Add MIPS r12k - support. - (_bfd_mips_elf_size_dynamic_sections): Use official bfd typedef. - * bfd-in2.h: Regenerate. - * elfxx-target.h: Do not redefine bfd_elfNN_bfd_make_debug_symbol. - -2001-05-23 kaz Kojima - - * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry, - elf_sh_plt_entry_be, elf_sh_plt_entry, elf_sh_pic_plt_entry_be, - elf_sh_pic_plt_entry): New PLT code, that does not use r2, since - that is used by GCC. - -2001-05-23 Nick Clifton - - * elf-bfd.h (NUM_SHDR_ENTRIES): New macro: compute the number - of entries in a structured section. - * elf.c: Use new macro. - * elf32-i386.c: Use new macro. - * elf32-mips.c: Use new macro. - * elf64-alpha.c: Use new macro. - * elf64-sparc.c: Use new macro. - * elfcode.h: Use new macro. - * elflink.h: Use new macro. - -2001-05-23 Nick Clifton - - * bfdint.texi: Replace -oformat with --oformat. - -2001-05-21 Andreas Jaeger - - * dwarf2.c (decode_line_info): Fix error message. - (read_abbrevs): Fix test for offset as suggested by Alan Modra and - adjust error message. - -2001-05-18 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Revert the last - change. - -2001-05-17 Alan Modra - - * elf32-hppa.c (clobber_millicode_symbols): Temporarily set - ELF_LINK_FORCED_LOCAL to suit 2001-04-30 change. - (hppa_build_one_stub): Add an assert to check plt.offset. - -2001-05-17 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the - version definition to basename of the output filename. - -2001-05-17 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Set DT_NEEDED to - basename of the bfd filename. - -2001-05-16 Alan Modra - - * section.c (asection): Add linker_has_input field. - (STD_SECTION): Adjust initialization to suit. - * ecoff.c (bfd_debug_section): Likewise. - * bfd-in2.h: Regenerate. - -2001-05-15 Alexandre Oliva - - * elf-m10300.c (mn10300_elf_relax_section): Don't relax - negative 32-bit operands to 16 operands when the operand is - going to be zero-extended by the modified opcode. - -2001-05-12 Peter Targett - - * cpu-arc.c (arch_info_struct): Add entry 'base' representing old - name for 'arc5' core versions. - (bfd_arc_arch): Make bfd_mach_arc_6 default. - - * elf32-arc.c (arc_elf_object_p): Make E_ARC_MACH_ARC6 default - architecture. - (arc_elf_final_write_processing): Make bfd_mach_arc_6 default. - -2001-05-11 Jakub Jelinek - - * elfxx-ia64.c (is_unwind_section_name): Consider linkonce unwind - sections as well. - (elfNN_ia64_final_write_processing): Map .gnu.linkonce.ia64unw.FOO - to .gnu.linkonce.t.FOO text section. - -2001-05-11 Jakub Jelinek - - * merge.c (struct sec_merge_hash_entry): Add u.entsize and u.suffix - fields, change sec into secinfo. - (struct sec_merge_info): Add chain, remove last fields. - (struct sec_merge_sec_info): Add next, sec, psecinfo fields. - (sec_merge_hash_lookup): If lookup could not use a string only - because it has bad alignment, mark the old string for deletion. - (sec_merge_add): Add secinfo argument. Don't compute entry's - position, instead record the section. - (sec_merge_emit): Update for the sec into secinfo change in - struct sec_merge_hash_entry. - (_bfd_merge_section): Only record the section for merging, defer - putting strings into the hash table. - (cmplengthentry, last4_eq, last_eq, record_section, merge_strings, - _bfd_merge_sections): New functions. - (_bfd_merged_section_offset): Update for the sec_merge_hash_entry - changes. - * libbfd-in.h (_bfd_merge_sections): Add prototype. - (_bfd_nolink_bfd_merge_sections): Define. - * libbfd.h: Likewise. - (bfd_generic_merge_sections): Add prototype. - * targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_merge_sections. - (struct bfd_target): Likewise. - * bfd.c (bfd_merge_sections): Define. - * bfd-in2.h: Rebuilt. - * elf.c (_bfd_elf_merge_sections): New function. - * elf-bfd.h (_bfd_elf_merge_sections): Add prototype. - * elfxx-target.h (bfd_elfNN_bfd_merge_sections): Define. - * reloc.c (bfd_generic_merge_sections): New function. - * vms.c (vms_bfd_merge_sections): New function. - * aout-adobe.c (aout_32_bfd_merge_sections): Define. - * aout-target.h (MY_bfd_merge_sections): Define. - * aout-tic30.c (MY_bfd_merge_sections): Define. - * binary.c (binary_bfd_merge_sections): Define. - * bout.c (b_out_bfd_merge_sections): Define. - * coff-alpha.c (_bfd_ecoff_bfd_merge_sections): Define. - * coffcode.c (coff_bfd_merge_sections): Define. - * coff-mips.c (_bfd_ecoff_bfd_merge_sections): Define. - * i386msdos.c (msdos_bfd_merge_sections): Define. - * i386os9k.c (os9k_bfd_merge_sections): Define. - * ieee.c (ieee_bfd_merge_sections): Define. - * ihex.c (ihex_bfd_merge_sections): Define. - * nlm-target.h (nlm_bfd_merge_sections): Define. - * oasys.c (oasys_bfd_merge_sections): Define. - * ppcboot.c (ppcboot_bfd_merge_sections): Define. - * som.c (som_bfd_merge_sections): Define. - * srec.c (srec_bfd_merge_sections): Define. - * tekhex.c (tekhex_bfd_merge_sections): Define. - * versados.c (versados_bfd_merge_sections): Define. - * xcoff-target.h (_bfd_xcoff_bfd_merge_sections): Define. - -2001-05-11 Nick Clifton - - * dwarf1.c (_bfd_dwarf1_find_nearest_line): Change type of 'addr' - to be unsigned long, in order to match its use. - -2001-05-10 H.J. Lu - - * linker.c (_bfd_generic_link_add_one_symbol): Check loop on - indirect symbols. - -2001-05-09 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Fix a typo. Allocate - versymhdr->sh_size bytes for extversym instead of hdr->sh_size. - Remove the unused veriable `dynver'. - -2001-05-08 Ian Lance Taylor - - * coff-i386.c (coff_i386_reloc): Don't dump core if output_bfd is - NULL or is not COFF. - (coff_i386_rtype_to_howto): Don't dump core if output section - owner is not COFF. - -2001-05-07 Thiemo Seufer - - * ecoff.c (bfd_debug_section): Fix initialization. - * elf.c (_bfd_elf_slurp_version_tables): Change maxidx to unsigned, it - is always a positive integer. Cast away sign mismatch. - * elf32-mips.c: Fix misleading comment and typo. - (_bfd_mips_elf_section_from_bfd_section): Remove unused attribute, use - correct data type. - * elflink.c: Fix typo. - (_bfd_elf_create_dynamic_sections): Remove superfluous initialization. - * ecoffswap.h (ecoff_swap_fdr_in): Cast away sign mismatch. - -2001-05-04 Richard Henderson - - * elf64-alpha.c (SREL16, SREL32, SREL64): Set pcrel_offset true. - -2001-05-04 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Set - EF_ARM_HASENTRY if the start address is set. - -2001-05-03 Nick Clifton - - * targets.c (_bfd_target_vector_entries): Compute value based on - the size of the _bfd_target_vector and not bfd_target_vector. - -2001-05-03 H.J. Lu - - * elfcode.h: Include "libiberty.h". - - * elflink.h (elf_link_add_object_symbols): Set - elf_dt_name (abfd) to basename of the bfd filename. - (NAME(bfd_elf,size_dynamic_sections)): Set vn_file to basename - of the bfd filename. - -2001-05-03 Andreas Jaeger - - * elf64-gen.c (elf_generic_info_to_howto): Add unused attribute. - (elf_generic_info_to_howto_rel): Likewise. - * coff-alpha.c (reloc_nil): Likewise. - (alpha_ecoff_bad_format_hook): Likewise. - (alpha_adjust_reloc_out): Likewise. - (alpha_bfd_reloc_type_lookup): Likewise. - (alpha_convert_external_reloc): Likewise. - * elf64-alpha.c (elf64_alpha_reloc_nil): Likewise. - (elf64_alpha_reloc_bad): Likewise. - (elf64_alpha_reloc_gpdisp): Likewise. - (elf64_alpha_bfd_reloc_type_lookup): Likewise. - (elf64_alpha_info_to_howto): Likewise. - (elf64_alpha_add_symbol_hook): Likewise. - (elf64_alpha_create_got_section): Likewise. - (elf64_alpha_is_local_label_name): Likewise. - (elf64_alpha_merge_ind_symbols): Likewise. - * elf64-mips.c (mips_elf64_reloc_type_lookup): Likewise. - (mips_elf64_get_reloc_upper_bound): Likewise. - * nlm32-alpha.c (nlm_alpha_mangle_relocs): Likewise. - (nlm_alpha_get_public_offset): Likewise. - -2001-05-02 Johan Rydberg - - * elf32-openrisc.c (openrisc_elf_howto_table): Do not complain - about overflow in R_OPENRISC_LO_16_IN_INSN and - R_OPENRISC_HI_16_IN_INSN.Index: bfd/elf32-openrisc.c - -2001-04-30 H.J. Lu - - * elf.c (_bfd_elf_link_hash_hide_symbol): Set dynindx to -1 - only for ELF_LINK_FORCED_LOCAL. - * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. - * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise. - * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. - - * elflink.h (elf_fix_symbol_flags): Set ELF_LINK_FORCED_LOCAL - if the symbol has hidden or internal visibility. - -2001-04-30 Alan Modra - - * elf32-hppa.c (final_link_relocate): Branch to .+8 for - calls to undefined weak symbols. - -2001-04-30 Andreas Jaeger , Andreas Schwab - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Correct test for - R_X86_64_GOTPCREL, don't use assignments instead of comparisons. - -2001-04-27 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_finish_dynamic_sections): Only swap - out handled entries. - (elf64_x86_64_finish_dynamic_symbol): Set up GOT entries. - (elf64_x86_64_relocate_section): Fix GOTPCREL calculation. - (elf64_x86_64_relocate_section): Merge entries for GOTPCREL and - GOT32. - -2001-04-27 Sean McNeil - - * config.bfd: Add arm-vxworks target. - * coff-arm (coff_arm_relocate_section): Add in symbol value to - addend (fro VXworks targets). - -2001-04-26 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Verify if r_symndx is - valid. - -2001-04-25 Frank Ch. Eigler - - * bfd-in.h (bfd_cache_close): Declare newly exported function. - * bfd-in2.h: Regenerated. - -2001-04-24 Jakub Jelinek - - * merge.c (struct sec_merge_hash_entry): Add alignment field. - (struct sec_merge_hash): Remove alignment_power. - (sec_merge_hash_newfunc): Clear alignment. - (sec_merge_hash_lookup): Pass alignment as argument. - Use hashp->root.next, not hashp->next to walk the hash chain. - If a string already in the hashtable does not have required - alignment, create a new hashtable entry. - (sec_merge_init): Remove alignment_power argument. - (sec_merge_add): Add alignment argument. - (sec_merge_emit): Alignment is now a per-entity thing, not per - section. - (_bfd_merge_section): Sanity check even non-SEC_STRINGS sections - for proper alignment. - Pass alignment information to sec_merge_add. - -2001-04-24 Christian Groessler - - * coff-z8k.c (extra_case): added handler for R_DISP7, R_CALLR - and R_REL16 reloc types; accept odd values for R_REL16 type - -2001-04-24 Johan Rydberg - - * cpu-openrisc.c: New file. - * elf32-openrisc.c: Likewise. - - * Makefile.am (ALL_MACHINES): Add cpu-openrisc.lo. - (ALL_MACHINES_CFILES): Add cpu-openrisc.c. - (BFD32_BACKENDS): Add elf32-openrisc.lo. - (BFD32_BACKENDS_CFILES): Add elf32-openrisc.c. - (cpu-openrisc.lo, elf32-openrisc.lo): New rules. - * Makefile.in: Regenerated. - * config.bfd: (openrisc-*-elf): New target. - * configure.in (bfd_elf32_openrisc_vec): New vector. - * configure: Regenerated. - * libbfd.h: Regenerated. - * bfd-in2.h: Regenerated. - * reloc.c: Add OpenRISC relocations. - * targets.c (bfd_elf32_openrisc_vec): Declare. - (bfd_target_vect): Add bfd_elf32_openrisc_vec. - * archures.c (enum bfd_architecture): Add bfd_arch_openrisc. - (bfd_openrisc_arch): Declare. - (bfd_archures_list): Add bfd_openrisc_arch. - * elf.c (prep_headers): Add bfd_arch_openrisc. - -2001-04-23 Bo Thorsen - - * elf64-x86-64.c: Add c++ vtable hack. - Small whitespace and comment changes. - -2001-04-19 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_plt0_entry): Fix instructions. - (elf64_x86_64_plt_entry): Likewise. - (elf64_x86_64_finish_dynamic_sections): Fix PLT0 generation. - (elf64_x86_64_finish_dynamic_symbol): Fix PLT generation. - -2001-04-17 Hans-Peter Nilsson - - * elf32-cris.c: Tweak comments related to dynamic linking. - (cris_elf_relocate_section): When not creating shared object, fill - in the .got table for any symbol not in the dynamic symbol table. - (elf_cris_finish_dynamic_symbol): When not creating shared object, - only emit a .got.rela reloc if the symbol is in the dynamic symbol - table. - (cris_elf_check_relocs): Use variable r_type in all places rather - than the original expression. Add default case in switch for - reloc types. - (elf_cris_size_dynamic_sections): Iterate over - elf_cris_discard_excess_program_dynamics when not creating shared - library. - (elf_cris_discard_excess_dso_dynamics): Renamed from - elf_cris_discard_copies. Correct typo, s/Rel/Rela/. - (elf_cris_discard_excess_program_dynamics): New. - -2001-04-14 Mark Elbrecht - - * coffcode.h (coff_write_object_contents): Use - bfd_coff_swap_filehdr_out instead of coff_swap_filehdr_out. - -2001-04-14 H.J. Lu - - * bfd-in2.h: Regenerate. - -2001-04-14 Jakub Jelinek - - * section.c (STD_SECTION): Add entsize. - -2001-04-13 H.J. Lu - - * section.c (SEC_MERGE): Define new flag for merging. - (SEC_STRINGS): Likewise. - (entsize): New field. - -2001-04-13 Roger Sayle - - * coff-i386.c (TARGET_SYM): SEC_READONLY is an applicable section - flag on pe-i386 targets. - -2001-04-13 Jakub Jelinek - - * libbfd-in.h (_bfd_merge_section): New. - (_bfd_write_merged_section): New. - (_bfd_merged_section_offset): New. - * libbfd.h: Rebuilt. - * linker.c (_bfd_generic_link_output_symbols): Handle - discard_sec_merge. - * aoutx.h (aout_link_write_symbols): Likewise. - * pdp11.c (aout_link_write_symbols): Likewise. - * elflink.h (elf_link_add_object_symbols): Call _bfd_merge_section. - (elf_bfd_final_link): Adjust global symbols pointing into SEC_MERGE - sections. - (elf_link_sec_merge_syms): New. - (elf_link_input_bfd): Call _bfd_merged_section_offset - and _bfd_write_merged_section. - Handle discard_sec_merge. - * elf-bfd.h (struct elf_link_hash_table): Add merge_info - field. - (struct bfd_elf_section_data): Likewise. - * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_MERGE and - SEC_STRINGS section flags and entsize from their ELF counterparts. - (_bfd_elf_link_hash_table_init): Initialize merge_info. - (elf_fake_sections): Set SHF_MERGE, SHF_STRINGS and sh_entsize - from their BFD counterparts. - * merge.c: New file. - * Makefile.am: Add strtab.lo. - * Makefile.in: Rebuilt. - -2001-04-09 Hans-Peter Nilsson - - * elflink.h (elf_fix_symbol_flags): For non-default visibilities, - only hide symbols marked STV_INTERNAL or STV_HIDDEN. - -2001-04-05 Steven J. Hill - - * config.bfd (mips*el*-*-linux-gnu*): Use traditional little - endian MIPS ELF target. - * config.bfd (mips*-*-linux-gnu*): Use traditional big endian - MIPS ELF target. - - * configure.in (bfd_elf64_tradbigmips_vec): New. Traditional - 64bit big endian MIPS ELF target. - (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little - endian MIPS ELF target. - * configure: Regenerated. - - * elf32-mips.c (IRIX_COMPAT): Handle traditional 64bit and - little endian targets. - (mips_elf_sym_is_global): Handle traditional targets. - - * elf64-mips.c (bfd_elf64_tradbigmips_vec): New. Traditional - 64bit big endian MIPS ELF target. - (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little - endian MIPS ELF target. - - * targets.c: (_bfd_target_vector): Add bfd_elf64_tradbigmips_vec - and bfd_elf64_tradlittlemips_vec. - -2001-04-05 David Mosberger - - * elf32-i386.c (elf_i386_fake_sections): Treat ".reloc" as an - ordinary "progbits" section. - -2001-04-04 Alan Modra - - * elflink.h (elf_fix_symbol_flags): Call elf_backend_hide_symbol - when -Bsymbolic causes a symbol to no longer need a .plt entry. - -2001-04-03 David Mosberger - - * efi-app-ia32.c (ALIGN_SECTIONS_IN_FILE): Deleted. - -2001-03-30 H.J. Lu - - * efi-app-ia32.c (PEI_TARGET_SUBSYSTEM): Rename from ... - (PEI_DEFAULT_TARGET_SUBSYSTEM): This. - -2001-03-26 H.J. Lu - - * elf32-gen.c (elf32_generic_link_add_symbols): New. Check - if there are any relocations for generic ELF. - (bfd_elf32_bfd_link_add_symbols): Defined to - elf32_generic_link_add_symbols. - * elf64-gen.c (elf64_generic_link_add_symbols): New. Check - if there are any relocations for generic ELF. - (bfd_elf64_bfd_link_add_symbols): Defined to - elf64_generic_link_add_symbols. - -2001-03-23 Nick Clifton - - * Makefile.am (BUILD_CFILES): New variable: List of C source - files created in build directory. - (BUILD_HFILES): New variable: List of header files created in - build directory. - (POTFILES): Delete. - (po/POTFILES.in): Replace rule with empty entry. - (po/SRC-POTFILES.in): New rule: Create a list of source files - in the source directory. - (po/BLD-POTFILES.in): New rule: Create a list of source files - in the build directory. - (MOSTLYCLEAN): Do not delete source files created in build - directory. - * Makefile.in: Regenerate. - * configure.in: Insert SRC-POTFILES.in and BLD-POTFILES.in - into po/Makefile. - * configure: Regenerate. - - * po/Make-in: Replace occurrences of POTFILES with SRC-POTFILES - and BLD_POTFILES. - Add .. to the search path when building bfd.pot. - Delete POTFILES when performing distclean. - Add comment describing why distclean is broken in maintainer mode. - * po/POTFILES.in: Delete. - * po/SRC-POTFILES.in: New file. - * po/BLD-POTFILES.in: New file. - * po/bfd.pot: Regenerate. - -2001-03-22 Hans-Peter Nilsson - - * elf32-cris.c: Shlib and PIC support. PCREL tweaks. - (elf_cris_discard_copies, elf_cris_adjust_gotplt_to_got, - elf_cris_try_fold_plt_to_got, elf_cris_link_hash_newfunc, - elf_cris_link_hash_table_create, elf_cris_adjust_dynamic_symbol, - elf_cris_size_dynamic_sections, elf_cris_finish_dynamic_symbol, - elf_cris_finish_dynamic_sections,elf_cris_hide_symbol): New - functions. - (cris_elf_howto_table) : Correct comments. Set pcrel_offset to false. - : - New HOWTO members for new relocs. - (cris_reloc_map): Map new relocs. - (ELF_DYNAMIC_INTERPRETER): Define. - (PLT_ENTRY_SIZE): Define. - (elf_cris_plt0_entry, elf_cris_plt_entry, elf_cris_pic_plt0_entry, - elf_cris_pic_plt_entry): New, PLT templates. - (struct elf_cris_pcrel_relocs_copied, struct - elf_cris_link_hash_entry, struct elf_cris_link_hash_table): New. - (elf_cris_link_hash_traverse, elf_cris_hash_table): Define. - (cris_final_link_relocate): Check that 16-bit GOT relocs have - positive values. Adjust PCREL relocs to be relative to location - after relocation. - (cris_elf_relocate_section): Handle relocations to dynamic - objects. Handle new relocations. Call error handler when seeing - non-PIC relocation for read-only sections while generating shared - object. - (cris_elf_check_relocs): Set reference counts for GOT and PLT - entries. - (bfd_elf32_bfd_link_hash_table_create, - elf_backend_adjust_dynamic_symbol, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, - elf_backend_create_dynamic_sections, bfd_elf32_bfd_final_link, - elf_backend_hide_symbol, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): - Define. - - * reloc.c: (BFD_RELOC_CRIS_COPY, BFD_RELOC_CRIS_GLOB_DAT, - BFD_RELOC_CRIS_JUMP_SLOT, BFD_RELOC_CRIS_RELATIVE, - BFD_RELOC_CRIS_32_GOT, BFD_RELOC_CRIS_16_GOT, - BFD_RELOC_CRIS_32_GOTPLT, BFD_RELOC_CRIS_16_GOTPLT, - BFD_RELOC_CRIS_32_GOTREL, BFD_RELOC_CRIS_32_PLT_GOTREL, - BFD_RELOC_CRIS_32_PLT_PCREL): New relocs. - * bfd-in2.h, libbfd.h: Regenerate. - -2001-03-21 Diego Novillo - - (_bfd_mips_elf_relocate_section): Give a better error message when - a relocation is not recognized. - -2001-03-21 Alan Modra - - * elf32-hppa.c (elf32_hppa_set_gp): Check sec->output_section - non-NULL before attempting to dereference. - -2001-03-20 H.J. Lu - - * configure.in: Remove the redundent AC_ARG_PROGRAM. - * configure: Rebuild. - -2001-03-20 Andreas Schwab - - * elf32-m68k.c (elf_m68k_relocate_section): Don't need the - relocation value when resolving a reference from a debugging - section. - -2001-03-16 Scott Thomason - - * coff64-rs6000.c (xcoff64_swap_sym_out): Fix syntax errors. - (xcoff64_swap_sym_out): Fix syntax errors. - -2001-03-16 Richard Sandiford - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix warning. - -2001-03-15 Alan Modra - - * elf32-hppa.c (elf32_hppa_link_hash_entry): Add maybe_pic_call. - (hppa_link_hash_newfunc): Init it. - (hppa_type_of_stub): Only use non-PIC to PIC call stub if caller - section appears to be non-PIC. - (final_link_relocate): Likewise. - (elf32_hppa_adjust_dynamic_symbol): Set maybe_pic_call for any - possible candidate function, and set pic_call for those that will - only have a .plt entry for the PIC call stub. - (hppa_handle_PIC_calls): Set maybe_pic_call. - -2001-03-12 DJ Delorie - - * elf32-sh.c (sh_elf_relocate_section): Only relocation - R_SH_DIR8WP* relocs if they're against external symbols, else - they're just for relaxing. Validate the reloc values. - -2001-03-12 Stefan Geuken - - * binary.c (bfd_external_binary_architecture): Declare. - (binary_object_p): If bfd_external_binary_architecture is defined, - set the architecture to this string. - -2001-03-11 Philip Blundell - - * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT - entries that could serve as a definition for a weak symbol. - -2001-03-08 Nick Clifton - - * Most files: Update copyright notices using Perl script created - by Kevin Buettner . - -2001-03-07 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Conditionalise - prior patch on ! defined OLD_ARM_ABI. - -2001-03-07 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix handling of - some relocation values. - -2001-03-06 Nick Clifton - - * elf32-arm.h (elf32_arm_final_link_relocate): Clear bit zero - of offset in BLX(1) instruction. - * coff-arm.c (coff_arm_relocate_section): Clear bit zero of - offset in BLX(1) instruction. - Fix formatting. - -2001-03-06 Nick Clifton - - * coff-arm.c (coff_arm_reloc_type_lookup): Add - BFD_RELOC_THUMB_PCREL_BLX. - -2001-03-06 Igor Shevlyakov - - * archures.c (bfd_default_scan): Add Coldfire CPUs. - * bfd-in2.h: Regenerate. - * cpu-m68k.c: Add Coldfire CPUs for arch table. - * ieee.c (ieee_write_processor): Set proper id for - Coldfire CPUs. - -2001-03-01 D.J. Barrow - - * configure.in: Add s390 target. - * configure: Regenerate. - -2001-02-28 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_relocate_section): Add relocation - to addend. - -2001-02-28 Philip Blundell - - * elf32-arm.h: Update mentions of renamed EF_xx constants. - (elf32_arm_print_private_bfd_data): Handle ARM EABI version 2. - -2001-02-27 H.J. Lu - - * aoutx.h (NAME(aout,bfd_free_cached_info)): Return true if - abfd->tdata.aout_data == NULL. - -2001-02-27 Alan Modra - - * elf32-hppa.c: Correct field selector in stub comments. - (clobber_millicode_symbols): Formatting fix. - - * configure.in: Bump version to 2.11.90. - * configure: Regenerate. - * Makefile.am (CFILES): Rename to SOURCE_CFILES. - (CFILES): $SOURCE_CFILES + generated C files. - (POTFILES): Include $HFILES not $SOURCE_HFILES. - Run "make dep-am" - * Makefile.in: Regenerate. - * doc/Makefile.in: This too. - -2001-02-26 Timothy Wall - - * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Remove obsolete - comments. - -2001-02-26 Nick Clifton - - * coffcode.h (styp_to_sec_flags) [COFF_WITH_PE version]: Tidy - up, replacing multiple if statements with a switch. - (handle_COMDAT): New function. - -2001-02-26 H.J. Lu - - * coffcode.h (styp_to_sec_flags) [COFF_WITH_PE version]: Issue - a warning for section flags we do not handle instead of - aborting. - -2001-02-26 Andreas Jaeger - - * elf64-x86-64.c (x86_64_elf_howto_table): Fix order of entries. - -2001-02-22 Timothy Wall - - * config.bfd (targ_cpu): Add vectors for ia64-*-aix* (aka Monterey). - * configure.in: Add objects for elf64_ia64_aix vectors. - * configure: Regenerated. - * configure.host: Recognize ia64-*-aix*. - * elfxx-ia64.c: Add hooks for ELF64 on AIX5. Define new vectors - for AIX. AIX5 requires most relocations to be dynamic (*all* - binaries are somewhat similar to shared libraries). - * targets.c: Add elf64_ia64_aix vectors. - -2001-02-21 David Mosberger - - * cpu-ia64-opc.c (elf64_ia64_operands}: Fix typo: error string for - C8 said "1" instead of "8". Clarify error string for IMM22: - "signed integer" instead of just "integer". - -2001-02-20 Andreas Jaeger - - * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Don't make - PLT entries that could serve as a definition for a weak symbol. - -2001-02-19 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_finish_dynamic_symbol): Don't make PLT - entries that could serve as a definition for a weak symbol. - * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Likewise. - -2001-02-18 David O'Brien - - * configure.in: Recognize FreeBSD/arm, FreeBSD/PowerPC, and treat - FreeBSD/i386-CURRENT differently until I can figure out the needed - corefile changes. - * configure: Regenerate. - * config.bfd: Recognize FreeBSD/x86-64, FreeBSD/ia64, FreeBSD/arm, - FreeBSD/PowerPC, and FreeBSD/sparc64. - -2001-02-18 lars brinkhoff - - * Makefile.am: Add PDP-11 a.out target. - * config.bfd: Likewise. - * configure.in: Likewise. - * targets.c: Likewise. - * archures.c: Likewise. - * bfd-in2.h: Likewise. Add PDP-11 relocations. - * libbfd.h: Add PDP-11 relocations. - * reloc.c: Likewise. - * cpu-pdp11.c: New file. - * pdp11.c: New file. - - * libaout.h (GET_WORD) [ARCH_SIZE==16]: Define. - (GET_SWORD) [ARCH_SIZE==16]: Likewise. - (GET_SWORD) [ARCH_SIZE==16]: Likewise. - (PUT_WORD) [ARCH_SIZE==16]: Likewise. - (GET_MAGIC): New macro. - (PUT_MAGIC): Likewise. - * aout-target.h (MY(object_p)): Use GET_MAGIC to read magic word. - -2001-02-18 Jim Kingdon - - * irix-core.c (irix_core_core_file_p): Set the architecture (GDB - multiarch needs it). - -2001-02-18 H.J. Lu - - * elflink.h (elf_link_input_bfd): Ignore invalid section symbol - index. - -2001-02-18 Kazu Hirata - - * vms-misc.c: Fix formatting. - -2001-02-16 Kazu Hirata - - * vms.c: Fix formatting. - -2001-02-14 H.J. Lu - - * elf.c (elf_find_function): New function. - (_bfd_elf_find_nearest_line): Call elf_find_function () to find - the file name and function name. - -2001-02-14 Nick Clifton - - * ecoff.c (bfd_debug_section): Update to initialise new fields in - asection structure. - - * Makefile.am (BFD32_BACKENDS_CFILES): Remove peigen.c - (BFD64_BACKENDS): Add pepigen.c - Add rules to create peigen.c and pepigen.c from peXXigen.c. - - * Makefile.in: Regenerate. - * configure: Regenerate. - * po/POTFILES.in: Regenerate. - * po/bfd.pot: Regenerate. - -2001-02-14 H.J. Lu - - * libcoff-in.h (pe_tdata): Add members target_subsystem and - force_minimum_alignment. - -2001-02-14 Bo Thorsen - - * elf64-x86-64.c: Small formatting fixes and rearrangements of code. - (elf64_86_64_size_info): Struct added to fix a problem - with the hashtable string entries. - (elf64_x86_64_adjust_dynamic_symbol): Add generation of .got.plt. - (elf64_x86_64_size_dynamic_sections): A FIXME removed. - (elf64_x86_64_size_dynamic_sections): Fix a dynamic entry and - remove the FIXME for this. - (elf64_x86_64_adjust_dynamic_symbol): Fix check for unneeded .plt - section. Also removed the FIXME for it. - (x86_64_elf_howto_table): Use bfd_elf_generic_reloc. - (ELF_DYNAMIC_INTERPRETER): Fix the name of the dynamic linker. - (elf64_x86_64_finish_dynamic_sections): Enable .got.plt writing. - -2001-02-13 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_final_link): Set __gp if required - and not user provided. - -2001-02-13 Kazu Hirata - - * vms.c (vms_print_symbol): Remove unreachable code. - - * rs6000-core.c: Fix formatting. - -2001-02-13 David Mosberger - - * peicode.h (coff_swap_filehdr_out) [COFF_IMAGE_WITH_PE]: Define - as _bfd_XXi_only_swap_filehdr_out. - (pe_mkobject) [PEI_FORCE_MINIMUM_ALIGNMENT]: Set - pe->force_minimum_alignment to TRUE. - (pe_mkobject) [PEI_TARGET_SUBSYSTEM]: Set pe->target_subsystem to - PEI_TARGET_SUBSYSTEM. - (pe_print_private_bfd_data): Call - _bfd_XX_print_private_bfd_data_common() instead of - _bfd_pe_print_private_bfd_data_common(). - (pe_bfd_copy_private_bfd_data): Call - _bfd_XX_bfd_copy_private_bfd_data_common() instead of - _bfd_pe_bfd_copy_private_bfd_data_common(). - (coff_bfd_copy_private_section_data): Define as - _bfd_XX_bfd_copy_private_section_data instead of - _bfd_pe_bfd_copy_private_section_data. - (coff_get_symbol_info): Define as _bfd_XX_get_symbol_info instead - of a _bfd_pe_get_symbol_info. - - * peigen.c: Delete. - - * peXXigen.c: Renamed from peigen.c. - (COFF_WITH_XX): Define this macro (will get expanded into - COFF_WITH_pep or COFF_WITH_pe, depending on whether this is being - compiled as peigen.c or pepigen.c. - [COFF_WITH_pep]: Include "coff/ia64.h" instead of "coff/i386.h" to - define the canonical PEP structures and definitions. - (_bfd_XXi_swap_aouthdr_out): If pe->force_minimum_alignment is in - effect, enforce minimum file and section alignments. If - extra->Subsystem is IMAGE_SUBSYSTEM_UNKNOWN, set it to - pe->target_subsystem (this defaults to IMAGE_SUBSYSTEM_UNKNOWN, - so, by default, this is a no-op). - - * libpei.h: Rename COFF_WITH_PEP to COFF_WITH_pep. - (_bfd_XX_bfd_copy_private_bfd_data_common): Add macros to map - _bfd_XXfoo to _bfd_pepfoo if COFF_WIT_PEP is defined and to - _bfd_pefoo if it's not defined. Use these macros to define - coff swap macros. - - * libcoff.h (pe_tdata): Add members target_subsystem and - force_minimum_alignment. - - * efi-app-ia64.c (COFF_WITH_pep): Rename COFF_WITH_PEP to - COFF_WITH_pep. - (PEI_TARGET_SUBSYSTEM): Rename from PEI_DEFAULT_TARGET_SUBSYSTEM. - - * configure.in (bfd_efi_app_ia64_vec): Use pepigen.lo instead of - peigen.lo. - - * coff-ia64.c: Rename COFF_WITH_PEP to COFF_WITH_pep. - (AOUTSZ): Rename PEP64AOUTSZ and PEP64AOUTHDR to PEPAOUTSZ and - PEPAOUTHDR. - - * Makefile.in (BFD64_BACKENDS): Mention pepigen.lo. - (BFD64_BACKENDS_CFILES): Mention pepigen.c - (peigen.c): Add rule to generate from peXXigen.c. - (pepigen.c): Ditto. - (pepigen.lo): List dependencies for pepigen.lo. - -2001-02-13 Alan Modra - - * elf32-hppa.c (elf32_hppa_set_gp): Handle weak $global$. If - $global$ referenced but not defined, set its value here. - -2001-02-09 Bo Thorsen - - * elf64-x86-64.c (elf64_x86_64_check_relocs): Set .rela.got section - alignment to 3. - (elf64_x86_64_check_relocs): Write R_X86_64_GOTPCREL GOT entry - and relocation. - (elf64_x86_64_relocate_section): Fix formatting. - (elf64_x86_64_relocate_section): Fix addend for relocation of - R_X86_64_(8|16|32|PC8|PC16|PC32). - -2001-02-12 Jan Hubicka - - * elf64-x86-64.c (x86_64_elf_howto): Fix name of R_X86_64_GOTPCREL. - -2001-02-11 H.J. Lu - - * elflink.h (elf_bfd_final_link): Use file_align for SYMTAB - alignment. - -2001-02-11 Maciej W. Rozycki - - * elf32-mips.c (mips_elf_create_dynamic_relocation): Undo patch - from 2000-10-13. Do not add the symbol's value for R_MIPS_REL32 - relocations against dynsym symbols. - - * elf32-mips.c (elf_mips_howto_table): Fix the comment on - the R_MIPS_26 relocation. - (mips_elf_calculate_relocation): Use (p + 4) instead of p for - the R_MIPS_26 relocation. - (mips_elf_perform_relocation): Fix the comment on the R_MIPS16_26 - relocation. - * elf64-mips.c (mips_elf64_howto_table_rel): Fix the comment on - the R_MIPS_26 relocation. - (mips_elf64_howto_table_rela): Likewise. - - * elf32-mips.c (struct mips_elf_link_hash_entry): Added no_fn_stub - member to mark symbols that have non-CALL relocations against - them. - (mips_elf_link_hash_newfunc): Initialize no_fn_stub. - (mips_elf_calculate_relocation): Handle R_MIPS_CALL16 like - R_MIPS_GOT16. - (_bfd_mips_elf_check_relocs): Set no_fn_stub for a symbol if a - non-CALL relocation against it is encountered. - (_bfd_mips_elf_copy_indirect_symbol): Merge no_fn_stub as well. - (_bfd_mips_elf_adjust_dynamic_symbol): Only create a stub if - no_fn_stub is not set. - - * elf32-mips.c (mips_elf_output_extsym): Get the output section - information from the real symbol for indirect ones. - Check no_fn_stub to find out if a symbol has a function stub - indeed. - -2001-02-11 Michael Sokolov - - * Makefile.am (stamp-lib): ranlib the libbfd.a in the build directory. - * Makefile.in: Regenerate. - -2001-02-09 David Mosberger - - * elfxx-ia64.c (is_unwind_section_name): New function. Returns - true if section name is an unwind table section name. - (elfNN_ia64_additional_program_headers): Count each unwind section - separately. - (elfNN_ia64_modify_segment_map): Install one unwind program header - for each unwind separate section. Note: normally the linker - script merges the unwind sections that go into a single segment, - so this still generates at most one unwind program header per - segment. - - * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Accept any section - name for SHT_IA_64_UNWIND, not just .IA_64.unwind. - (elfNN_ia64_fake_sections): Mark sections with names that start - with .IA_64.unwind but not with .IA_64.unwind_info as an IA-64 - unwind section. - - * elfxx-ia64.c (elfNN_ia64_final_write_processing): New function. - Use it to make sh_info in unwind section point to the text section - it applies to. - -2001-02-09 Martin Schwidefsky - - * Makefile.am: Add linux target for S/390. - * archures.c: Likewise. - * bfd-in2.h: Likewise. - * config.bfd: Likewise. - * configure.in: Likewise. - * elf.c: Likewise. - * libbfd.h: Likewise. - * targets.c: Likewise. - * cpu-s390.c: New file. - * elf32-s390.c: New file. - * elf64-s390.c: New file. - -2001-02-09 Nick Clifton - - * peigen.c (_bfd_pe_get_symbol_info): Suppress addition of - ImageBase. This has already been done by coff_swap_hdr_in. - -2001-02-09 Jakub Jelinek - - * elf64-sparc.c (sparc64_elf_copy_private_bfd_data): New function. - -2001-02-09 Jakub Jelinek - - * elf64-sparc.c (sparc64_elf_check_relocs): Don't trust reloc_count. - (sparc64_elf_relocate_section): Likewise. - -2001-02-09 Mark Kettenis - - * elf32-sparc.c (_bfd_sparc_elf_howto_table): Treat R_SPARC_UA32 - similar to R_SPARC_32. - * elf64-sparc.c (sparc64_elf_howto_table): Likewise. - -2001-02-08 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Reserve R_386_PC32 - relocation entries for weak definitions when building DSO with - -Bsymbolic. - -2001-02-08 Richard Henderson - - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Respect weakness - before visibility. Locally defined protected symbols are not - dynamic. - -2001-02-08 Geoffrey Keating - - * config.bfd: Enable coff64 for rs6000-*. Patch from - . - -2001-02-07 Mark Elbrecht - - * coffgen.c (coff_find_nearest_line): If stabs info is successfully - found, do not attempt to find dwarf2 info before returning. - -2001-02-07 Jakub Jelinek - - * elflink.h (is_global_symbol_definition): Rename to - is_global_data_symbol_definition and have it reject function - symbols. - (elf_link_is_defined_archive_symbol): Use renamed function. - -2001-02-07 Todd Vierling - - * libbfd-in.h (bfd_target_vector): Change extern array to pointer. - * libbfd.h (bfd_target_vector): Likewise. - * targets.c (bfd_target_vector): Rename to _bfd_target_vector and - make static; create pointer reference named bfd_target_vector. - (_bfd_target_vector_entries): Calculate this based on the array - typed _bfd_target_vector. - -2001-02-06 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Only hidden and - internal symbols are not dynamic. - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise. - -2001-02-06 Nick Clifton - - * Makefile.am (BFD64_BACKENDS_CFILES): Remove elf64-ia64.c, so - that it will not be pulled into the list of files that make up - po/POTFILES.in. - * Makefile.in: Regenerate. - * po/bfd.pot: Regenerate. - -2001-02-06 H.J. Lu - - * peicode.h (coff_swap_filehdr_in): Remove the e_magic - checking. - (pe_bfd_object_p): Rewrite with external_PEI_DOS_hdr and - external_PEI_IMAGE_hdr. - -2001-02-06 Kazu Hirata - - * elf-m10200.c: Fix formatting. - -2001-02-04 Nick Clifton - - * elf32-v850.c (v850_elf_reloc): Do not convert reloc addend to PC - rel, it will be handled later on. - -2001-02-02 Fred Fish - - * Makefile.in: Fix typo. - -2001-02-01 Kazu Hirata - - * elf-m10300.c: Fix formatting. - -2001-01-30 Alan Modra - - * elf64-hppa.c (elf64_hppa_elf_get_symbol_type): New function. - (elf_backend_get_symbol_type): Define. - (elf64_hppa_object_p): Set architecture and machine from elf - header flags. - -2001-01-30 Curtis L. Janssen - - * elf64-alpha.c (elf64_alpha_find_nearest_line): Query dwarf2 - before mdebug. - -2001-01-26 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Return false - for non-default visibility. - * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise, but - delete ugly macro and replace with pretty function. - -2001-01-25 Mark Elbrecht - - * coff-go32.c: Update copyright. - * coff-stgo32.c: Likewise. - * coff-go32.c (COFF_LONG_FILENAMES): Define. - * coff-stgo32.c (COFF_LONG_FILENAMES): Likewise. - * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Remove .bss entry. - * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. - -2001-01-25 Kazu Hirata - - * bfd-in2.h: Rebuild. - * libbfd.h: Likewise. - -2001-01-23 H.J. Lu - - * bfd-in2.h: Rebuild. - -2001-01-23 H.J. Lu - - * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_buf) - is NULL or PRIV(vms_rec) is outside of the buffer. - -2001-01-23 Kazu Hirata - - * coff64-rs6000.c: Fix formatting. - * coff-arm.c: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - * coff-mcore.c: Likewise. - * coff-mips.c: Likewise. - * coff-pmac.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * elf32.c: Likewise. - * elf32-fr30.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i860.c: Likewise. - * elf32-m32r.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-sparc.c: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elf-m10200.c: Likewise. - * elf-m10300.c: Likewise. - * elfxx-ia64.c: Likewise. - - * aoutx.h: Fix formatting. - * bfd.c: Likewise. - * bfd-in2.h: Likewise. - * bfd-in.h: Likewise. - * cpu-i386.c: Likewise. - * cpu-m68hc11.c: Likewise. - * dwarf2.c: Likewise. - * elf64-x86-64.c: Likewise. - * format.c: Likewise. - * freebsd.h: Likewise. - * hash.c: Likewise. - * hp300hpux.c: Likewise. - * hppabsd-core.c: Likewise. - * hpux-core.c: Likewise. - -2001-01-22 Bo Thorsen - - * elf64-x86-64.c: Added PIC support for X86-64. - (elf64_x86_64_link_hash_newfunc): Function added. - (elf64_x86_64_link_hash_table_create): Likewise. - (elf64_x86_64_check_relocs): Likewise. - (elf64_x86_64_gc_mark_hook): Likewise. - (elf64_x86_64_gc_sweep_hook): Likewise. - (elf64_x86_64_adjust_dynamic_symbol): Likewise. - (elf64_x86_64_size_dynamic_sections): Likewise. - (elf64_x86_64_discard_copies): Likewise. - (elf64_x86_64_finish_dynamic_symbol): Likewise. - (elf64_x86_64_finish_dynamic_sections): Likewise. - (elf64_x86_64_relocate_section): Add relocation of PIC sections. - -2001-01-21 Maciej W. Rozycki - - * Makefile.am (install-data-local): Make use of $(DESTDIR). - * Makefile.in: Regenerate. - -2001-01-21 Kazu Hirata - - * coff-a29k.c: Fix formatting. - -2001-01-19 H.J. Lu - - * elf32-i386.c (elf_i386_check_relocs): Report files with bad - relocation section names. - (elf_i386_relocate_section): Report files with bad relocation - section names and return false. - -2001-01-17 Bo Thorsen - - * targets.c: Alphabetize list of xvecs. - -2001-01-14 Alan Modra - - * config.bfd: Add linux target variant for elfxx-hppa. - * configure.in: Recognize bfd_elf32_hppa_linux_vec and - bfd_elf64_hppa_linux_vec. - * configure: Regenerate. - * elf64-hppa.c: Include elf64-target.h again to support linux - target variant. - (elf64_hppa_post_process_headers): Set ELFOSABI_LINUX for linux. - * elf32-hppa.c: Include elf32-target.h again to support linux - target variant. - (elf32_hppa_post_process_headers): New function. - (elf_backend_post_process_headers): Define. - * targets.c (bfd_target_vector): Add bfd_elf64_hppa_linux_vec and - bfd_elf32_hppa_linux_vec. - - * elf32-hppa.c (elf32_hppa_link_hash_table): Add text_segment_base, - and data_segment_base fields. - (elf32_hppa_link_hash_table_create ): Init them. - (elf32_hppa_check_relocs): Update comments. - (hppa_record_segment_addr): New function. - (elf32_hppa_relocate_section): Call it. - (final_link_relocate): Handle R_PARISC_SEGREL32. - (elf32_hppa_final_link): New function. - (bfd_elf32_bfd_final_link): Define to call it. - (hppa_unwind_entry_compare): New function. - * cache.c (bfd_open_file): Create files in write+read mode. - - * elf-hppa.h (elf_hppa_howto_table): Set bitsize value for - SEGREL32 and numerous other relocs. Change duplicate - R_PARISC_NONE relocs to R_PARISC_UNIMPLEMENTED. - - * opncls.c (bfd_fdopenr): Add parens like the comment says around - O_ACCMODE. - - * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Don't create - .plt entries for DT_INIT and DT_FINI. - (elf32_hppa_finish_dynamic_sections): Remove special handling of - DT_INIT and DT_FINI. - - * elf64-hppa.c (elf64_hppa_finish_dynamic_symbol): Use 16-bit - offsets for stub .plt access if wide mode. Check offset in range. - -2001-01-13 Nick Clifton - - * elf32-fr30.c (fr30_elf_howto_table): Remove spurious blank - line. - - * coffcode.h (coff_canonicalize_reloc): Remove spurious blank - line. - -2001-01-12 Alan Modra - - * configure.in ([bfd_elf64_x86_64_vec]): Set target64. - * configure: Regenerate. - -2001-01-11 Peter Targett - - * bfd-in2.h (bfd_architecture): Add bfd_mach_arc_5, - bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8 for ARC variants. - * cpu-arc.c (arch_info_struct): Add entries for variants. - (bfd_arc_arch) Set default to bfd_mach_arc_5. - (arc_get_mach) Don't assume machine names prefixed arc- before - testing. - * elf32-arc.c (arc_elf_object_p): Set machine number based on new - selections. - (arc_elf_final_write_processing) Likewise. - (ELF_MACHINE_CODE) Use EM_ARC. - -2001-01-10 Nick Clifton - - * coff-arm.c (LOCAL_LABEL_PREFIX): Change definition to "". - -2001-01-07 Philip Blundell - - * README: Replace `bug-gnu-utils@gnu.org' with - `bug-binutils@gnu.org'. - -2001-01-04 Kazu Hirata - - * som.c: Fix formatting. - -2001-01-03 Kazu Hirata - - * ecoffswap.h: Fix formatting. - * elf-bfd.h: Likewise. - * elfarm-nabi.c: Likewise. - * elfarm-oabi.c: Likewise. - * elfcode.h: Likewise. - * elfcore.h: Likewise. - * elflink.c: Likewise. - * elflink.h: Likewise. - * elfxx-ia64.c: Likewise. - * elfxx-target.h: Likewise. - * libbfd.c: Likewise - * linker.c: Likewise. - * lynx-core.c: Likewise. - -2001-01-02 Kazu Hirata - - * pc532-mach.c: Fix formatting. - * pe-arm.c: Likewise. - * pe-i386.c: Likewise. - * pe-mips.c: Likewise. - * pe-ppc.c: Likewise. - * pe-sh.c: Likewise. - * pei-mips.c: Likewise. - * pei-sh.c: Likewise. - * peicode.h: Likewise. - * ppcboot.c: Likewise. - * ptrace-core.c: Likewise. - -2001-01-01 Kazu Hirata - - * reloc.c: Fix formatting. - * riscix.c: Likewise. - * rs6000-core.c: Likewise. - * xcoff-target.h: Likewise. - -2000-12-29 Hans-Peter Nilsson - - * elfcode.h (elf_object_p): Also restore the bfd mach field on - error, by calling bfd_default_set_arch_mach with incoming - values. - -2000-12-26 Kazu Hirata - - * vaxnetbsd.c: Fix formatting. - * versados.c: Likewise. - * vms-gsd.c: Likewise. - * vms-hdr.c: Likewise. - * vms-misc.c: Likewise. - -2000-12-25 Alexandre Oliva - - * archive.c (coff_write_armap): Don't write more than symbol_count - `archive_member_file_ptr's. - -2000-12-25 Kazu Hirata - - * vms-tir.c: Fix formatting. - -2000-12-23 Kazu Hirata - - * vms.c: Fix formatting. - * vms.h: Likewise. - -2000-12-21 Santeri Paavolainen - - * vms-hdr.c: Include alloca.h if HAVE_ALLOCA_H is defined. - - * peicode.h (pe_ILF_object_p): Add const to import of TARGET_LITTLE_SYM. - - * elf32-m32r.c (m32r_elf_generic_reloc): Add cast to avoid (void *) - arithmetic. - - * elf32-fr30.c: Add casts to avoid (void *) arithmetic. - - * coffcode.h (styp_to_sec_flags): Add empty statement after label. - -2000-12-21 Richard Sandiford - - * libbfd.c (bfd_get_bits): Added - (bfd_put_bits): Likewise - * bfd-in.h: Declared the above. - * bfd-in2.h: Regenerated. - -2000-12-20 Kazu Hirata - - * targets.c: Fix formatting. - * tekhex.c: Likewise. - * trad-core.c: Likewise. - -2000-12-19 Kazu Hirata - - * sco5-core.c: Fix formatting. - * section.c: Likewise. - * sparclinux.c: Likewise. - * sparclynx.c: Likewise. - * sparcnetbsd.c: Likewise. - * srec.c: Likewise. - * stabs.c: Likewise. - * stab-syms.c: Likewise. - * sunos.c: Likewise. - * syms.c: Likewise. - * sysdep.h: Likewise. - -2000-12-18 Nick Clifton - - * coff-arm.c (EXTRA_S_FLAGS): Only define if not already - defined. - * epoc-pe-arm.c (EXTRA_S_FLAGS): Define. - * epoc-pei-arm.c (EXTRA_S_FLAGS): Define. - -2000-12-18 Nick Clifton - - * vms-misc.c (_bfd_vms_get_record): Add default case to - file_format switch. - -2000-12-15 Miloslav Trmac - - * elfcore.h (elf_core_file_p): Move to the start of the program - headers before attempting to read them. - -2000-12-14 Kazu Hirata - - * peigen.c: Fix formatting. - * som.c: Likewise. - * som.h: Likewise. - -2000-12-13 Kazu Hirata - - * peigen.c: Fix formatting. - -2000-12-12 Jim Wilson - - * elfxx-ia64.c (get_dyn_sym_info): Cast %p argument to void *. - -2000-12-08 Mark Salter - - * binary.c (binary_set_section_contents): Ignore sections - with zero size. - -2000-12-12 Kazu Hirata - - * m68klinux.c: Fix formatting. - * m68knetbsd.c: Likewise. - * mipsbsd.c: Likewise. - * netbsd-core.c: Likewise. - * netbsd.h: Likewise. - * newsos3.c: Likewise. - * nlm32-alpha.c: Likewise. - * nlm32-i386.c: Likewise. - * nlm32-ppc.c: Likewise. - * nlm32-sparc.c: Likewise. - * nlmcode.h: Likewise. - * nlmswap.h: Likewise. - * nlm-target.h: Likewise. - * ns32knetbsd.c: Likewise. - -2000-12-10 Fred Fish - - * elflink.h (elf_link_output_extsym): Don't complain about undefined - symbols in shared objects if allow_shlib_undefined is true. - -2000-12-12 Nick Clifton - - * cpu-sh.c: Fix formattng. - * elf.c: Fix formattng. - * elf32-mips.c: Fix formattng. - * elf32-sh.c: Fix formattng. - * elf64-alpha.c: Fix formattng. - -2000-12-09 Nick Clifton - - * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Pass - dwarf2_find_line_info as last parameter to invocation of - _bfd_dwarf2_find_nearest_line. - * elf32-arm.h (elf32_arm_find_nearest_line): Pass - dwarf2_find_line_info as last parameter to invocation of - _bfd_dwarf2_find_nearest_line. - -2000-12-08 Mark Elbrecht - - * Makefile.am (BFD32_BACKENDS): Move dwarf2.lo from here... - (BFD_LIBS): ...to here. - (BFD32_BACKENDS_CFILES): Move dwarf2.c from here... - (BFD_LIBS_CFILES): ...to here. - * Makefile.in: Regenerate. - * configure.in: Remove dwarf.lo from the elf shell variable. - * configure: Regenerate. - * libcoff-in.h (coff_tdata): Add pointer dwarf2_find_line_info. - * libcoff.h: Regenerate. - * coffgen.c (coff_find_nearest_line): Call - _bfd_dwarf2_find_nearest_line. - * dwarf2.c (_bfd_dwarf2_find_nearest_line): Add parameter. Update - accordingly. - (read_abbrevs): Likewise - (decode_line_info): Likewise. - (parse_comp_unit): Likewise. - (comp_unit_find_nearest_line): Likewise. - * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype. - * libbfd.h: Regenerate. - * elf.c (_bfd_elf_find_nearest_line): Update call. - * elf-bfd.h (elf_obj_tdata): Change dwarf2_find_line_info to type PTR. - * dwarf2.c (concat_filename): Use IS_ABSOLUTE_PATH. - * coffcode.h (STYP_XCOFF_DEBUG, STYP_DEBUG_INFO): New macros. - (sec_to_styp_flags): Use them. Handle DWARF2 sections. - (styp_to_sec_flags): Handle DWARF2 sections. - * elf32-arm.h (elf32_arm_find_nearest_line): Add parameter to call - to _bfd_find_nearest_line. - * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Add parameter to - call to _bfd_find_nearest_line. - -2000-12-08 Kazu Hirata - - * coffgen.c: Fix formatting. - * elf-m10300.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i960.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-ppc.c: Likewise. - * elf32-sh.c: Likewise. - * elf32-sparc.c: Likewise. - * elf32-v850.c: Likewise. - * elf64-alpha.c: Likewise. - * elf64-hppa.c: Likewise. - * elf64-mips.c: Likewise. - * elf64-sparc.c: Likewise. - -2000-12-07 Kazu Hirata - - * elf32-ppc.c: Fix formatting. - * elf64-x86-64.c: Likewise. - -2000-12-06 Ulf Carlsson - - From Ralf Baechle - - * elf32-mips.c (elf32_mips_merge_private_bfd_data): Always permit - BFDs containing no sections or empty .text, .data or .bss sections - to be merged, regardless of their flags. - -2000-12-06 Kazu Hirata - - * elf32-m32r.c: Fix formatting. - * elf32-m68hc11.c: Likewise. - * elf32-m68hc12.c: Likewise. - * elf32-m68k.c: Likewise. - * elf32-mcore.c: Likewise. - * elf32-pj.c: Likewise. - * elf32-ppc.c: Likewise. - -2000-12-05 Kazu Hirata - - * elf32-fr30.c: Fix formatting. - * elf32-hppa.c: Likewise. - * elf32-i370.c: Likewise. - * elf32-i386.c: Likewise. - * elf32-i860.c: Likewise. - * elf32-i960.c: Likewise. - -2000-12-03 Kazu Hirata - - * elf32-arm.h: Fix formatting. - * elf32-avr.c: Likewise. - * elf32-cris.c: Likewise. - * elf32-d10v.c: Likewise. - * elf32-d30v.c: Likewise. - * elf-hppa.h: Likewise. - * elf-m10200.c: Likewise. - * elf-m10300.c: Likewise. - -2000-12-01 Chris Demetriou - - * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mips32 and - bfd_mach_mips32_4k. Update FIXME comment. - * archures.c (bfd_mach_mips32): New constant. - (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to - the latter, renumber it. - * bfd-in2.h (bfd_mach_mips32): New constant. - (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to - the latter, renumber it. - * cpu-mips.c (I_mips32): New constant. - (I_mips4K, I_mips32_4k): Rename the former to the latter. - (arch_info_struct): Add bfd_mach_mips32 entry, replace - bfd_mach_mips4K entry with bfd_mach_mips32_4k entry. - * elf32-mips.c (elf_mips_isa): Add E_MIPS_ARCH_32 case. - (elf_mips_mach): Likewise. Also, replace E_MIPS_MACH_MIPS32 - with E_MIPS_MACH_MIPS32_4K. - (_bfd_mips_elf_final_write_processing): Replace - bfd_mach_mips4K with bfd_mach_mips32_4k case, add - bfd_mach_mips32 case. - (_bfd_mips_elf_merge_private_bfd_data): Generalize ISA mixing - comparison with support for MIPS32. - (_bfd_mips_elf_print_private_bfd_data): Print ISA name for - MIPS32. - - * aoutx.h (NAME(aout,machine_type)): Add cases for - bfd_mach_mips5 and bfd_mach_mips64. - * archures.c (bfd_mach_mips5, bfd_mach_mips64): New constants. - * bfd-in2.h (bfd_mach_mips5, bfd_mach_mips64): Likewise. - * cpu_mips.c (I_mips5, I_mips64): New definitions. - (arch_info_struct): Add entries for bfd_mach_mips5 and - bfd_mach_mips64. - * elf32-mips.c (elf_mips_isa, elf_mips_mach, - _bfd_mips_elf_print_private_bfd_data): Add cases for - E_MIPS_ARCH_5 and E_MIPS_ARCH_64. - (_bfd_mips_elf_final_write_processing): Add cases for - bfd_mach_mips5 and bfd_mach_mips64. - - * aoutx.h (NAME(aout,machine_type)): Add a - bfd_mach_mips_sb1 case. - * archures.c (bfd_mach_mips_sb1): New constant. - * bfd-in2.h (bfd_mach_mips_sb1): New constant. - * cpu-mips.c (I_sb1): New constant. - (arch_info_struct): Add entry for bfd_mach_mips_sb1. - * elf32-mips.c (elf_mips_mach): Add case for - E_MIPS_MACH_SB1. - (_bfd_mips_elf_final_write_processing): Add case for - bfd_mach_mips_sb1. - -2000-12-01 Joel Sherrill - - * config.bfd (arm-*-rtems*, a29k-*rtems*): New targets. - (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. - (sparc*-*-rtems*): Switched from a.out to ELF. - -2000-11-30 Jan Hubicka - - * Makefile.am (BFD64_BACKENDS): Add elf64-x86-64.lo - BFD64_BACKENDS_CFILES): Add elf64-x86-64.c - (elf64-x86-64.lo): Add dependencies. - * archures.c (DESCRIPTION): Add bfd_mach_x86_64, - bfd_mach_x86_64_intel_syntax. - * elf.c (prep_headers): Use EM_x86_64 for 64bit output. - * config.bfd (x86_64): Add. - * configure.in: Add support for bfd_elf64_x86_64_vec. - * cpu-i386.c (bfd_x86_64_arch_intel_syntax, bfd_x86_64_arch): Add. - (bfd_i386_arch, i8086_ar): Link in. - * elf64-x86-64.c: New file. - * reloc.c (ENUMDOC): Add BFD_RELOC_X86_64*. - * targets.c (bfd_elf64_x86_64_vec): Add. - (bfd_target_vect): Add bfd_elf64_x86_64_vec. - -2000-11-30 Kazu Hirata - - * xcofflink.c: Fix formatting. - -2000-11-28 Kazu Hirata - - * aoutx.h: Fix formatting. - * bfd-in.h: Likewise. - * bfd-in2.h: Likewise. - * cache.c: Likewise. - * cisco-core.c: Likewise. - * coff64-rs6000.c: Likewise. - * coffcode.h: Likewise. - * coffswap.h: Likewise. - * corefile.c: Likewise. - * elf32-mips.c: Likewise. - -2000-11-27 Kazu Hirata - - * aout-adobe.c: Fix formatting. - * coff64-rs6000.c: Likewise. - * coffgen.c: Likewise. - * cofflink.c: Likewise. - -2000-11-27 Philip Blundell - - * libcoff-in.h (coff_tdata): Add `strings_written' flag. - (obj_coff_strings_written): New accessor macro for above. - * libcoff.h: Regenerate. - * cofflink.c (_bfd_coff_final_link): Say that we wrote the - strings. - * coffcode.h (coff_write_object_contents): No need to write out - the string table if it's already been done. - -2000-11-22 Philip Blundell - - * cofflink.c (_bfd_coff_generic_relocate_section): Don't object to - weak undefined symbols. - -2000-11-24 Nick Clifton - - * archures.c (bfd_mach_arm_5TE): Define. - (bfd_mach_arm+XScale): Define. - * bfd-in2.h: Regenerate. - - * coff-arm.c (coff_arm_reloc_type_lookup): Accept - BFD_RELOC_ARM_PCREL_BLX. - - * coffcode.h (coff_set_flags): Set flags for 5t, 5te and - XScale machine numbers. - - * config.bfd (xscale-elf): Add target. - (xscale-coff): Add target. - - * cpu-arm.c: Add xscale machine name. - Add v5t, v5te and XScale machine numbers. - -2000-11-23 Kazu Hirata - - * aix386-core.c: Fix formatting. - -2000-11-22 Jim Wilson - - * coff-ia64.c (howto_table): Use EMPTY_HOWTO. - (in_reloc_p): Add ATTRIBUTE_UNUSED to unused parameters. - * cpu-ia64-opc.c (ins_rsvd, ext_rsvd, ins_const, ext_const): Likewise. - (ins_imms_scaled): Initialize sign_bit at function entry. - (elf64_ia64_operands): Add missing initializers. - * elfxx-ia64.c (elfNN_ia64_reloc, elfNN_ia64_reloc_type_lookup, - elfNN_ia64_info_to_howto, elfNN_ia64_fake_sections, - elfNN_ia64_add_symbol_hook, elfNN_ia64_is_local_label_name, - elfNN_ia64_local_hash_table_init, get_fptr, get_pltoff, - elfNN_ia64_adjust_dynamic_symbol): Add ATTRIBUTE_UNUSED for unused - parameters. - (elfNN_ia64_info_to_howto): Initialize free_relocs, free_contents, - and free_extsyms at function entry. - (elfNN_add_symbol_hook): Add unsigned cast to bfd_get_gp_size result. - (elfNN_ia64_create_dynamic_sections): Delete unused local h. - (get_got): Delete unused local srel. - (elfNN_ia64_check_relocs): Initialize dynrel_type when declared. - (elfNN_ia64_relocate_section): Delete unused local dynindx. - -2000-11-21 Kazu Hirata - - * coff-a29k.c: Fix formatting. - * coff-h8500.c: Likewise. - * coff-i960.c: Likewise. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-stgo32.c: Likewise. - * coff-tic54x.c: Likewise. - * coff-w65.c: Likewise. - * cpu-h8500.c: Likewise. - * cpu-hppa.c: Likewise. - * cpu-ns32k.c: Likewise. - * ecoff.c: Likewise. - * ecofflink.c: Likewise. - -2000-11-21 Nick Clifton - - * elf32-sh.c (sh_elf_reloc_loop): Fix compile time warning, and - remove possibility of infinite loop. - -2000-11-20 Kazu Hirata - - * aix386-core.c: Fix formatting. - * aout-adobe.c: Likewise. - * aout-arm.c: Likewise. - * aout-encap.c: Likewise. - * aout-ns32k.c: Likewise. - * aout-target.h: Likewise. - * aout-tic30.c: Likewise. - * aoutf1.h: Likewise. - * aoutx.h: Likewise. - * archive.c: Likewise. - * bfd-in.h: Likewise. - * bfd-in2.h: Likewise. - * bfd.c: Likewise. - * bout.c: Likewise. - -2000-11-17 H.J. Lu - - * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Don't create - pltoff entries for DT_INIT and DT_FINI. - (elfNN_ia64_final_link): Don't set DT_INIT/FINI entries. - (elfNN_ia64_finish_dynamic_sections): Don't fill in DT_INIT/FINI - entries. - -2000-11-16 Richard Henderson - - * elfxx-ia64.c (elfNN_ia64_check_relocs): Handle IPLT relocs. - (allocate_dynrel_entries): Likewise. - (elfNN_ia64_relocate_section): Likewise. Set REL addends correctly. - (set_pltoff_entry): Likewise. - (ia64_howto_table): Remove R_IA64_SEGBASE, and R_IA64_EPLT[ML]SB - (elfNN_ia64_reloc_type_lookup): Likewise. - (elfNN_ia64_install_value): Likewise. - (elfNN_ia64_relocate_section): Likewise. - * reloc.c (BFD_RELOC_IA64_SEGBASE): Remove. - (BFD_RELOC_IA64_EPLTMSB, BFD_RELOC_IA64_EPLTLSB): Remove. - -2000-11-16 Kazu Hirata - - * cpu-a29k.c: Fix formatting. - * cpu-alpha.c: Likewise. - * cpu-arm.c: Likewise. - * cpu-avr.c: Likewise. - * cpu-d10v.c: Likewise. - * cpu-h8500.c: Likewise. - * cpu-hppa.c: Likewise. - * cpu-i370.c: Likewise. - * cpu-i386.c: Likewise. - * cpu-i960.c: Likewise. - * cpu-ia64-opc.c: Likewise. - * cpu-ia64.c: Likewise. - * cpu-m32r.c: Likewise. - * cpu-m68hc11.c: Likewise. - * cpu-m68hc12.c: Likewise. - * cpu-m68k.c: Likewise. - * cpu-m88k.c: Likewise. - * cpu-mips.c: Likewise. - * cpu-ns32k.c: Likewise. - * cpu-pj.c: Likewise. - * cpu-powerpc.c: Likewise. - * cpu-sh.c: Likewise. - * cpu-sparc.c: Likewise. - * cpu-tic54x.c: Likewise. - * cpu-v850.c: Likewise. - * cpu-vax.c: Likewise. - * cpu-w65.c: Likewise. - * cpu-we32k.c: Likewise. - * cpu-z8k.c: Likewise. - * dwarf1.c: Likewise. - * dwarf2.c: Likewise. - -2000-11-15 Kazu Hirata - - * coff-arm.c: Fix formatting. - * coff-ppc.c: Likewise. - * coff-rs6000.c: Likewise. - * coff-sh.c: Likewise. - * coff-sparc.c: Likewise. - * coff-tic30.c: Likewise. - * coff-tic54x.c: Likewise. - * coff-tic80.c: Likewise. - * coff-w65.c: Likewise. - * coff-we32k.c: Likewise. - * coff-z8k.c: Likewise. - -2000-11-15 Richard Henderson - - * elf64-alpha.c (elf64_alpha_check_relocs): Create the reloc - section with the same ALLOC|LOAD flags as the source section. - -2000-11-14 Jakub Jelinek - - * elf64-alpha.c (elf64_alpha_relax_opt_call): Only check bits used - by STO_ALPHA constants. - -2000-11-14 Kazu Hirata - - * coff-pmac.c: Fix formatting. - * coff-ppc.c: Likewise. - -2000-11-13 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): Also add indirect - symbols for common symbols with the default version. - -2000-11-09 Philip Blundell - - * section.c (STD_SECTION): Set gc_mark flag. - -2000-11-11 Kazu Hirata - - * coff-i960.c: Likewise. - * coff-m68k.c: Likewise. - * coff-m88k.c: Likewise. - * coff-mcore.c: Likewise. - * coff-mips.c: Likewise. - -2000-11-11 Bernd Schmidt - - * elf32-sh.c (sh_elf_relocate_section): Ignore R_SH_NONE relocs. - -2000-11-10 Kazu Hirata - - * coff-h8300.c: Fix formatting. - * coff-h8500.c: Likewise. - * coff-i386.c: Likewise. - * coff-i860.c: Likewise. - * coff-i960.c: Likewise. - * coff-ia64.c: Likewise. - -2000-11-09 Kazu Hirata - - * archive.c: Fix formatting. - * archures.c: Likewise. - -2000-11-07 Richard Henderson - - * elfxx-ia64.c (elf64_ia64_final_link): New local unwind_output_sec. - Set it before bfd_elf64_bfd_final_link call. Use it after the call. - * section.c (bfd_set_section_contents): Call memcpy if - section->contents set and location not equal to contents plus offset. - -2000-11-08 Kazu Hirata - - * bfd-in.h: Fix formatting. - * bfd-in2.h: Likewise. - * bfd.c: Likewise. - * binary.c: Likewise. - * bout.c: Likewise. - * coff-a29k.c: Likewise. - * coff-alpha.c: Likewise. - * coff-apollo.c: Likewise. - * coff-aux.c: Likewise. - -2000-11-07 Kazu Hirata - - * aix386-core.c: Fix formatting. - * aoutf1.h: Likewise. - * aoutx.h: Likewise. - * archures.c: Likewise. - * armnetbsd.c: Likewise. - -2000-11-07 Alan Modra - - * coff-h8300.c (special): Adjust reloc address. - -2000-11-06 Steve Ellcey - - * archures.c (bfd_mach_ia64_elf64, bfd_mach_ia64_elf32): Add defines - to differentiate elf32 and elf64 on ia64. - * bfd-in2.h: Regenerate. - * config.bfd: Add target for "ia64*-*-hpux*". - * configure.in: Add bfd_elf32_ia64_big_vec to selvecs switch. - * configure: Regenerate. - * cpu-ia64.c (bfd_ia64_elf32_arch): Add elf32 arch info structure. - * targets.c: Add bfd_target bfd_elf32_ia64_big_vec. - - * Makefile.am: Make elf32-ia64.c and elf64-ia64.c derived objects - from elfxx-ia64.c. Add depenency rules for making elf32-ia64.lo. - * Makefile.in: Regnerate. - * elf64-ia64.c: Deleted. - * elfxx-ia64.c: New file, paramaterized version of elf64-ia64.c. - -2000-11-06 Kazu Hirata - - * aout-adobe.c: Fix formatting. - * aout-arm.c: Likewise. - * aout-cris.c: Likewise. - * aout-encap.c: Likewise. - * aout-ns32k.c: Likewise. - * aout-target.h: Likewise. - * aout-tic30.c: Likewise. - -2000-11-05 Philip Blundell - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit - BFDs containing no sections to be merged, regardless of their flags. - -2000-11-04 Philip Blundell - - * elf32-arm.h (elf32_arm_relocate_section): Suppress error message - if a relocation for an undefined symbol also results in an - overflow. - -2000-11-06 Christopher Faylor - - * config.bfd: Add support for Sun Chorus. - -2000-11-05 David O'Brien - - * configure.in: Recognize alpha-*-freebsd*. - * configure: Regenerate. - -2000-11-02 Luciano Gemme - - * srec.c (CHUNK): Rename to DEFAULT_CHUNK. - (Chunk): New global variable set by a parameter in objcopy.c. - (S3Forced): New global variable set by a parameter in - objcopy.c. - (srec_set_section_contents): If S3Forced is true, always generate - S3 records. - (srec_write_section): Use 'Chunk' to limit maximum length of S - records. - -2000-11-02 Per Lundberg - - * config.bfd: Add support for i[3456]86-chaosdev-storm-chaos. - * Makefile.in: Regenerate. - * bfd-in2.h: Regenerate. - * po/bfd.pot: Regenerate. - -2000-10-31 Philip Blundell - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Only handle - EF_SOFT_FLOAT if it is defined. - -2000-10-27 Philip Blundell - - * elf32-arm.h (elf32_arm_copy_private_bfd_data): Don't refuse - attempts to mix PIC code with non-PIC, just mark the output as - being position dependent. - (elf32_arm_merge_private_bfd_data): Likewise. Print an error - message for EF_SOFT_FLOAT mismatches. Display diagnostics for - all mismatches, not just the first one. - -2000-10-25 Chris Demetriou - - * ieee.c (ieee_archive_p): Plug one of many possible - memory leaks in error handling. - -2000-10-20 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_merge_private_bfd_data, - elf32_sparc_object_p, elf32_sparc_final_write_processing): - Support v8plusb. - * elf64-sparc.c (sparc64_elf_merge_private_bfd_data, - sparc64_elf_object_p): Support v9b. - * archures.c: Declare v8plusb and v9b machines. - * bfd-in2.h: Ditto. - * cpu-sparc.c: Ditto. - -2000-10-16 Geoffrey Keating - - * elf64-sparc.c (sparc64_elf_relocate_section): Clear the location - of a GOT reloc. - - * elf32-ppc.c (SYMBOL_REFERENCES_LOCAL): New macro. - (SYMBOL_CALLS_LOCAL): New macro. - (ppc_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL. - (ppc_elf_check_relocs): Use SYMBOL_REFERENCES_LOCAL. - (ppc_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL. - (ppc_elf_relocate_section): Use flag variable to determine - whether the relocation refers to a local symbol. - Test whether a PLTREL24 reloc will produce a reloc by looking - to see whether a PLT entry was made. - -2000-10-14 Geoffrey Keating - - * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Don't make PLT - entries that could serve as a definition for a weak symbol. - -2000-10-13 Ulf Carlsson - - From Ralf Baechle - - * elf32-mips.c (mips_elf_create_dynamic_relocation): New argument - local_p. Add symbol value only for non-R_MIPS_REL32 relocations - against local symbols. - (_bfd_mips_elf_finish_dynamic_sections): Undo patch from 2000-10-01. - -2000-10-12 Alan Modra - - * section.c (struct sec): Add kept_section. - (struct bfd_comdat_info): Remove sec, we can use above. - (STD_SECTION): Add initializer. - (bfd_make_section_anyway): Init here too. - - * bfd-in2.h: Regenerate. - - * elflink.h (elf_link_add_object_symbols): Remove unnecessary - zeroing of `flags'. - (elf_link_input_bfd): Set all asection->symbol->value's here, and - fudge values for discarded link-once section symbols. - - * elf64-hppa.c: Include alloca-conf.h - -2000-10-11 Alan Modra - - * elf.c (swap_out_syms): Revert 2000-10-07 changes. - - * ieee.c (ieee_make_empty_symbol): Oops, bfd_zalloc needs another arg. - -2000-10-10 Alan Modra - - * ieee.c (ieee_make_empty_symbol): Use bfd_zalloc, not bfd_zmalloc. - -2000-10-10 Tom Rix - - * section.c (bfd_make_section_anyway): Release newsect ptr when - newsect->symbol fails to alloc. Use bfd_release instead of free. - -2000-10-09 Richard Henderson - - * elflink.h (size_dynamic_sections): Don't create various tags if - .dynstr is excluded from the link. Don't set first dynsym entry - if dynsymcount is zero. - (elf_bfd_final_link): Don't try to swap out dynamic syms if - .dynsym excluded from the link. Don't try to write any dynamic - sections excluded from the link. - - * elf.c (swap_out_syms): Handle global section symbols. - -2000-10-05 DJ Delorie - - * peigen.c (_bfd_pei_swap_scnhdr_out): note extended relocs - * coffcode.h (coff_set_alignment_hook): read extended reloc count - (coff_write_relocs): write extended reloc count - (coff_write_object_contents): account for extended relocs - -2000-10-05 Jim Wilson - - * elf-bfd.h (struct elf_backend_data): Add elf_backend_section_flags - field. - * elf.c (_bfd_elf_make_section_from_shdr): Call the - elf_backend_section_flags function. - * elf64-ia64.c (elf64_ia64_section_from_shdr): Delete flag conversion - code. - (elf64_ia64_section_flags): New function containing flag conversion - code. - (elf_backend_section_flags): Define to elf64_ia64_section_flags. - * elfxx-target.h (elf_backend_section_flags): Define. - (elfNN_bed): Initialize elf_backend_section_flags field. - -2000-10-02 Alan Modra - - * elf32-hppa.c (elf32_hppa_check_relocs): Correct call to - _bfd_elf32_gc_record_vtable. Correct a comment. - -2000-10-01 Ulf Carlsson - - From Ralf Baechle - - * elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Mark gld - produces binaries with got[1] = 0x80000001 to differenciate them - for the dynamic linker from the broken binaries produced by old - versions. - -2000-09-30 Petr Sorfa - - * elf.c (elfcore_grok_pstatus): Check for size of pxstatus_t. - (elfcore_grok_lwpstatus): Check for size of lwpxstatus_t. - * configure.in: Add check for pxstatus_t and lwpxstatus_t. - * configure: Regenerate. - -2000-09-27 Hans-Peter Nilsson - - Define two bfd_targets for absence and presence of leading - underscore on symbols. Make sure to only link same kind. - * elf32-cris.c (cris_elf_object_p, - cris_elf_final_write_processing, cris_elf_print_private_bfd_data, - cris_elf_merge_private_bfd_data): New. - (elf_backend_object_p, elf_backend_final_write_processing, - bfd_elf32_bfd_print_private_bfd_data, - bfd_elf32_bfd_merge_private_bfd_data): Define. - : Include elf32-target.h twice with - different macro settings: - (TARGET_LITTLE_SYM): First as bfd_elf32_cris_vec, then as - bfd_elf32_us_cris_vec. - (TARGET_LITTLE_NAME): First as "elf32-cris", then "elf32-us-cris". - (elf_symbol_leading_char): First as 0, then '_'. - (INCLUDED_TARGET_FILE): Define for second include of elf32-target.h. - * config.bfd (cris-*-*): Add bfd_elf32_us_cris_vec to targ_selvecs. - * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vector. - * configure: Regenerate. - * targets.c: Declare bfd_elf32_us_cris_vec. - * po/bfd.pot: Regenerate. - -2000-09-29 Momchil Velikov - - * elf32-arm.h (arm_add_to_rel): Correctly adjust the addend for - R_ARM_THM_PC22 relocations. - -2000-09-29 NIIBE Yutaka - - * elflink.h (elf_link_add_object_symbols): Don't bfd_release runpath. - -2000-09-29 Momchil Velikov - - * elf.c (elf_fake_sections): Do not mark the section SHT_NOBITS if - is has the SEC_HAS_CONTENTS flag set. - -2000-09-28 Örjan Friberg - Hans-Peter Nilsson - - * aout-cris.c (N_TXTADDR): Define. - -2000-09-28 John David Anglin - - * som.c: Include alloca-conf.h. - * Makefile.am: "make dep-am" - * Makefile.in: Regenerate. - -2000-09-27 Alan Modra - - * elf32-hppa.c (plt_stub): New. - (PLT_STUB_ENTRY): Define. - (elf32_hppa_link_hash_table): Change multi_subspace to packed - boolean. Add need_plt_stub, has_12bit_branch and has_17bit_branch. - (elf32_hppa_link_hash_table_create): Init to suit. - (elf32_hppa_check_relocs): Set has_12bit_branch and - has_17bit_branch as appropriate. - (elf32_hppa_adjust_dynamic_symbol): Set need_plt_stub for - non-local functions. - (elf32_hppa_size_dynamic_sections): Correct setting of reltext. - Add space for plt_stub as needed. - (elf32_hppa_finish_dynamic_symbol): Point .plt entries for global - functions at plt_stub. - (elf32_hppa_finish_dynamic_sections): Write plt_stub. - (elf32_hppa_create_dynamic_sections): Leave .plt executable. - - * elf32-hppa.h (elf32_hppa_size_stubs): Add group_size param. - * elf32-hppa.c (elf32_hppa_size_stubs): Likewise. Use it instead - of fixed size, and if negative, disable handling of input sections - before stub section. Set up default stub group size depending - on detected branch relocs. - (hppa_build_one_stub): Use lrsel and rrsel for import stubs to - ensure different offsets from sym_value aren't rounded to - different 2k blocks. Use lrsel and rrsel for other stubs too for - consistency rather than necessity. - (elf32_hppa_check_relocs): Handle R_PARISC_DIR14F. - (final_link_relocate): Likewise. - (elf32_hppa_relocate_section): Likewise. - - * elf-hppa.h (elf_hppa_howto_table): Add R_PARISC_DIR14F reloc. - (_bfd_elf_hppa_gen_reloc_type): Generate them. - (elf_hppa_final_link_relocate): Handle them. - (elf_hppa_relocate_insn): Likewise. - (_bfd_elf_hppa_gen_reloc_type): Add missing e_ldsel and e_rdsel cases. - -2000-09-26 Hans-Peter Nilsson - - * elfcode.h (elf_object_p): Preserve and clear abfd section - information. Restore at error. - -2000-09-26 Paul Sokolovsky - - * peigen.c (_bfd_pei_swap_aouthdr_in): If some DataDirectory - is empty, make sure that its rva also 0. NT loader dislikes - having otherwise. - -2000-09-26 Steve Ellcey - - * som.c (som_bfd_derive_misc_symbol_info): Make weak symbols - global by default. - -2000-09-21 Alan Modra - - * elf32-hppa.c (elf32_hppa_check_relocs): Fix weak sym handling in - currently unused RELATIVE_DYNAMIC_RELOCS code. - (hppa_discard_copies): Likewise. - (elf32_hppa_size_stubs): Size `input_list' array correctly. Correct - comments. Don't check non-code output sections for stub grouping. - -2000-09-20 Alan Modra - - * section.c (bfd_get_unique_section_name): Return NULL if - bfd_malloc fails. - -2000-09-19 Michael Sokolov - - * elf32-m68k.c (elf_cpu32_plt0_entry): Change the PLT entry 0 - instruction sequence to actually work. - (elf_m68k_finish_dynamic_sections): Change the patch-in offset - accordingly. - -2000-09-18 Alexandre Oliva - - * elf32-sh.c (sh_elf_relocate_section): Use - _bfd_final_link_relocate to apply the relocation against a section - symbol, when doing relocatable links. - -2000-09-18 Alan Modra - - * elf32-hppa.c (elf32_hppa_stub_hash_entry): Rename input_section - to id_sec. - (stub_hash_newfunc): Here too. - (hppa_add_stub): And here. - (elf32_hppa_link_hash_table): Remove stub_section_created, - reloc_section_created, first_init_sec and first_fini_sec. Add - stub_group. - (elf32_hppa_link_hash_table_create): Init to suit. - (hppa_get_stub_entry): Add support for grouping stub sections. - (hppa_add_stub): Likewise. Remove sec_count param and init/fini - section code. Index stub vars by section->id. - (elf32_hppa_size_stubs): Likewise. Remove duplicated function - exit paths. Zap allocation of above removed vars. Refine - link-once test. - - * elf32-hppa.h (elf32_hppa_size_stubs): Add output_bfd param. - * elf32-hppa.c (elf32_hppa_size_stubs): Likewise. - (hppa_get_stub_entry): Pass in pointer to elf32_hppa_link_hash_table - rather than pointer to bfd_link_info. - (hppa_add_stub): Likewise. - (final_link_relocate): Likewise. - -2000-09-17 David Huggins-Daines - - (elf32_hppa_size_stubs): Don't try to build stubs for discarded - link-once sections. - -2000-09-16 Alexandre Oliva - - * elf32-sh.c (ELF_MAXPAGESIZE): Define to 128, to match - ld/emulparams/shelf.sh. - -2000-09-10 Michael Sokolov - - * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): New function. - * bfd-in.h (bfd_m68k_elf32_create_embedded_relocs): Add declaration. - * bfd-in2.h: Regenerate. - -2000-09-15 Kenneth Block - - * elf64-alpha.c (elf64_alpha_relax_with_lituse): ld performs - LITUSE relocations incorrectly if -relax is specified on the ld - command line and the displacement field of the load or store - instruction is non-zero. (Patch by paul.winalski@compaq.com) - -2000-09-15 Alan Modra - - * elf32-hppa.c (hppa_add_stub): Dont set first_init_sec and - first_fini_sec here. - (elf32_hppa_size_stubs): Instead correctly find the first .init - and .fini section here. - -2000-09-15 David Huggins-Daines - - * elf32-hppa.c (clobber_millicode_symbols): New function. - (elf32_hppa_size_dynamic_sections): Call it. - -2000-09-14 Alan Modra - - * elf32-hppa.c (elf32_hppa_link_hash_entry): Make pic_call - packed. Add plabel, plt_abs packed booleans. - (hppa_link_hash_newfunc): Init new fields. - (PLABEL_PLT_ENTRY_SIZE): Define. - (hppa_stub_name): Use size_t len vars. - (hppa_add_stub): Likewise. - (elf32_hppa_build_stubs): Likewise. - (hppa_build_one_stub): Kill some compiler warnings. - (elf32_hppa_check_relocs): Always generate a plt entry for PLABELs - if dynamic linking. Munge the local plt offsets into - local_got_refcounts. Set h->plabel for all global PLABELs. Use - size_t len vars. Add assert for plabel addend. - (elf32_hppa_gc_sweep_hook): Sweep local plt entries too. - (elf32_hppa_hide_symbol): New function. - (elf_backend_hide_symbol): Define. - (elf32_hppa_adjust_dynamic_symbol): Don't throw away plt entries - with h->plabel set. Don't make plt entries to have dynamic syms - when they have been forced local. If plt entry is used by a - plabel, make it PLABEL_PLT_ENTRY_SIZE. - (elf32_hppa_size_dynamic_sections): Set plt_abs for init fns. - Set up .plt offsets for local syms. - (elf32_hppa_relocate_section): Initialise plt entries for local - syms. Leave weak undefined plabels zero. Make global plabel - relocs against function symbol, and leave the addend zero. - Use *ABS* DIR32 relocs instead of SEGREL32 for dynamic got relocs. - (elf32_hppa_finish_dynamic_symbol): Set up IPLT relocs for - non-dynamic syms. Init extra plt for plabels. Use *ABS* DIR32 - relocs instead of SEGREL32 for dynamic got relocs. - (elf32_hppa_finish_dynamic_sections): Reserve one more .got entry. - (elf_backend_got_header_size): Adjust. - (elf32_hppa_set_gp): Calculate an "ideal" LTP. - - * elf32-hppa.c (LONG_BRANCH_VIA_PLT): Define. - (hppa_type_of_stub): Use it instead of #if 0 - (hppa_discard_copies): Use it here too. - (elf32_hppa_size_dynamic_sections): And here. - - * elf32-hppa.c (elf32_hppa_link_hash_table): Remove `offset' field. - (elf32_hppa_link_hash_table_create): And here. - (hppa_build_one_stub): And here. Instead keep track of stub - offset using _raw_size. - (elf32_hppa_size_stubs): Likewise. - (elf32_hppa_build_stubs): Likewise. - (hppa_size_one_stub): Likewise. Resize reloc section too. - - * elf32-hppa.c (hppa_add_stub): Correct first_init_sec and - first_fini_sec handling. Don't search for reloc section or set - hplink->reloc_section_created here. - (elf32_hppa_size_stubs): Instead search for reloc sections, and - set reloc_section_created here. - (hppa_handle_PIC_calls): Set ELF_LINK_HASH_NEEDS_PLT. - (elf32_hppa_size_dynamic_sections): Make a .plt entry for DT_INIT - and DT_FINI. - (elf32_hppa_finish_dynamic_sections): Set DT_INIT and DT_FINI. - - * elf32-hppa.c (hppa_build_one_stub): Replace `elf_hash_table (info)' - with `hplink->root.'. - (elf32_hppa_check_relocs): Likewise. - (elf32_hppa_gc_sweep_hook): Likewise. - (elf32_hppa_adjust_dynamic_symbol): Likewise. - (hppa_handle_PIC_calls): Likewise. - (elf32_hppa_size_dynamic_sections): Likewise. - (elf32_hppa_set_gp): Likewise. - (elf32_hppa_relocate_section): Likewise. - (elf32_hppa_finish_dynamic_symbol): Likewise. - (elf32_hppa_finish_dynamic_sections): Likewise. - - From David Huggins-Daines - * elf32-hppa.c (hppa_type_of_stub): Generate import stubs for - defined weak symbols in shared links. - (final_link_relocate): Calls to defined weak symbols in shared - objects must go via import stubs, as the target might not be known - at link time. - -2000-09-14 Alexandre Oliva - - * elf32-sh.c (sh_elf_howto_table): Moved R_SH_GOT32, R_SH_PLT32, - R_SH_COPY, R_SH_GLOB_DAT, R_SH_JMP_SLOT, R_SH_RELATIVE, - R_SH_GOTOFF, R_SH_GOTPC) to the range from 160 to 167. Replaced - the original entries with EMPTY_HOWTOs, and added new ones to fill - in the gap. - (sh_elf_info_to_howto): Make sure the new gap isn't used. - (sh_elf_relocate_section): Likewise. - -2000-09-13 Anders Norlander - - * cpu-mips.c (arch_info_struct): Add mips:4K - * bfd-in2.h (bfd_mach_mips4K): New define. - * archures.c: Add bfd_mach_mips4K to comment. - * elf32-mips.c (_bfd_mips_elf_final_write_processing): Return - E_MIPS_ARCH_2 for bfd_mach_mips4K. - -2000-09-13 Marco Franzen - - * som.c (som_write_symbol_strings): Do not used fixed buffers, - use size_t as a counter. - (som_write_space_strings): Similarly. - -2000-09-12 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_pc26): New function - and prototype. - (elf32_i860_relocate_section): Invoke new function from here. - -2000-09-11 Michael Sokolov - - * elf.c (_bfd_elf_make_section_from_shdr): Make debug_sec_names - static. - -2000-09-10 Michael Sokolov - - * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): Emit 8 NULs for - target section name instead of dumping core when the target symbol is - undefined. - -2000-09-09 Kazu Hirata - - * riscix.c: Remove DEFUN. - -2000-09-08 Nick Clifton - - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Do not - initialise flags in output bfd if the input bfd is the default - architecture with the default flags. - -2000-09-08 Kazu Hirata - - * archive.c: Fix formatting. - * coff-arm.c: Likewise. - * doc/chew.c: Likewise. - -2000-09-08 Alan Modra - - * section.c (bfd_get_unique_section_name): Put a dot before the - numeric suffix. - -2000-09-07 Kazu Hirata - - * doc/chew.c: Remove all uses of DEFUN and DEFUN_VOID. - * elf.c: Fix formatting. - -2000-09-07 Alexandre Oliva - - * config.bfd (sh-*-linux*): Added. - * configure.in (bfd_elf32_shlin_vec, bfd_elf32_shblin_vec): New. - * targets.c: Declare them. - * elf32-sh-lin.c: New file. - * Makefile.am: Compile it. - * elf32-sh.c: Don't override defines from elf32-sh-lin.c. - * configure, Makefile.in: Rebuilt. - -2000-09-06 Geoffrey Keating - - * xcofflink.c (xcoff_link_input_bfd): Include the .tocbss - pseduo-section when determining where the TOC ends. - - * coff-rs6000.c (_bfd_xcoff_swap_aux_out): Use bfd_h_put_16 to - output x_tvndx as it is only two bytes wide. - - * coff-rs6000.c (xcoff_howto_table): A modifiable branch-absolute - reloc is 26 or 32 bits wide. - - * coff-rs6000.c (_bfd_xcoff_rtype2howto): The bitsize is irrelevant - for relocs that don't change anything. Also look at the full - 6 bits of bitsize. - -2000-09-06 Philip Blundell - - * config.bfd (arm*-*-uclinux*): New target. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -2000-09-06 Alan Modra - - * section.c (bfd_get_unique_section_name): Avoid c++ reserved - word for variable name. - * bfd-in2.h: Regenerate. - -2000-09-05 Nick Clifton - - * config.in: Regenerate. - * libbfd.h: Regenerate. - * po/bfd.pot: Regenerate. - * doc/bfdint.texi: Remove CVS date string - it foils compares with - local versions. - -2000-09-05 Steven Johnson - - * cpu-powerpc.c (arch_info_struct): Added MPC860 Family entry. - -2000-09-05 Alan Modra - - Shared library and PIC support. - * elf32-hppa.c (PLT_ENTRY_SIZE): New. - (GOT_ENTRY_SIZE): New. - (ELF_DYNAMIC_INTERPRETER): New. - (STUB_SUFFIX): Define. - (LONG_BRANCH_PIC_IN_SHLIB): Define. - (RELATIVE_DYNAMIC_RELOCS): Define. - (enum elf32_hppa_stub_type): New. - (struct elf32_hppa_stub_hash_entry): Rename offset to - stub_offset. Add a number of new fields. - (struct elf32_hppa_link_hash_entry): New. - (struct elf32_hppa_link_hash_table): Add numerous fields. Remove - global_value. - (elf32_hppa_hash_table): Rename to hppa_link_hash_table. - (elf32_hppa_stub_hash_lookup): Rename to hppa_stub_hash_lookup. - (elf32_hppa_stub_hash_newfunc): Rename to stub_hash_newfunc. Init - new fields. - (hppa_link_hash_newfunc): New function. - (elf32_hppa_link_hash_table_create): Use above function. Init new - fields. - (elf32_hppa_stub_name): Rename to hppa_stub_name. Pass in reloc - instead of addend, and remove sym_name from args. Don't use - symbol name for local syms, instead use sym index. - (elf32_hppa_size_of_stub): Rename to hppa_type_of_stub, and return - stub type rather than size. Pass in hash and handle import stub - case. Also pass in reloc instead of offset so we can calculate - PCREL22F and PCREL12F branches properly. - (elf32_hppa_build_one_stub): Rename to hppa_build_one_stub. Build - import and export stubs too. - (elf32_hppa_size_one_stub): Rename to hppa_size_one_stub. Handle - import and export stub sizing. - (elf32_hppa_check_relocs): New function. - (elf32_hppa_adjust_dynamic_symbol): New function. - (hppa_discard_copies): New function. - (elf32_hppa_size_dynamic_sections): New function. - (elf_backend_size_dynamic_sections): Define. - (elf32_hppa_finish_dynamic_symbol): New function. - (elf_backend_finish_dynamic_symbol): Define. - (elf32_hppa_size_stubs): Stash params in link hash table, and move - some local vars into the link hash table too. For shared links, - trundle over function syms, generating export stubs. Handle - PCREL22F branches. Break out stub creation code from here.. - (hppa_add_stub): .. to here. New function. - (elf32_hppa_final_link): Rename to elf32_hppa_set_gp, and don't - call the bfd linker. Use elf_gp to record global pointer. - Calculate a value from sections if $global$ is missing. - (bfd_elf32_bfd_final_link): Define as _bfd_elf32_gc_common_final_link. - (elf32_hppa_gc_mark_hook): New function. - (elf_backend_gc_mark_hook): Define. - (elf32_hppa_gc_sweep_hook): New function. - (elf_backend_gc_sweep_hook): Define. - (elf32_hppa_bfd_final_link_relocate): Rename to final_link_relocate. - Add rel to args, and remove howto, input_bfd, offset, addend, - sym_name as we can recalculate these locally. Handle calls to - dynamic objects, extra PIC relocs, PCREL22F branches. Change - handling of undefined weak syms. Check that stubs are in range. - Only look for import stubs on PCREL17F and PCREL22F relocs. Add - message on hitting a DPREL21L reloc that needs fixing. Subtract - off PC for PCREL14F. Break out code that does a stub lookup from - here.. - (hppa_get_stub_entry): ..to here. New function. - (elf32_hppa_relocate_insn): Merge into final_link_relocate. - (elf32_hppa_relocate_section): Handle got and plt relocs, dynamic - relocs, etc. etc. - (elf32_hppa_finish_dynamic_sections): New function. - (elf_backend_finish_dynamic_sections): Define. - (elf_backend_final_write_processing) Define. - (hppa_handle_PIC_calls): New function. - (elf32_hppa_build_stubs): Call it. Pass link_info to - hppa_build_one_stub. - (elf32_hppa_create_dynamic_sections): New function - to create .plt and .got then set .plt flags correctly. - (elf_backend_create_dynamic_sections): Define. - (elf32_hppa_object_p): New function. - (elf_backend_object_p): Define. - (elf32_hppa_elf_get_symbol_type): New function. - (elf_backend_get_symbol_type): Define. - (elf_backend_can_gc_sections): Define. - (elf_backend_want_got_plt): Define. - (elf_backend_plt_alignment): Set to 2. - (elf_backend_plt_readonly): Define. - (elf_backend_want_plt_sym): Define. - (elf_backend_got_header_size): Reserve one entry. - - * elf32-hppa.h (elf32_hppa_build_stubs): Don't pass stub bfd. - (elf32_hppa_size_stubs): Pass in multi_subspace. - (elf32_hppa_set_gp): Declare. - - * section.c (SEC_HAS_GOT_REF): Define new flag for asection. - (bfd_get_unique_section_name): New function. - * bfd-in2.h: Regenerate. - - * elf64-hppa.c (elf64_hppa_check_relocs): Handle R_PARISC_PCREL12F. - (elf64_hppa_size_dynamic_sections): Remove the FIXME at bfd_zalloc - comment. - - From David Huggins-Daines - * elf64-hppa.c (elf64_hppa_check_relocs): Fix a warning. - (elf64_hppa_mark_exported_functions): Set dyn_h->st_shndx. - (elf64_hppa_link_output_symbol_hook): Test dyn_h->st_shndx has - been updated in finish_dynamic_symbol before modifying function - symbol. - - * elf-hppa.h (elf_hppa_howto_table): Restructure into groups of - eight entries. Replace NULL with bfd_elf_generic_reloc. Add - R_PARISC_GNU_VTENTRY, R_PARISC_GNU_VTINHERIT and R_PARISC_PCREL12F. - (_bfd_elf_hppa_gen_reloc_type): Handle R_PARISC_GNU_VT*. Add some - comments. Handle format == 12 for R_HPPA_PCREL_CALL. - (elf_hppa_final_link_relocate): Handle R_PARISC_PCREL12F. - (elf_hppa_relocate_insn): Likewise. Reformat some comments. - (elf_hppa_final_write_processing): Expose it for ARCH_SIZE == 32. - - From David Huggins-Daines - * elf-hppa.h (elf_hppa_is_local_label_name): Accept the SysV/ELF - style of local labels as well. - -2000-09-03 Philip Blundell - - * elf32-arm.h (elf32_arm_relocate_section): Don't try to relocate - references to undefined symbols in debugging sections. - -2000-09-02 H.J. Lu - - * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT, - BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE, - BFD_RELOC_SH_GOTPC): Move them from the MIPS section to the SH - section. - -2000-09-02 Jason Eckhardt - - * elf32-i860.c (bfd_elf32_bfd_is_local_label_name): Define macro. - (elf32_i860_is_local_label_name): New function and prototype. - -2000-09-02 Nick Clifton - - * configure.in: Increase version number to 2.10.91. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * po/bfd.pot: Regenerate. - -2000-09-02 Daniel Berlin - - * elf.c (_bfd_elf_make_section_from_shdr): Add - .gnu.linkobce.wi. to the list of debug section names. - -2000-09-02 Nick Clifton - - * dwarf2.c (find_debug_info): New function: Locate a section - containing dwarf2 debug information. - (bfd_dwarf2_find_nearest_line): Find all sections containing - debug information and include them in the stash. - -2000-09-01 Niibe Yutaka , Kaz Kojima , Alexandre Oliva - - * elf32-sh.c (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT, - R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New. - (sh_reloc_map): Add new relocs. - (sh_elf_check_relocs, sh_elf_link_hash_newfunc, - sh_elf_link_hash_table_create, sh_elf_adjust_dynamic_symbol, - sh_elf_size_dynamic_sections, sh_elf_finish_dynamic_symbol, - sh_elf_finishe_dynamic_sections, sh_elf_discard_copies): New - functions. - (ELF_DYNAMIC_INTERPRETER, PLT_ENTRY_SIZE): Define. - (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le, - elf_sh_plt_entry_be, elf_sh_plt_entry_le, - elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): - New array constants. - (elf_sh_plt0_entry, elf_sh_plt_entry, elf_sh_pic_plt_entry): - New variables. - (elf_sh_sizeof_plt, elf_sh_plt_plt0_offset, - elf_sh_plt0_linker_offset, elf_sh_plt0_gotid_offset, - elf_sh_plt_temp_offset, elf_sh_plt_symbol_offset, - elf_sh_plt_reloc_offset): Define. - (elf_sh_pcrel_relocs_copied, elf_sh_link_hash_entry, - elf_sh_link_hash_table): New structs. - (sh_elf_link_hash_traverse, sh_elf_hash_table): New macros. - (sh_elf_relocate_section, sh_elf_check_relocs): Handle new - relocation types. - (elf_backend_create_dynamic_sections, - bfd_elf32_bfd_link_hash_table_create, - elf_backend_adjust_dynamic_symbol, - elf_backend_size_dynamic_sections, - elf_backend_finish_dynamic_symbol, - elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, - elf_backend_plt_readonly, elf_backend_want_plt_sym, - elf_backend_got_header_size, elf_backend_plt_header_size): - Define. - * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT, - BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE, BFD_RELOC_SH_GOTPC): - New relocs. - * bfd-in2.h, libbfd.h: Rebuilt. - -2000-09-01 Alan Modra - - * elf32-i386.c (elf_i386_finish_dynamic_symbol): Revert 2000-08-27 - change. - -2000-08-31 J"orn Rennecke - - * elf32-sh.c (sh_elf_merge_private_data): If ibfd's elf header flags - not initialized, set them to indicate the SH1 instruction set. - -2000-08-31 Alexandre Oliva - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-29 Michael Snyder - - * elf.c: Eliminate references to __sparcv9 macro; replace with - autoconf variables HAVE_PSINFO32_T etc. - * configure.in: Auto-configure HAVE_PSINFO_32_T, HAVE_PRPSINFO32_T, - HAVE_PSTATUS32_T, HAVE_PRSTATUS32_T, HAVE_PRSTATUS32_T_PR_WHO. - * config.in: Ditto. - * acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE) define _SYSCALL32 so it can - detect the above typedefs. (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Ditto. - * aclocal.m4: Ditto. - * configure: Regenerate. - -2000-08-27 Alan Modra - - * elf32-i386.c (elf_i386_check_relocs): Keep info on relocs copied - for any shared link, not just shared -Bsymbolic. - (elf_i386_size_dynamic_sections): Call elf_i386_discard_copies on - any shared link, and pass link info to it. - (elf_i386_size_dynamic_sections): Update comment. - (elf_i386_discard_copies): Modify to discard relocs for symbols - that have been forced local. - (elf_i386_finish_dynamic_symbol): Don't copy relocs for symbols - that have been forced local. - -2000-08-24 Denis Chertykov & Nick Clifton - - * elflink.h (elf_link_add_object_symbols): Allow common - symbols to have an alignment of 1 if explicitly requested, and - not overridden by other definitions. - -2000-08-22 Doug Kwan - - * coff-w65.c (CREATE_LITTLE_COFF_TARGET): Fix typo. - * coffcode.h (coff_set_flags): Add detection of w65 architecture. - -2000-08-22 H.J. Lu - - * elf-bfd.h (elf_link_hash_table): Add runpath. - - * bfd-in.h (bfd_elf_get_runpath_list): New prototype. - * bfd-in2.h: Rebuilt. - - * elf.c (_bfd_elf_link_hash_table_init): Initialize the - "runpath" field to NULL. - (bfd_elf_get_runpath_list): New function. - - * elflink.h (elf_link_add_object_symbols): Record DT_RPATH and - DT_RUNPATH entries. - -2000-08-22 Alexandre Oliva - - * elf32-sh.c (sh_elf_relocate_section) [R_SH_IND12W, - R_SH_DIR8WPN, R_SH_DIR8WPZ, R_SH_DIR8WPL]: Handle them - explicitly. Improve validation of r_type. - -2000-08-21 H.J. Lu - - * elf32-i386.c (elf_i386_size_dynamic_sections): Zero out the - dynamic allocated content space. Add a comment to remind us that - one day this ought to be fixed. - * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. - * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise. - * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. - -2000-08-21 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_pc16): Just write the immediate - field with the newly relocated value instead of adding it to the - existing immediate field. - (elf32_i860_relocate_splitn): Likewise. - (elf32_i860_relocate_highadj): Likewise. - -2000-08-16 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_pc16): Implemented function (it - was previously just a stub). - -2000-08-16 Alexandre Oliva - - * elflink.c (_bfd_elf_create_got_section): Don't abort(). - Formatting fixes. - (_bfd_elf_create_dynamic_sections): Likewise. - -2000-08-16 Andrew Macleod - - * elf64-sparc.c (sparc64_elf_relocate_section): Set relocation address - for undefined symbols to be the beginning of the section. - - * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Don't allocate - four extra entries at the beginning of the .rela.plt section. - (sparc64_elf_finish_dynamic_symbol): Adjust the offset in the .rela.plt - section to account for the four reserved entries in the .plt section. - -2000-08-15 Geoffrey Keating - - * xcofflink.c (_bfd_ppc_xcoff_relocate_section): Add ori r0,r0,0 - to the list of NOPs we recognize after a branch-and-link. - Use the ori NOP when one is needed. - - * coff-rs6000.c (_bfd_xcoff_slurp_armap): Finish implementation - for large archives. - -2000-08-14 Jim Wilson - - * elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle - EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP. - (elf64_ia64_print_private_bfd_data): Likewise. Also handle - EF_IA_64_ABSOLUTE. - -2000-08-11 Alexandre Oliva - - * elf32-sh.c (sh_elf_set_mach_from_flags): Make it static. - -2000-08-10 Jason Eckhardt - - * elf32-i860.c (elf32_i860_relocate_section): New function. - (i860_final_link_relocate): New function. - (elf32_i860_relocate_splitn): New function. - (elf32_i860_relocate_pc16): New function. - (elf32_i860_relocate_highadj): New function. - (elf32_i860_howto): Minor adjustments to some relocations. - (elf_info_to_howto_rel): Define. - (elf_backend_relocate_section): Define. - -2000-08-10 Nick Clifton - - * elf32-arm.h: Fix formatting. - -2000-08-10 Bernd Schmidt - - * elf32-sh.c (sh_elf_reloc_loop): Make LAST_SYMBOL_SECTION static. - -2000-08-08 Jason Eckhardt - - * elf32-i860.c (elf32_i860_howto_table): Updated some fields. - -2000-08-07 Kazu Hirata - - * ieee.c (ieee_write_debug_part): Rewrite a comment. - * elf64-ia64.c: Fix a typo. - -2000-08-05 Jason Eckhardt - - * elf32-i860.c (elf32_i860_howto_table): New structure. - (lookup_howto): New function. - (elf32_i860_reloc_type_lookup): New function. - (elf32_i860_info_to_howto_rela): New function. - (elf_code_to_howto_index): New structure. - (elf_info_to_howto): Re-define as elf32_i860_info_to_howto_rela. - (bfd_elf32_bfd_reloc_type_lookup): Re-define as - elf32_i860_reloc_type_lookup. - -2000-08-04 Rodney Brown - - * som.c (struct fixup_format): Constify `format'. - (som_hppa_howto_table): Use SOM_HOWTO macro. - (try_prev_fixup, hppa_som_reloc): Decorate unused parameter. - (som_bfd_reloc_type_lookup): Likewise. - (compare_subspaces): Remove unused `count1', `count2'. - (som_begin_writing): Remove unused `total_reloc_size'. - (som_bfd_derive_misc_symbol_info): Decorate unused parameter. - (som_print_symbol, som_bfd_is_local_label_name): Likewise. - (som_set_reloc_info): Constify `cp'. Remove unused `addend'. - (som_find_nearest_line): Decorate unused parameter(s). - (som_sizeof_headers, som_get_symbol_info, som_write_armap): Likewise. - (som_bfd_link_split_section): Likewise. - -2000-08-03 Nick Clifton - - * section.c: Restore backed out code. - * elf.c: Restore backed out code. - (copy_private_bfd_data): Fix bug preventing stipped dynamic - binaries from working. - * bfd-in2.h: Regenerate. - -2000-08-03 H.J. Lu - - * section.c: Back out the change made by Nick Clifton - on 2000-07-31. It breaks stripping dynamic - binaries. - * bfd-in2.h: Likewise. - * elf.c: Likewise. - -2000-08-03 Alexandre Oliva - - * elf32-sh.c (sh_elf_reloc_loop): Warning removal. - -2000-07-31 Jason Eckhardt - - * reloc.c (BFD_RELOC_860_*): New bfd relocs for i860. - * bfd-in2.h, libbfd.h: Regenerate. - -2000-07-31 Nick Clifton - - * section.c (struct sec): Add new boolean field 'segment_mark'. - (STD_SECTION): Initialise new field to zero. - - * bfd-in2.h: Regenerate. - - * elf.c (copy_private_bfd_data): Reorganise section to segment - mapping to cope with moved sections requiring new segments, - and overlapping segments. - (SEGMENT_END): New macro: Return the end address of a segment. - (IS_CONTAINED_BY_VMA): New macro: Determine if a segment - contains a section by comparing their VMA addresses. - (IS_CONTAINED_BY_LMA): New macro: Determine if a segment - contains a section by comparing their LMA addresses. - (INCLUDE_SECTION_IN_SEGMENT): New macro: Determine if a - section should be included in a segment. - (SEGMENT_AFTER_SEGMENT): New macro: Determine if one segment - follows another in memory. - (SEGMENT_OVERLAPS_SEGMENT): New macro: Determine if two - segments overlap. - -2000-07-22 Jason Eckhardt - - * cpu-i860.c: Added comments. - - * elf32-i860.c (TARGET_LITTLE_SYM): Defined to - bfd_elf32_i860_little_vec. - (TARGET_LITTLE_NAME): Defined to "elf32-i860-little". - (ELF_MAXPAGESIZE): Changed to 4096. - - * targets.c (bfd_elf32_i860_little_vec): Declaration of - new target. - (bfd_target_vector): Added bfd_elf32_i860_little_vec. - - * config.bfd (i860-stardent-sysv4*, i860-stardent-elf*): Added - config for little endian elf32 i860. - (targ_defvec): Define for the new config above - as "bfd_elf32_i860_little_vec". - (targ_selvecs): Define for the new config above - as "bfd_elf32_i860_vec bfd_elf32_i860_little_vec" - - * configure.in (bfd_elf32_i860_little_vec): Added recognition - of new target vec. - - * configure: Regenerated. - -2000-07-27 H.J. Lu - - * elflink.h (elf_merge_symbol): Take one more argument, - dt_needed, to indicate if the symbol comes from a DT_NEEDED - entry. Don't overide the existing weak definition if dt_needed - is true. - (elf_link_add_object_symbols): Pass dt_needed to - elf_merge_symbol (). - -2000-07-27 Nick Clifton - - * elflink.h (elf_link_size_reloc_section): Zeroes the section's - allocated contents. - -2000-07-25 Geoffrey Keating - - * configure.host (*-*-aix*): AIX has 'long long' always. - - * coff-rs6000.c (xcoff_write_one_armap_big): New procedure. - (xcoff_write_armap_big): Write both 32-bit and 64-bit armaps. - (xcoff_write_archive_contents_big): Don't update the offset - of the symbol table, xcoff_write_armap will do it. - -2000-07-23 Ulf Carlsson - - * elf32-mips.c (_bfd_mips_elf_check_relocs): Use abfd instead - of dynobj for SGI_COMPAT checks. - -2000-07-21 Michael Sokolov - - * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): New function. - * bfd-in.h (bfd_m68k_coff_create_embedded_relocs): Add declaration. - * bfd-in2.h: Regenerate. - -2000-07-21 Nick Clifton - - * elf32-mips.c (_bfd_mips_elf_check_relocs): Detect out of - range symbol indices in relocs and issue an error message. - -2000-07-20 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check - info->new_dtags when setting DT_FLAGS_1. It will only be set - by the new linker options. It shouldn't break anything. - -2000-07-20 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set DT_FLAGS_1 - only if info->new_dtags is true. - -2000-07-20 H.J. Lu - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set - DT_RUNPATH and DT_FLAGS only if info->new_dtags is true. - -2000-07-20 Hans-Peter Nilsson - - * Makefile.am (ALL_MACHINES): Add cpu-cris.lo. - (ALL_MACHINES_CFILES): Add cpu-cris.c. - (BFD32_BACKENDS): Add aout-cris.lo and elf32-cris.lo. - (BFD32_BACKENDS_CFILES): Add aout-cris.c and elf32-cris.c. - (cpu-cris.lo, aout-cris.lo, elf32-cris.lo): New rules. - * Makefile.in: Rebuild. - * aclocal.m4: Rebuild. - * aoutx.h (NAME(aout,machine_type)): Add case for bfd_arch_cris. - * archures.c (enum bfd_architecture): Add bfd_arch_cris. - (bfd_cris_arch): Declare. - (bfd_archures_list): Add bfd_cris_arch. - * bfd-in2.h: Rebuild. - * config.bfd: (cris-*-*): New target. - * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vectors. - * configure: Rebuild. - * elf.c (prep_headers): Add bfd_arch_cris. - * libbfd.h: Rebuild. - * libaout.h (enum machine_type): Add M_CRIS. - * reloc.c: Add CRIS relocations. - * targets.c (bfd_elf32_cris_vec, cris_aout_vec): Declare. - (bfd_target_vect): Add bfd_elf32_cris_vec and cris_aout_vec. - * cpu-cris.c, aout-cris.c, elf32-cris.c: New files. - * po/POTFILES.in, po/bfd.pot: Regenerate. - -2000-07-19 H.J. Lu - - * elf32-arm.h (elf32_arm_size_dynamic_sections): Also set - DF_TEXTREL if DT_TEXTREL is set. - * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. - * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise. - * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. - * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Likewise. - * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. - * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise. - * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise. - * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. - * elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise. - * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise. - - * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also - set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if - DT_RPATH is set. - Set the DT_FLAGS and DT_FLAGS_1 entries if necessary. - -2000-07-19 H.J. Lu - - * bfd-in.h (bfd_elf_set_dt_needed_soname): New. - * bfd-in2.h: Rebuild. - - * elf-bfd.h (elf_obj_tdata): Add dt_soname. - (elf_dt_soname): New. - - * elf.c (bfd_elf_set_dt_needed_soname): New. - - * elflink.h (elf_link_add_object_symbols): Add the DT_NEEDED - entry if the shared object loaded by DT_NEEDED is used to - resolve the reference in a regular object. - -2000-07-19 H.J. Lu - - * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_CONFIG, - DT_DEPAUDIT and DT_AUDIT as strings. - -2000-07-19 Nick Clifton - - * format.c: Fix formatting. - -2000-07-19 H.J. Lu - - * elf.c (_bfd_elf_print_private_bfd_data): Fix DT_CHECKSUM. - -2000-07-19 H.J. Lu - - * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_BIND_NOW, - DT_INIT_ARRAY, DT_FINI_ARRAY, DT_INIT_ARRAYSZ, DT_FINI_ARRAYSZ, - DT_RUNPATH, DT_FLAGS, DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ, - DT_PLTPADSZ, DT_MOVEENT, DT_MOVESZ, DT_FEATURE, DT_POSFLAG_1, - DT_SYMINSZ, DT_SYMINENT, DT_CONFIG, DT_DEPAUDIT, DT_AUDIT, - DT_PLTPAD, DT_MOVETAB, DT_SYMINFO, DT_RELACOUNT, DT_RELCOUNT, - DT_FLAGS_1, DT_USED and DT_CHECKSUM. - -2000-07-18 Andrew Cagney - - * elf.c (bfd_elf_get_sign_extend_vma, bfd_elf_get_arch_size): Move - renamed functions from here... - (assign_section_numbers): Use renamed functions. - (prep_headers): Use renamed functions. - - * bfd.c (bfd_get_sign_extend_vma, bfd_get_arch_size): ...To here. - * bfd-in.h (bfd_get_sign_extend_vma, bfd_get_arch_size): Update. - * bfd-in2.h: Regenerate. - -2000-07-18 Ulf Carlsson - - * elf32-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Add - parenthesis in if statement. - -2000-07-17 Koundinya K - - Enable the support for Traditional MIPS. - * elf32-mips.c (IRIX_COMPAT): Recognize bfd_elf32_tradbigmips_vecand - return ict_none appropriately for traditional mips targets. - (STUB_LW): Change 0x8f998000 to 0x8f998010 for traditional mips. - (STUB_MOVE): Conditionalize for traditonal mips. - (STUB_LI16): Likewise. - (_bfd_mips_elf_modify_segment_map): Conditionalize to avoid making - room for RTPROC header. - (_bfd_mips_elf_modify_segment_map): For a normal mips executable set - the permission for the PT_DYNAMIC as read, write and execute. - (mips_elf_calculate_relocation): Check for the symbol _DYNAMIC_LINKING - for traditonal mips. - (_bfd_mips_elf_create_dynamic_sections): Add the symbol - _DYNAMIC_LINKING for traditonal mips. - (_bfd_mips_elf_create_dynamic_sections): Add the symbol __RLD_MAP - in case of traditonal mips. - (_bfd_mips_elf_adjust_dynamic_symbol): Create a stub only if a PLT - entry is required. For a function if PLT is not required then set the - corresponding hash table entry to 0. - (_bfd_mips_elf_size_dynamic_sections): Add DT_DEBUG entry for - traditonal mips. - (_bfd_mips_elf_finish_dynamic_symbol): for a undefined symbol in a - shared object set the value to 0. - (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol - _DYNAMIC_LINKING for traditonal mips. - (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol __RLD_MAP - for traditonal mips. - -2000-07-15 H.J. Lu - - * aoutx.h (translate_to_native_sym_flags): Handle BSF_LOCAL. - -2000-07-12 Charles Wilson - - * libbfd.c (bfd_seek): fix 'seek beyond EOF' error when writing - out a structure that is BFD_IN_MEMORY. - -2000-07-11 Alan Modra - - * elf64-hppa.c (get_dyn_name): Pass in section pointer instead of - bfd pointer. Print section id instead of bfd pointer for local - syms. Prefix addend with `+' for global syms as well as local. - Correct calculation of name component lengths. - (elf64_hppa_check_relocs): Update call to get_dyn_name. - - From David Huggins-Daines - * elf-hppa.h (elf_hppa_relocate_section): Update calls here too. - * elf64-hppa.c (elf64_hppa_check_relocs): Fix some warnings. - (elf64_hppa_modify_segment_map): Likewise. - -2000-07-11 Andrew Cagney - - * elf.c (bfd_elf_get_sign_extend_vma): Return tendency of VMA - addresses to be "naturally" sign extended. Return -1 if unknown. - * bfd-in.h (bfd_elf_get_sign_extend_vma): Add declaration. - * bfd-in2.h: Regenerate. - -2000-07-11 Andrew Cagney - - * ecoffswap.h (ecoff_get_off, ecoff_put_off): Add ECOFF_SIGNED_32 - and ECOF_SIGNED_64 to list ways to extract an offset. - (ecoff_swap_fdr_in, ecoff_swap_fdr_out, ecoff_swap_pdr_in, - ecoff_swap_pdr_out, ecoff_swap_ext_in, ecoff_swap_ext_out): - Update. - * elf64-mips.c (ECOFF_SIGNED_64): Define instead of ECOFF_64. - * elf32-mips.c (ECOFF_SIGNED_32): Define instead of ECOFF_32. - -2000-07-11 Andrew Cagney - - * elfcode.h (elf_object_p): Use bfd_set_start_address and not - bfd_get_start_address. - (elf_swap_ehdr_in): Sign extend e_entry when applicable. - (elf_swap_ehdr_out): Ditto. - -2000-07-10 Alexander Aganichev - - * archures.c (bfd_default_scan): Add set of bfd_mach_ cases for - compatibility with older binutils. - -2000-07-10 Alan Modra - - * section.c (bfd_make_section_anyway): Start section_id at 0x10. - (STD_SECTION): Avoid negative ids, instead use 0 to 3. - - From Ryan Bradetich - * dwarf1.c (parse_die): Cure signed/unsigned char warnings. - (parse_line_table): Ditto. - (_bfd_dwarf1_find_nearest_line): Ditto. - * syms.c (cmpindexentry): Remove extra `*' from params. - -2000-07-09 Koundinya K - - * elf32-mips.c (sort_dynamic_relocs): New Function. - (_bfd_mips_elf_finish_dynamic_sections): Call sort_dynamic_relocs - via qsort to sort the dynamic relocations in increasing r_symndx - value. - -2000-07-09 Alan Modra - - * elf64-hppa.c (elf64_hppa_dyn_hash_table_init): Add - ATTRIBUTE_UNUSED to unused args. - (get_opd): Likewise. - (get_plt): Likewise. - (get_dlt): Likewise. - (get_stub): Likewise. - (elf64_hppa_adjust_dynamic_symbol): Likewise. - (elf64_hppa_link_output_symbol_hook): Likewise. - (elf64_hppa_check_relocs): Delete unused var. - (elf64_hppa_size_dynamic_sections): Likewise. - (elf64_hppa_finalize_opd): Likewise. - (elf64_hppa_finalize_dynreloc): Likewise. - (elf64_hppa_modify_segment_map): Likewise. - (elf64_hppa_finish_dynamic_sections): Likewise. - - * elf-hppa.h (elf_hppa_final_write_processing): Add - ATTRIBUTE_UNUSED to unused args. - (elf_hppa_final_link_relocate): Likewise. - (elf_hppa_record_segment_addrs): Add paretheses. - (elf_hppa_relocate_section): Constify dyn_name. - - From David Huggins-Daines - * config.bfd: Add hppa*64*-*-linux-gnu 64-bit target, and - rearrange case statement so that it gets preferred to 32-bit ones. - - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Use - asection->id instead of address of asection structure. - (elf32_hppa_size_stubs): Likewise. - - * elf32-hppa.c (elf32_hppa_size_stubs): Use just one stub section - for .init* and .fini*. - - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Mask pointers - and addends used in stub names to 32 bits. - (elf32_hppa_size_stubs): Likewise. - - * elf-hppa.h (elf_hppa_final_link_relocate): Don't sum addend - twice for R_PARISC_GPREL64. Use bfd_put_32 for R_PARISC_PCREL32, - not bfd_put_64. Fix minor comment typo and formatting. - - Changes to create multiple linker stubs, positioned immediately - before the section where they are required. - * elf32-hppa.c: Don't include hppa_stubs.h. - (elf32_hppa_stub_hash_entry): Add a pointer to the stub section. - (elf32_hppa_stub_hash_table): Delete. - (elf32_hppa_link_hash_entry): Delete. - (elf32_hppa_link_hash_table): Use plain bfd_hash_table for - stub_hash_table, and store the struct here rather than a pointer. - Delete output_symbol_count. Add offset array. Change - global_value to a bfd_vma. - (elf32_hppa_stub_hash_lookup): Use table instead of table->root. - (elf32_hppa_stub_hash_traverse): Delete. - (elf32_hppa_name_of_stub): Delete. - (elf32_hppa_link_hash_lookup): Delete. - (elf32_hppa_link_hash_traverse): Delete. - (elf32_hppa_stub_hash_table_init): Delete. - (elf32_hppa_size_of_stub): Pass input section and offset rather - than location and calculate location here. Don't pass name as all - stubs are now the same size. - (elf32_hppa_stub_hash_newfunc): Init new fields. - (elf32_hppa_link_hash_table_create): Likewise, and stub_hash_table - too. - (elf32_hppa_bfd_final_link_relocate): Cast enums to int before - comparing against ints. Rewrite stub handling code. - (elf32_hppa_relocate_section): Make r_type and r_symndx unsigned. - Case enums to int before comparing against ints. Remove - bfd_reloc_dangerous case. - (elf32_hppa_build_one_stub): Rewrite. - (elf32_hppa_size_one_stub): New function. - (elf32_hppa_build_stubs): Rewrite. - (elf32_hppa_size_stubs): Pass in linker call-back functions. - Rewrite stub-handling specific code. - - * elf32-hppa.h (elf32_hppa_size_stubs): Update prototype. - - * elf64-hppa.c (elf64_hppa_dyn_hash_entry): Fix a comment typo. - - * hppa_stubs.h: Delete. - * Makefile.am (SOURCE_HFILES): Remove hppa_stubs.h - (elf32-hppa.lo): Remove hppa_stubs.h from dependencies. - * Makefile.in: Regenerate. - - * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle e_nlsel and - e_nlrsel. - - * libhppa.h (hppa_field_adjust): Correct e_nsel case. - - * elf32-hppa.c (elf32_hppa_relocate_section): Mention the offset - and section name for bfd_reloc_notsupported error message. - (elf32_hppa_bfd_final_link_relocate): Print reasons for returning - bfd_reloc_notsupported. - (elf32_hppa_relocate_section): Add ATTRIBUTE_UNUSED to output_bfd. - - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Handle - undefined weak symbols for all relocs. - (elf32_hppa_size_of_stub): Adjust calculation by 8 since branch - offsets are relative to one past the delay slot. - (elf32_hppa_size_stubs): Account for reloc addend when calculating - branch destination. Put addend into stub name too. - (elf32_hppa_bfd_final_link_relocate): Account for reloc addend and - adjust by 8 when deciding whether a linker stub is needed. Put - addend into stub name as for above. - - * elf32-hppa.c (hppa_elf_relocate_insn): Change signed/unsigned on - various args and vars. - (elf32_hppa_bfd_final_link_relocate): Here too. - (elf32_hppa_size_stubs): Rename index -> indx. Use e_indx for - inner block var to avoid shadowing. - - * elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Make `field' arg - unsigned. - * elf64-hppa.h (_bfd_elf64_hppa_gen_reloc_type): Ditto. - * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Ditto. - (elf_hppa_fake_sections): Rename local var to avoid shadowing. - - * libhppa.h: Change practically all unsigned ints to plain ints. - Remove tests on gcc version. Instead use ATTRIBUTE_UNUSED for - prototypes. - - From Ryan Bradetich - * libhppa.h (hppa_opcode_type): New enum to replace #define's. - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Modify to - suit above. - From David Huggins-Daines - * elf-hppa.h (elf_hppa_relocate_insn): Update the opcode constants - to the new OP_* ones. - - * elf32-hppa.c (elf32_hppa_size_stubs): Consolidate freeing on - error exit. Bail out earlier on plabel relocs that we aren't - interested in. Don't tell elf32_hppa_stub_hash_lookup to copy - string, and then don't free our copy. - (elf32_hppa_build_one_stub): Make insn unsigned int. - - * libhppa.h (bfd_hppa_insn2fmt): 22 bit branches are only - available with BL, not BE and BLE. - - * elf32-hppa.c (hppa_elf_relocate_insn): Add some more example - code for elf arg relocs. - (elf32_hppa_bfd_final_link_relocate): Replace boolean is_local - argument with elf_link_hash_entry h. Handle undefined weak - symbols. Move $global$ lookup from here... - (elf32_hppa_relocate_section): ...to here. Return correct error - message for non-handled relocs. - (elf32_hppa_size_of_stub): Correctly test branch range. Previous - wrong test was -0x3ffff to +0x40000. - - * elf-hppa.h (elf_hppa_final_link_relocate): R_PARISC_DIR17R, - R_PARISC_DIR17F, and R_PARISC_DIR21L are for absolute branches; - Handle them as such. - (elf_hppa_relocate_insn): Fix a typo. - - * libhppa.h (GET_FIELD, GET_BIT, MASK, CATENATE, ELEVEN): Delete. - (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a, - assemble_17, assemble_21): Delete. - Supply defines for all 64 possible opcodes. - (bfd_hppa_insn2fmt): Add bfd argument, and use to select wide mode - formats. Handle COMICLR. - (hppa_rebuild_insn): Delete bfd argument. Handle formats 10, -11, - -10, -16, 16, 22. - - * elf32-hppa.c (hppa_elf_relocate_insn): Complete rewrite. - (elf32_hppa_bfd_final_link_relocate): Major rewrite. - (elf32_hppa_build_one_stub): Modify hppa_elf_relocate_insn calls - to suit. - (elf32_hppa_size_stubs): Don't free stub_name twice. Read in all - the local syms - did this code get deleted accidentally? Ignore - undefined and undefweak syms. - - * elf-hppa.h (elf_hppa_final_link): Move hppa_info to outermost - block. Use it instead of elf64_hppa_hash_table (info). - (elf_hppa_final_link_relocate): Use hppa_info instead of - elf64_hppa_hash_table (info). - - * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16, - re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn. - (hppa_rebuild_insn): Mask immediate bits here instead. - * elf-hppa.h (elf_hppa_relocate_insn): Mask here too. - -2000-07-08 Alan Modra - - * section.c (struct sec): Add id field. Tidy comment formatting. - (bfd_make_section_anyway): Set id. - (STD_SECTION): Init id too. - Change CONST to const throughout. - * archures.c (bfd_arch_info): Tidy comment. - (bfd_arch_list): Change a CONST to const. - * libbfd-in.h: Tidy comments and replace CONST with const. - * elf-bfd.h: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - * libcoff.h: Regenerate. - -2000-07-07 DJ Delorie - - * archive.c (_bfd_write_archive_contents): Add an informative - comment. - -2000-07-06 Kazu Hirata - - * srec.c: Fix formatting. - -2000-06-05 DJ Delorie - - * MAINTAINERS: new - -2000-07-04 Alexandre Oliva - - * coff-arm.c (coff_arm_relocate_section): Do not ignore the symbol - value of PC-relative offsets. - -2000-07-03 Jim Wilson - - * elf64-alpha.c (alpha_elf_size_info): New. - (elf_backend_size_info): Define to alpha_elf_size_info. - * elfcode.h (elf_size_info): Change hash bucket size to 4. - -2000-07-03 Ulf Carlsson - - * elf32-mips.c: Include elf32-target.h again for the traditional - MIPS targets. - -2000-07-03 Marek Michalkiewicz - - * elf32-avr.c (bfd_elf32_bfd_reloc_type_lookup): - Add ATTRIBUTE_UNUSED to unused arguments to avoid warnings. - (avr_info_to_howto_rela): Likewise. - (elf32_avr_gc_mark_hook): Likewise. - (elf32_avr_gc_sweep_hook): Likewise. - (elf32_avr_relocate_section): Likewise. - -2000-07-03 Mark Elbrecht - - * cofflink.c (_bfd_coff_write_global_sym): Turn a weak symbol into - an external symbol for a non-shared, non-relocatable link. - -2000-07-03 Nick Clifton - - * cofflink.c (IS_EXTERNAL): New macro: Return true if the symbol - is an external symbol. - (IS_WEAK_EXTERNAL): New macro: Return true if the symbol is a weak - external symbol. - -2000-07-03 Kazu Hirata + * coffcode.h (coff_set_arch_mach_hook): Select the highest known + ARM architecture when an F_ARM_5 flag is detected, since we cannot + be sure exactly which architecture this represents. + +2002-02-05 Nick Clifton + + * po/tr.po: Updated translation. + +2002-02-05 Alan Modra + + From Jimi X + * archures (bfd_mach_ppc64): Define. + (bfd_powerpc_arch): Rename to bfd_powerpc_archs. + (bfd_powerpc_arch): Define. + * bfd-in2.h: Regenerate. + * cpu-powerpc.c (arch_info_struct): Rename to bfd_powerpc_archs. + (bfd_powerpc_arch): Move to tail of bfd_powerpc_archs. + (bfd_powerpc_archs): Add default powerpc64 arch. + +2002-02-05 Alan Modra + + * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocs + against section syms in readonly sections. Don't do the global + sym check if we find one. + * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise. + * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise. + * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise. + (elf_s390_grok_prstatus): Add missing prototype. + +2002-02-04 Hans-Peter Nilsson + + * elf64-mmix.c (mmix_dump_bpo_gregs): New function. + (mmix_elf_check_common_relocs) : + Call bfd_get_section_by_name only once. Initialize + bpodata->n_bpo_relocs_this_section. + (_bfd_mmix_prepare_linker_allocated_gregs): Remove comment + referring to DSOs. + (bpo_reloc_request_sort_fn): Don't use difference of values as + return-value. + +2002-02-02 David O'Brien + + * configure.in: Tweak the FreeBSD 4.x recognition more. Only treat + version 4.5 and later the same as 5-CURRENT. + * configure: Re-generate. + +2002-02-02 Jason Thorpe + + * config.bfd (hppa*-*-netbsd*): New target. + +2002-01-31 Philipp Thomas + + * coff-arm.c (coff_arm_merge_private_bfd_data): Move ERROR + to front of message. Unify messages with elf32-arm.h. Use + commas where neccessary. + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Use all upcase + ERROR in messages. Unify messages with coff-arm.c. Correct + VFP/FPA error message. + (elf32_arm_print_private_bfd_data): Don't mark APCS-26 and + APCS-32 for translation. + +2002-02-01 Hans-Peter Nilsson + + Perform on-demand global register allocation from + R_MMIX_BASE_PLUS_OFFSET relocs. + * elf64-mmix.c (struct bpo_reloc_section_info, struct + bpo_reloc_request, struct bpo_greg_section_info): New. + (mmix_elf_check_common_relocs, mmix_elf_gc_sweep_hook, + bpo_reloc_request_sort_fn, mmix_elf_relax_section, + _bfd_mmix_check_all_relocs, + _bfd_mmix_prepare_linker_allocated_gregs, + _bfd_mmix_finalize_linker_allocated_gregs): New functions. + (elf_mmix_howto_table): Correct src_mask for most relocs. + (mmix_elf_perform_relocation) : New + case. + (mmix_final_link_relocate) : New + case. Fix typo in comment. New label do_mmix_reloc. + (mmix_elf_check_relocs): Abuse bfd_link_info member base_file to + store first object file with a base-plus-offset reloc. Call + mmix_elf_check_common_relocs for the part common with mmo. + (mmix_elf_final_link): Write out linker-allocated register + contents section. + (elf_backend_gc_sweep_hook): Define. + (bfd_elf64_bfd_relax_section): Define. - * reloc16.c: Fix formatting. + * mmo.c: Don't include + (mmo_init): Correct init-once logic. -2000-07-01 Koundinya K +2002-02-01 Tom Rix - * config.bfd: Change targ_defvec and targ_selvecs for mips*-*-sysv4* - to add a new target for traditional mips i.e - bfd_elf32_tradbigmips_vec and bfd_elf32_tradlittlemips_vec. - * configure.in: Likewise. - * configure: Rebuild. - * targets.c (bfd_elf32_tradbigmips_vec): Declare and put in - bfd_target_vector. - (bfd_elf32_tradlittlemips_vec): Likewise. - * elfxx-target.h: Add macro INCLUDED_TARGET_FILE which is more a test - to see that elfNN_bed does not get redefined even if the target file - is included twice for a chip. See elf32-mips.c. + * config.bfd: Conditionally support for pre AIX 4.3. -2000-07-01 Alan Modra +2002-02-01 Alan Modra - * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed - (CLEANFILES): Add DEPA. + * Makefile.am: Run "make dep-am" * Makefile.in: Regenerate. -2000-06-30 DJ Delorie - - * peicode.h (coff_swap_filehdr_in): can't use e_magic because we - can't assume the PE header is at 0x80. +2002-01-31 David O'Brien -2000-06-29 Mark Elbrecht - - * syms.c (_bfd_stab_section_find_nearest_line): Use IS_ABSOLUTE_PATH. - -2000-06-28 Mark Elbrecht - - * go32stub.h: Update stub. - -2000-06-26 Marek Michalkiewicz - - * archures.c (bfd_mach_avr5): Define. - * bfd-in2.h (bfd_mach_avr5): Define. - * cpu-avr.c (arch_info_struct): Rename bfd_mach_avr4 to - bfd_mach_avr5, add bfd_mach_avr4. Update comments. - (compatible): Update comment. Add missing test. - * elf32-avr.c (avr_final_link_relocate): Support 8K wrap - for avr2 and avr4. Simplify 8K wrap code. - (bfd_elf_avr_final_write_processing): Recognize bfd_mach_avr5. - (elf32_avr_object_p): Recognize E_AVR_MACH_AVR5. - -2000-06-26 Kazu Hirata - - * coff-h8300.c: Fix formatting. - * cpu-h8300.c: Likewise. - -2000-06-24 Alexandre Oliva - - * elf32-arm.h (elf32_arm_final_link_relocate): Print `(local)' - for local symbols whose names are unknown. + * configure.in: Recognize the differences in core files from FreeBSD + 4.{0,1} and later versions of 4.x. This treats 4.2+ the same as + 5-CURRENT. + * configure: Regenerate. -2000-06-22 Alan Modra +2002-01-31 Ivan Guzvinec - * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we - find one. + * coff-or32.c: New file. + * cpu-or32.c: New file. + * elf32-or32.c: New file. + * archures.c: Add support for or32. + * targets.c: Add support for or32. + * bfd-in2.h: Regenerate. + * coffcode.h (coff_set_arch_mach_hook, coff_set_flags, + coff_write_object_contents): Add support for or32. + * config.bfd: Add target. + * configure.in: Add support for or32. + * configure: Regenerate. + * Makefile.am: Add support for or32. * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2000-06-20 H.J. Lu - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - -2000-06-20 Maciej W. Rozycki - - * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): New function. - (elf_backend_copy_indirect_symbol): Map to the new function. - -2000-06-20 Alan Modra - - * archive.c (normalize): Correct pointer comparison when checking - for backslashes. - (bfd_bsd_truncate_arname): Likewise. - (bfd_gnu_truncate_arname): Likewise. - -2000-06-20 Ulf Carlsson - - * elf-bfd.h (struct elf_obj_tdata): Define per BFD Irix 5 virtual - sections elf_{text,data}_{section,symbol}. - * elf32-mips.c: mips_elf_{text,data}_{section,symbol}{,_ptr}: Remove. - (_bfd_mips_elf_hide_symbol): New function. - (elf_backend_hide_symbol): Map to the new function. - (_bfd_mips_elf_add_symbol_hook): Change to use new per BFD - definitions of mips_elf_{text,data}_{section,symbol}. - (mips_elf_local_relocation_p): Try to find the direct symbol - based on new check_forced argument. - (mips_elf_calculate_relocation): Use new version of - mips_elf_local_relocation_p. - (mips_elf_relocate_section): Likewise. - (_bfd_mips_elf_relocate_section): Likewise. - (mips_elf_sort_hash_table): Only assert that have enough GOT - space. - (mips_elf_got16_entry): Match all 32 bits to the existing GOT - entry if the relocation based on the new external argument. - (mips_elf_create_dynamic_relocation): Assert that we have a - section contents allocated where we can swap out the dynamic - relocations. - (mips_elf_calculate_relocation): Find the real hash-table entry - correctly by using h->root.root.type. Only create a dynamic - relocation entry if the symbol is defined in a shared library. - Create an external GOT entry for the GOT16 relocation if the - symbol was forced local. - (_bfd_mips_elf_finish_dynamic_symbol): Don't assert there is a - dynamic index if the symbol was forced local. - -2000-06-20 Maciej W. Rozycki - - * elf32-mips.c: Fix typos in comments. - -2000-06-19 Mark Kettenis - - * rs6000-core.c: Wrap definition of `union VmInfo' within #ifdef - CORE_VERSION_1. - -2000-06-18 Stephane Carrez - - * Makefile.in, bfd-in2.h, libbfd.h, configure: Rebuild. - * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES, BFD32_BACKENDS, - BFD32_BACKENDS_CFILES): Add 68hc12, 68hc11 files. - * configure.in (bfd_elf32_m68hc12_vec): Recognize. - (bfd_elf32_m68hc11_vec): Likewise. - * config.bfd (targ_cpu): Recognize 68hc12 and 68hc11. - Supports 68hc11 & 68hc12 at the same time. - * targets.c (bfd_elf32_m68hc12_vec): Declare and put in - bfd_target_vector. - (bfd_elf32_m68hc11_vec): Likewise. - * elf.c (prep_headers): Recognize bfd_arch_m68hc12 and 68hc11. - * archures.c (bfd_m68hc12_arch): Define and register in global list - (bfd_m68hc11_arch): Likewise. - * reloc.c (BFD_RELOC_M68HC11_HI8, BFD_RELOC_M68HC11_LO8, - BFD_RELOC_M68HC11_3B): Define. - * cpu-m68hc12.c, elf32-m68hc12.c: New files for 68hc12 support. - * cpu-m68hc11.c, elf32-m68hc11.c: New files for 68hc11 support. - -2000-06-18 Ulf Carlsson + * po/SRC-POTFILES.in: Add or32 files. + * po/bfd.pot: Regenerate. - * elf_bfd.h (struct elf_backend_data): Add info argument to - elf_backend_hide_symbol. - (_bfd_elf_link_hash_hide_symbol): Likewise. - * elf.c (_bfd_elf_link_hash_hide_symbol): Likewise. - * elf64-ia64.c (elf64_ia64_hash_hide_symbol): Likewise. - * elflink.h (elf_link_add_object_symbols): Likewise. - (elf_link_assign_sym_version): Likewise. +2002-01-31 Nick Clifton + Don Lindsay -2000-06-18 H.J. Lu + * elf32-mips.c (mips_elf_calculate_relocation): Replace 'return + false' with a return of a bfd_reloc_ error code. - * coff-i386.c (coff_i386_reloc): Don't return in case of - output_bfd == (bfd *) NULL if COFF_WITH_PE is defined. - Compensate PE relocations when linking with non-PE object - files to generate a non-PE executable. +2002-01-31 Hans-Peter Nilsson -2000-06-17 Ulf Carlsson + * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't + unexport unreferenced symbols when --export-dynamic. Call + _bfd_elf_strtab_delref when unexporting. - * elf32-mips.c (mips_elf_calculate_relocation): Explicitly write - GOT entries if we're doing a static link or -Bsymbolic link. +2002-01-30 Daniel Jacobowitz -2000-06-15 Ulf Carlsson + * bfd-in.h: Include if it is available. + * bfd-in2.h: Regenerated. - * elflink.h (elf_link_adjust_relocs): Check for and call backend - specifific swap_reloc_{in,out} and swap_reloca_{in,out} if - available. - (elf_link_output_relocs): Likewise. - (elf_reloc_link_order): Likewise. +2002-01-31 Alan Modra -2000-06-16 Nicholas Duffek + * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions should + not go via the plt. - * archures.c (enum bfd_architecture): #define constants for - PowerPc and RS6000 machine numbers. - * bfd-in2.h: Regenerate. - * coffcode.h (coff_set_arch_mach_hook): #ifdef XCOFF64, set arch - to bfd_arch_powerpc instead of bfd_arch_rs6000. Refer to PowerPc - and RS6000 machine numbers using #defined constants from - archures.c. - * cpu-powerpc.c (arch_info_struct): Refer to PowerPc and RS6000 - machine numbers using #defined constants from archures.c. Add - entries for EC603e, 630, A35, RS64II, RS64III, 7400. Specify - 64-bit words in 620 entry. - * cpu-rs6000.c (arch_info_struct): Create with entries for RS1, - RSC, and RS2. - (bfd_rs6000_arch): Change default machine to 0 (bfd_mach_rs6k). - -2000-06-16 Nicholas Duffek - - * coffcode.h (coff_mkobject_hook): Set xcoff_tdata.xcoff64. - * libcoff-in.h (struct xcoff_tdata): Define xcoff64 field. - * libcoff.h (struct xcoff_tdata): Define xcoff64 field. +2002-01-30 Nick Clifton -2000-06-16 Nicholas Duffek + * archures.c: Tidy up formatting of embedded comments. + * bfd.c: Tidy up formatting of embedded comments. + * bfd-in.h: Fix formatting of comments. + * reloc.c: Tidy up formatting of ordinary & embedded comments. + * section.c: Tidy up formatting of embedded comments. + * syms.c: Tidy up formatting of embedded comments. + * targets.c: Tidy up formatting of embedded comments. - * bfd-in.h (bfd_family_coff): Define. * bfd-in2.h: Regenerate. - * coffgen.c (coff_count_linenumbers, coff_symbol_from, - coff_find_nearest_line): Check COFFness using bfd_family_coff() - instead of bfd_target_coff_flavour. - * cofflink.c (_bfd_coff_final_link): Likewise. - * cpu-ns32k.c (do_ns32k_reloc): Don't strcmp() target name to - exclude XCOFF files. - * reloc.c (bfd_perform_relocation, bfd_install_relocation): - Likewise. - * targets.c (enum bfd_flavour): Add bfd_target_xcoff_flavour. - * xcoff-target.h (TARGET_SYM): Use bfd_target_xcoff_flavour. - * xcofflink.c (XCOFF_XVECP): Delete. - (bfd_xcoff_link_record_set, bfd_xcoff_import_symbol, - bfd_xcoff_export_symbol, bfd_xcoff_link_count_reloc, - bfd_xcoff_record_link_assignment, - bfd_xcoff_size_dynamic_sections): Replace XCOFF_XVECP() with - check for bfd_target_xcoff_flavour. - -2000-06-16 Nicholas Duffek - - * rs6000-core.c: Support 64-bit core files, support pre-4.3 core - files on AIX 4.3. - (read_hdr): New function. - (rs6000coff_core_p): Store mstsave or __context64 struct instead - of trying to extract individual registers. Set abfd->arch_info - to match the architecture that created the core file. - (rs6000coff_get_section_contents): Delete. - * xcoff-target.h (rs6000coff_get_section_contents): Delete. - -2000-06-14 H.J. Lu - - * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_rec) - is NULL. - -2000-06-13 H.J. Lu - - * configure: Regenerate. - -2000-06-13 J"orn Rennecke - - * peicode.h (pe_ILF_object_p): Use TARGET_LITTLE_SYM instead of - armpei_little_vec. - -2000-06-08 David O'Brien - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-07 Alan Modra - * elf32-d10v.c: Include elf/d10v.h - (enum reloc_type): Delete. - * elf32-d30v.c: Include elf/d30v.h - (enum reloc_type): Delete. +2002-01-30 Nick Clifton - * Makefile.am: Run "make dep-am" to regenerate dependencies. - * Makefile.in: Regenerate. - - * elf32-i386.c (elf_howto_table): Remove EMPTY_HOWTOs. - (elf32_i386_vtinherit_howto, elf32_i386_vtentry_howto): Delete and - move HOWTOs into elf_howto_table. - (R_386_standard, R_386_ext_offset): Define. - (R_386_ext, R_386_vt_offset, R_386_vt): Define. - (elf_i386_reloc_type_lookup): Modify calculation of index into - elf_howto_table since we've removed the padding. - (elf_i386_info_to_howto_rel): Likewise. - (elf_i386_relocate_section): Likewise. + * vms-tir.c (cmd_name): New function. + (tir_cmd_name): New function. + (etir_sta, etir_sto, etir_opr, etir_stc): Use cmd_name(). + (tir_opr, tir_ctl, tir_cmd): use tir_cmd_name(). + Fix formatting. -2000-06-06 Michael Snyder + * peXXigen.c (pe_print_idata): Rearrange message to aid in + translation. + (pe_print_pdata): Rearrange message to aid in translation. - * elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t. + * libbfd.c (warn_deprecated): Rearrange error message to aid in + translation. -2000-06-05 H.J. Lu + * ihex.c (ihex_write_object_contents): Fix spelling typo. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag - an error when seeing an undefined symbol with hidden/internal - attribute. It is handled in *_relocate_section (). + * ieee.c (ieee_slurp_external_symbols): Remove spurious space. -2000-06-05 H.J. Lu + * elf64-sparc.c (sparc64_elf_add_symbol_hook): Rearrange error + message to aid in translation. - * elflink.h (elf_fix_symbol_flags): Follow the link for the - indirect symbol for the ELF_LINK_NON_ELF bit. - (elf_link_output_extsym): Don't output the indirect symbol even - if the ELF_LINK_NON_ELF bit is set. + * elf64-mmix.c (mmix_final_link_relocate): Rearrange error message + to aid in translation. -2000-06-01 J.T. Conklin + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix typo. - * config.bfd (i[3456]86-*-netbsdelf*): New target. - (i[3456]86-*-netbsdaout*): New target. - (i[3456]86-*-netbsd*): Add bfd_elf32_i386_vec to targ_selvecs. - (i[3456]86-*-openbsd*): Likewise. +2002-01-30 Philipp Thomas -2000-05-30 Andrew Cagney + * coff-arm.c, elf32-elf.h: Unify messages. - * trad-core.c: From hpux-core.c, include or - when possible. +2002-01-30 Nick Clifton -2000-05-31 Ulrich Drepper + * po/sv.po: Updated translation. - * elf.c (_bfd_elf_slurp_version_tables): Correct reading of version - definitions. We must not assume they are sorted in the file - according to their index numbers. +2002-01-30 Philipp Thomas -2000-05-31 Alan Modra + * dwarf2.c (read_abbrev): Use full section name in error message. + (decode_line_info): Likewise. - * elf-hppa.h: (elf_hppa_final_link_relocate): Use e_rsel field - selector for R_PARISC_PCREL17R. R_PARISC_DIR17R and - R_PARISC_DIR17F are for absolute branches; Handle them as such. + * elf.c (_bfd_elf_symbol_from_bfd_symbol): Don't translate debugging + message. -2000-05-30 Nick Clifton +2002-01-30 Alan Modra - * cpu-i960.c (scan_960_mach): Accept 80960KA, 80960KB, - 80960CA, 80960MC as valid machine names. + * elf64-ppc.c (func_desc_adjust): Only provide missing function + descriptor symbols for undefined function code syms. Clear + ELF_LINK_NON_ELF so that they can stay weak. -2000-05-30 H.J. Lu +2002-01-29 Chris Demetriou + Mitch Lichtenberg - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the - visibility bits if the symbol is undefined. Correctly handle - weak undefined symbols with hidden and internal attributes. + * bfd-in.h (bfd_mips_elf32_create_embedded_relocs): New prototype. + * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): New function + to handle 32-bit ELF embedded reloc (ld --embedded-relocs) + generation. + * bfd-in2.h: Regenerate. - * elflink.h (elf_link_add_object_symbols): Always turn the - symbol into local if it has the hidden or internal attribute. +2002-01-29 Chris Demetriou -2000-05-29 Philip Blundell + * elf32-mips.c: Add additional comments about HI16 relocation + processing. + (_bfd_mips_elf_hi16_reloc): Don't subtract address here for + pc-relative relocations. (Reverts change made on 2001-10-31.) + (_bfd_mips_elf_lo16_reloc): Subtract address of LO16 part here + for pc-relative relocations. + (mips_elf_calculate_relocation): Add a comment about a kludge + in the R_MIPS_GNU_REL_HI16 handling. + (_bfd_mips_elf_relocate_section): Implement that kludge; + adjust pc-relative HI16 relocation for difference in HI16 and + LO16 addresses, since it can't easily be done in + mips_elf_calculate_relocation. - * ppcboot.c: Add packed attribute if compiling with GCC. +2002-01-29 Martin Schwidefsky -2000-05-29 Anatoly Vorobey + * elf32-i386 (elf_i386_adjust_dynamic_symbol): Do not replace PLT32 + relocations with PC32 relocations for undefined or weak symbols. + * elf32-s390 (elf_i386_adjust_dynamic_symbol): Likewise. + * elf64-s390x (elf_i386_adjust_dynamic_symbol): Likewise. - * elf.c (_bfd_elf_link_hash_table_init): Initialize dynlocal. +2002-01-28 Jason Thorpe -2000-05-26 Michael Snyder + * elfcore.h (elf_core_file_p): Improve comment for last change. - * elf.c (elfcore_grok_prstatus, elfcore_grok_pstatus, - elfcore_grok_psinfo): Add code to allow debugging a 32-bit - corefile on a 64-bit (Sparc Solaris) host. Also clean up - a few old comments. +2002-01-27 Daniel Jacobowitz -2000-05-26 Alan Modra + * configure: Regenerated. - * Makefile.am: Update dependencies with "make dep-am" - * Makefile.in: Regenerate. +2002-01-27 Jason Thorpe - * sysdep.h (gettext, dgettext, dcgettext, textdomain, - bindtextdomain): Replace defines with those from intl/libgettext.h - to quieten gcc warnings. - -2000-05-26 Eli Zaretskii - - * aoutx.h (find_nearest_line): Use IS_ABSOLUTE_PATH. - - * archive.c (normalize, bfd_bsd_truncate_arname, - bfd_gnu_truncate_arname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support - file names with backslashes. - - * cache.c (bfd_open_file) [__MSDOS__]: Don't unlink the file - before opening it. - - * sysdep.h: Include filenames.h. - -2000-05-26 Alan Modra - - * opncls.c (bfd_close_all_done): Mask file perms with 0777 not 0x777. - -2000-05-26 Jakub Jelinek - - * elf64-sparc.c (sparc64_elf_relax_section): New. - (sparc64_elf_relocate_section): Optimize tail call into branch always - if possible. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - (elf32_sparc_relax_section): New. - -2000-05-26 Jakub Jelinek - - * elf64-sparc.c: Add ATTRIBUTE_UNUSED to unused function parameters. - Remove unusued variables. - (sparc64_elf_relocate_section): Change r_symndx type to unsigned long. - (sparc64_elf_merge_private_bfd_data): Fix shared library case from - previous fix, so that shared libs really don't influence targets - extension mask and memory model. - -2000-05-23 H.J. Lu - - * elf64-alpha.c (elf64_alpha_relocate_section): Check - h->root.other not h->other. - * elf32-mips.c (mips_elf_calculate_relocation): Likewise. - - * elf32-ppc.c (ppc_elf_relocate_section): Fix a typo. - -2000-05-23 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section): Don't allow the - undefined symbol with the non-default visibility attributes. - * elf-hppa.h (elf_hppa_relocate_section): Likewise. - * elf32-arm.h (elf32_arm_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mcore.c (mcore_elf_relocate_section): Likewise. - * elf32-mips.c (mips_elf_calculate_relocation): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-ia64.c (elf64_ia64_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - -2000-05-22 Richard Henderson - - * elf64-ia64.c (ia64_howto_table): Add PCREL60B, PCREL21BI, - PCREL22, PCREL64I. Zero size of special relocs. - (elf64_ia64_reloc_type_lookup): Likewise. - (USE_BRL, oor_brl, oor_ip): New. - (elf64_ia64_relax_section): New. - (elf64_ia64_check_relocs): Handle PCREL60B, PCREL22, PCREL64I. - (elf64_ia64_install_value): Likewise, plus PCREL21BI. - (elf64_ia64_relocate_section): Likewise. - (bfd_elf64_bfd_relax_section): New. - * reloc.c (BFD_RELOC_IA64_PCREL21BI): New. - (BFD_RELOC_IA64_{PCREL22,PCREL60B,PCREL64I}): New. - * bfd-in2.h, libbfd.h: Regenerate. + * elfcore.h (elf_core_file_p): Set the machine architecture + before processing the program headers. -2000-05-22 Nick Clifton +2002-01-26 Hans-Peter Nilsson - * configure.in : Add peigen.lo to MIPS PE targets. + * configure.in <64-bit configuration>: If using gcc, check and + emit error for egcs-1.1.2. * configure: Regenerate. -2000-05-22 Momchil Velikov - - * libbfd.c (_bfd_generic_verify_endian_match): Compare endianess - only if it is known for both input and output bfds. Separate - error message strings as in some languages, it may be necessary - to change more than one place in the string to change between - 'big' and 'little'. +2002-01-26 Egor Duda - * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove inline - endianess checks, call _bfd_generic_verify_endian_match() instead. + * elf.c (elfcore_grok_win32pstatus): Copy only as much information + as possible to avoid stack corruption. - * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise. +2002-01-26 Richard Henderson - * elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise. + * elf64-alpha.c (elf64_alpha_check_relocs): Don't set reltext + for non-allocated sections. - * elf32-arm.h (elf32_arm_merge_private_bfd_data): Likewise. Verify - endianess before checking bfd flavours. +2002-01-25 Mark Kettenis -2000-05-22 H.J. Lu + * elf.c (elfcore_write_prstatus): Make sure we pass the address of + prstat.pr_reg even if it is a struct. - * elflink.h (elf_link_output_extsym): Clear the visibility - field for symbols not defined locally. +2002-01-25 Steve Ellcey -2000-05-18 Alan Modra + * bfd/elfxx-ia64.c: Reset AIX vector function overrides for HP-UX. - * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16, - re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn. - (hppa_rebuild_insn): Mask immediate bits here instead. - * elf-hppa.h (elf_hppa_relocate_insn): Mask here too. +2002-01-25 Philipp Thomas -2000-05-18 Momchil Velikov + * coffgen.c (coff_print_symbol): Don't mark info message + for translation. - * elflink.h (elf_bfd_final_link, elf_link_input_bfd): When emiting - relocs for an executable, ensure that they are virtual addresses. +2002-01-25 Nick Clifton -2000-05-18 Jeffrey A Law (law@cygnus.com) + * po/fr.po: Updated translation. + * po/es.po: Updated translation. - * config.bfd (hppa*64*-*-hpux11*): New target triplet. +2002-01-25 Philipp Thomas -2000-05-17 S. Bharadwaj Yadavalli - Rick Gorton - - * elflink.h: Add emitrelocations support: when enabled, relocation - information and relocation sections are put into final output - executables. If the emitrelocations flag is set, do the following: - (elf_bfd_final_link): Emit relocation sections. - (elf_link_input_bfd): Compute relocation section contents. - (elf_gc_sections): Don't clean relocation sections. - -2000-05-16 Catherine Moore - - * som.c (som_decode_symclass): Recognize weak symbols. - -2000-05-16 Szabolcs Szakacsits - - * peigen.c (pe_print_idata): Undo part of 2000-05-12 change that - read idata section only from dataoff. - (pe_print_edata): Correctly check for valid eat_member. - -2000-05-16 J"orn Rennecke - - * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8. + * coff-alpha.c (alpha_relocate_section): Unify warning message + for GP relative relocations without GP defined. + * coff-mips.c (mips_relocate_section): Likewise. -2000-05-14 Philip Blundell +2002-01-25 Alan Modra - * config.bfd (armeb-*-elf, arm*b-*-linux-gnu*): New targets. + * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Avoid + unsigned overflow when new_offset < old_offset. -2000-05-12 Alan Modra +2002-01-24 Philipp Thomas - * targets.c (bfd_target_vector): #ifdef BFD64 rs6000coff64_vec + * bfd.c (_bfd_abort): Fix typo. - * peigen.c (pe_print_idata): Look for .idata section and print - info even if data directory has zero entries. Read idata section - starting from dataoff, and adjust all data offsets to suit. Cast - all bfd_vma vars to unsigned long before passing to fprintf. - * peigen.c (pe_print_edata): Similarly, look for .edata section - and print info even if data directory has zero entries. Cast - all bfd_vma vars to unsigned long before passing to fprintf. +2002-01-23 Richard Henderson - From Szabolcs Szakacsits - * peigen.c (pe_print_idata): Use bfd_section_size rather than data - directory size which may be bogus. - * peigen.c (pe_print_edata): Similarly. + * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't suppress + plt entries for undefweak symbols. -2000-05-09 Alan Modra +2002-01-23 Steve Ellcey - * elf.c (bfd_section_from_shdr): Don't set use_rela_p if rela - section is empty. - (copy_private_bfd_data): Allow for space possibly taken up by elf - headers when calculating segment physical address from lma. + * bfd/targets.c (bfd_elf32_ia64_hpux_big_vec): Add to + DEFAULT_VECTOR. + (bfd_elf64_ia64_hpux_big_vec): Ditto. + (bfd_elf32_h8300_vec): Ditto. -2000-05-08 Alan Modra +2002-01-23 Alan Modra - * versados.c (versados_scan): Init stringlen and pass_2_done. + * elf64-ppc.c: Remove stale part of ABI comment. + (NO_OPD_RELOCS): Define. + (ppc64_elf_check_relocs): Use it. + (ppc64_elf_relocate_section): Here too. + (build_one_stub): Don't point function syms at the stub. Instead, + hijack plt.offset. + (ppc64_elf_relocate_section): Check whether REL24 relocs should + really go to the stub. Make all dynamic relocs in opd against + locals. + (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of + plt.offset. - * trad-core.c (trad_unix_core_file_p): Return - bfd_error_wrong_format rather than bfd_error_file_truncated. +2002-01-22 Richard Henderson - * peigen.c (_bfd_pei_swap_aouthdr_out): Pass ImageBase to - add_data_entry. DataDirectory virtual address is relative. - (pe_print_idata): Account for relative DataDirectory virtual - addresses. Don't trash datasize inside POWERPC_LE_PE code. - (pe_print_edata): Similarly. + * elf64-alpha.c (INSN_UNOP): Encode with RB as $sp. - From Szabolcs Szakacsits - * peigen.c (dir_names): Add Delay Import Directory. - (pe_print_idata): Always search for bfd section containing - idata address rather than looking up section name. Print this - section name rather than .idata. - (pe_print_edata): Similarly. Also print some fields as %08lx. - (_bfd_pe_print_private_bfd_data_common): Print Reserved1 field as - Win32Version. +2002-01-22 Alan Modra -2000-05-05 Clinton Popetz + * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign of + TOC_BASE_OFF adjustment. - * xcoff.h: Rename to xcoff-target.h - * Makefile.am: Change all instances of xcoff.h to xcoff-target.h - * coff-rs6000.c: Ditto. - * coff64-rs6000.c: Ditto. - * coff-pmac.c: Ditto. + * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. -2000-05-05 Clinton Popetz +2002-01-22 John David Anglin - * coffcode.h (coff_set_arch_mach_hook, coff_set_flags): - Change U802TOC64MAGIC to U803XTOCMAGIC. + * configure.host (hppa*64*-*-hpux*, hppa*64*-*-linux*): Add new + host defines. -2000-05-04 Michael Snyder +2002-01-21 Hans-Peter Nilsson - * elf.c (bfd_elf_get_arch_size): New function, return 32 | 64 | -1. - * bfd-in.h: Prototype bfd_elf_get_arch_size. - * bfd-in2.h: Prototype bfd_elf_get_arch_size. + * elf32-cris.c (cris_elf_relocate_section) : + Check for and emit error if sgot is NULL at this point. + +2002-01-21 Jason Thorpe + + * config.bfd (ia64*-*-netbsd*): New target. + +2002-01-21 Thomas Klausner + + * som.c (som_write_space_strings): Comment typo fix. + +2002-01-21 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func and + is_func_descriptor fields. + (link_hash_newfunc): Init them. + (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a + dot are candidates for plt entries. When processing .opd relocs, + set function descriptor strings to point inside function code + string, and set new ppc_link_hash_entry fields. + (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs. + (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with + function descriptors. It's now done in.. + (func_desc_adjust): New. + (ppc64_elf_func_desc_adjust): New. + (define elf_backend_always_size_sections): Define. + (ppc64_elf_hide_symbol): New. + (define elf_backend_hide_symbol): Define. + (allocate_dynrelocs): Remove code looking up function descriptors + as that has been done earlier. + (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash + table. + (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking + up function descriptor. + (build_one_stub): Look up the function code sym. Check for + invalid plt offsets. + (ppc64_elf_relocate_section): Tweak calls to undefined weak syms. + Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs. -2000-05-04 Alan Modra + * elf-bfd.h (elf_backend_data ): Add + boolean param. + (_bfd_elf_link_hash_hide_symbol): Likewise. + * elflink.h (elf_link_add_object_symbols): Adjust call to + elf_backend_hide_symbol. + (elf_fix_symbol_flags): Likewise. + (elf_link_assign_sym_version): Likewise. Use bfd_malloc rather + than bfd_alloc. + * elf.c (_bfd_elf_link_hash_hide_symbol): Add "force_local" param. + Set ELF_LINK_FORCED_LOCAL and call _bfd_elf_strtab_delref. + * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. + (clobber_millicode_symbols): Adjust to suit new hide_symbol. + * elf32-cris.c (elf_cris_hide_symbol): Add "force_local" param + and adjust to suit. + * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise, and call + _bfd_elf_link_hash_hide_symbol rather than duplicating code. + * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. - * libhppa.h (HPPA_R_CONSTANT): Cast argument to bfd_signed_vma. +2002-01-18 Alan Modra -2000-05-03 Martin v. Löwis + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a + dynamic function descriptor symbol, not the associated function + symbol. - * elflink.h (elf_link_add_object_symbols): Reset dynindx for - hidden and internal symbols. - (elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with - visibility. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not - assign a PLT or GOT entry to symbols with hidden and - internal visibility. +2002-01-17 Eric Christopher -2000-05-03 Mark Elbrecht + * elf32-mips.c (mips_elf_calculate_relocation): Fix typo. - * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add entry for - the .bss section. - * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. +2002-01-17 Nick Clifton -2000-05-02 H.J. Lu + * po/bfd.pot: Regenerate. + * po/fr.po: Regenerate. - * elf.c (prep_headers): Use ELFOSABI_NONE instead of - ELFOSABI_SYSV. +2002-01-17 Alan Modra -2000-05-02 Alan Modra + * elf-bfd.h (elf_backend_data ): + Remove "Elf_Internal_Shdr *" param. + (_bfd_mips_elf_section_from_bfd_section): Ditto. + * elf32-mips.c (_bfd_mips_elf_section_from_bfd_section): Ditto. + * elf32-m32r.c (_bfd_m32r_elf_section_from_bfd_section): Ditto. + * elf32-v850.c (v850_elf_section_from_bfd_section): Ditto. + * elf64-mmix.c (mmix_elf_section_from_bfd_section): Ditto. + * elfxx-ia64.c (elfNN_hpux_backend_section_from_bfd_section): Ditto. + * elf.c (_bfd_elf_section_from_bfd_section): Allow backend + function to override special sections. Remove hdr arg from + backend call, and don't loop. + +2002-01-16 Eric Christopher + + * elf32-mips.c (mips_elf_calculate_relocation): Set require_jalxp + on R_MIPS_26 and target is 16bit. Add R_MIPS16_GPREL to list of + relocations requiring gp0 and gp. + +2002-01-16 Richard Earnshaw + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Handle + EF_ARM_VFP_FLOAT. + (elf32_arm_print_private_bfd_data): Likewise. + +2002-01-16 Nick Clifton + + * po/tr.po: Import new version. + +2002-01-16 Alan Modra + + * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs. + (ppc64_elf_reloc_type_lookup): Use proper CTOR reloc. + (ORI_R0_R0_0): Correct. + +2002-01-16 Alan Modra + + * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODE + when plt_not_loaded. + * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to + clear .plt SEC_CODE here. Create .stub and correct .glink flags. + (PLT_INITIAL_ENTRY_SIZE): Set to 24. + (ppc64_elf_glink_code): Delete. + (PPC64_ELF_GLINK_SIZE): Delete. + (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11, + BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0, + ORI_R0_R0_0): Define. + (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define. + (struct ppc_link_hash_table): Add sstub and plt_overflow. + (ppc64_elf_link_hash_table_create): Init them. + (ppc64_elf_check_relocs ): Refcount .plt entry. + Don't copy to shared lib. + (ppc64_elf_check_relocs): Call bfd_set_error on errors. + (ppc64_elf_gc_sweep_hook ): Sweep plt refcount. + (allocate_dynrelocs ): Don't change function sym here. Make + room for .stub and .glink code. + (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for + DT_PPC64_GLINK. + (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call + bfd_elf64_bfd_final_link. + (bfd_elf64_bfd_final_link): Don't define. + (ppc64_elf_size_stubs): New. + (build_plt_stub): New. + (build_one_stub): New. + (ppc64_elf_build_stubs): New. + (ppc64_elf_relocate_section ): Remove assert. + (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs. + (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set + DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in + case output sections not separate. Adjust DT_RELASZ to not + include plt relocs. Set reserved got entry. Set got and plt + entry size. + (elf_backend_got_header_size): Set to 8. + * elf64-ppc.h: New file. - * targets.c (bfd_target_vector): Restore bfd_elf32_hppa_vec. - * Makefile.am (BFD32_BACKENDS): Restore elf32-hppa.lo. Regenerate - dependencies. - * Makefile.in: Regenerate. +2002-01-16 Alan Modra -2000-05-01 Jim Wilson + * elf32-arm.h (elf32_arm_size_dynamic_sections): When removing + sections, use bfd_section_list_remove. + * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. + * elflink.h (elf_link_add_object_symbols): When removing all + sections, use bfd_section_list_clear. - * Makefile.am (BFD32_BACKENDS): Add efi-app-ia32.lo. - (BFD32_BACKENDS_CFILES): Add efi-app-ia32.c. - (BFD64_BACKENDS): Delete coff-ia64.lo. Add efi-app-ia64.lo. - (BFD64_BACKENDS_CFILES): Delete coff-ia64.c. Add efi-app-ia64.c. - * Makefile.in: Rebuild. - -2000-05-02 Alan Modra - - * config.bfd: Re-enable elf32-hppa. It now compiles, even if it - doesn't work very well. - - * elf-hppa.h (elf_hppa_internal_shdr): Define. - (elf_hppa_fake_sections): hdr is elf_hppa_internal_shdr. - Set hdr->s_type to 1 if ARCH_SIZE == 32. - (_bfd_elf_hppa_gen_reloc_type): Add prototype. - (elf_hppa_info_to_howto): Likewise. - (elf_hppa_info_to_howto_rel): Likewise. - (elf_hppa_reloc_type_lookup): Likewise. - (elf_hppa_is_local_label_name): Likewise. - (elf_hppa_fake_sections): Likewise. - (elf_hppa_final_write_processing): Likewise. - (elf_hppa_howto_table): Fully initialise all entries. - (_bfd_elf_hppa_gen_reloc_type): Add ATTRIBUTE_UNUSED to args. - (elf_hppa_info_to_howto): Likewise. - (elf_hppa_info_to_howto_rel): Likewise. - (elf_hppa_reloc_type_lookup): Likewise. - (elf_hppa_final_write_processing, elf_hppa_add_symbol_hook, - elf_hppa_unmark_useless_dynamic_symbols, - elf_hppa_remark_useless_dynamic_symbols, - elf_hppa_record_segment_addrs, elf_hppa_final_link, - elf_hppa_relocate_section, elf_hppa_final_link_relocate, - elf_hppa_relocate_insn): Compile only if ARCH_SIZE == 64 until - elf32-hppa.c mess is cleaned up. - (elf_hppa_final_link_relocate): Make insn and r_type unsigned - int. Delete r_field. In case R_PARISC_PCREL21L, don't set - r_field then call hppa_field_adjust inline func with variable - r_field arg, instead call hppa_field_adjust with fixed arg. - In case R_PARISC_PCREL22F, don't set r_field. - (elf_hppa_relocate_insn): Change args and return type to unsigned - int. Call re_assemble_* funcs to do the work. - - * elf32-hppa.c (hppa_elf_relocate_insn): Don't assume 32 bit when - sign extending. - - * libhppa.h (HPPA_R_CONSTANT): Don't assume 32 bit when sign - extending. - (sign_extend): Mask first before sign extending. - (low_sign_extend): Rewrite without condition expression. - (ones, dis_assemble_3, dis_assemble_12, dis_assemble_16, - dis_assemble_17, dis_assemble_21, dis_assemble_22): Delete. - (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a, - assemble_17, assemble_21, sign_unext, low_sign_unext): Return - result as function return value rather than through pointer arg. - Accept unsigned int args, and return unsigned int. - (re_assemble_3): New. Combines function of dis_assemble_3 with - re-assembly of opcode and immediate. - (re_assemble_12): Likewise. - (re_assemble_16): Likewise. - (re_assemble_17): Likewise. - (re_assemble_21): Likewise. - (re_assemble_22): Likewise. - (hppa_field_adjust): Rewrite and document, paying attention to - size of types and signed/unsigned issues. - (get_opcode): Shift before masking. - (FDLW): Rename to FLDW. - (bfd_hppa_insn2fmt): Change arg to unsigned int. Delete fmt. - (hppa_rebuild_insn): Change args and return value to unsigned - int. Make use of re_assemble_*. Correct case 11. - - * dep-in.sed: Handle ../opcodes/. - * Makefile.am (SOURCE_HFILES): Add elf-hppa.h, elf32-hppa.h, - elf64-hppa.h, hppa_stubs.h, xcoff.h. - (BFD32_BACKENDS_CFILES): Restore elf32-hppa.c. - Remove elf64-hppa.lo, cpu-ia64.lo, elf64-ia64.lo, elfarm-oabi.lo, - elfarm-nabi.lo dependencies outside of auto-dependency area. - Regenerate dependencies. - * Makefile.in: Regenerate. +2002-01-15 Nick Clifton - * configure.in (TRAD_HEADER): Test non-null before - AC_DEFINE_UNQUOTED. + * po/sv.po: New file: Swedish translation. + * configure.in (ALL_LINGUAS): Add sv. * configure: Regenerate. - * reloc.c: Fix mis-spelling in comment. - -2000-05-01 Alan Modra - - * coff-sh.c (bfd_coff_small_swap_table): Fix Fri Apr 28 change. - * vms.c (vms_openr_next_archived_file): Return NULL. - -2000-04-28 Clinton Popetz - - * coffcode.h Copy changes mistakenly done to libcoff.h in - 4/24/2000 patch. +2002-01-15 Jakub Jelinek -2000-04-29 Andreas Jaeger - - * libbfd-in.h: Correctly check GCC version. - * bfd-in.h: Likewise. - * libhppa.h: Likewise. - * libbfd.h: Regenerate. - * bfd-in2.h: Regenerate. - -2000-04-28 Clinton Popetz - - * Makefile.am (BFD64_BACKENDS, BFD64_BACKENDS_CFILES): Add - coffdu-rs6000.{lo,c}. - (coff-pmac.lo, coff-rs6000.lo, coff64-rs6000.lo): Add dependency - on xcoff.h - * Makefile.in: Regenerate. - * xcoff.h: New file. - * coff-pmac.c: Use xcoff.h instead of coff-rs6000.c. - * coff-rs6000.c: Move all declarations and defines that are - common to the xcoff backends into xcoff.h - * coff64-rs6000.c: Ditto, - -2000-04-28 Clinton Popetz + * elflink.h (elf_link_input_bfd): Back out 2002-01-07 change. + * elf.c (merge_sections_remove_hook): New function. + (_bfd_elf_merge_sections): Pass it as 3rd argument to + _bfd_merge_sections. + * libbfd-in.h (_bfd_merge_sections): Add 3rd argument. + * libbfd.h: Rebuilt. + * merge.c (_bfd_merge_sections): Add remove_hook argument. + Call remove_hook if a SEC_EXCLUDE section is encountered. - * coff-mips.c (mips_ecoff_backend_data): Add initialization of - _bfd_coff_force_symnames in strings and - _bfd_coff_debug_string_prefix_length to their default values. - * coff-sh.c: (bfd_coff_small_swap_table): Ditto. +2002-01-15 Nick Clifton -2000-04-28 Clinton Popetz + * elf32-xstormy16.c (xstormy16_reloc_map): Add new field 'table'. + (xstormy16_reloc_map): Initialise new field with correct howto + table. + (xstormy16_reloc_type_lookup): Use 'table' field to locate correct + howto entry. - * coff-alpha.c (alpha_ecoff_backend_data): Add initialization of - _bfd_coff_force_symnames in strings and - _bfd_coff_debug_string_prefix_length to their default values. +2002-01-10 Michael Snyder -2000-04-27 Alan Modra + * elf.c (elfcore_write_prstatus): Use long instead of pid_t; + (elfcore_write_pstatus): Use long instead of pid_t; + * elf-bfd.h: Change prototypes to use long instead of pid_t; - * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return if dynobj NULL. - Check local_got_refcounts before dereferencing. +2002-01-09 Jason Thorpe - * elf32-ppc.c (ppc_elf_relocate_section): Check splt != NULL - before deciding we don't need R_PPC_PLT32 relocation. - (ppc_elf_gc_sweep_hook): Check local_got_refcounts before - dereferencing. + * elf.c: Update copyright years. + (elfcore_grok_netbsd_note): Use NT_NETBSDCORE_PROCINFO + and NT_NETBSDCORE_FIRSTMACH. Improve a comment. - * elflink.h (elf_gc_common_finalize_got_offsets): Fix comment. +2002-01-08 Michael Snyder - * elf32-i386.c (elf_i386_check_relocs): Reference count .got and - .plt entries. - (elf_i386_gc_sweep_hook): Garbage collect .got and .plt entries. - (elf_i386_adjust_dynamic_symbol): Recognize unused .plt entries. - (elf_i386_relocate_section): Allow for .plt to go missing. - (elf_i386_finish_dynamic_symbol): Use same test to decide if we - can use a relative reloc for got as elf_i386_relocate_section. - (bfd_elf32_bfd_final_link): Define to use gc form of final link. + Add capability to write corefile note sections, for gdb. + * elf.c (elfcore_write_note): New function. + (elfcore_write_prpsinfo): New function. + (elfcore_write_prstatus): New function. + (elfcore_write_pstatus): New function. + (elfcore_write_prfpreg): New function. + (elfcore_write_prxfpreg): New function. + * elf-bfd.h: Add prototypes for above functions. -2000-04-26 Clinton Popetz +2002-01-08 Alexandre Oliva - * config.bfd: Remove extraneous bfd_powerpc_64_arch. + * elf.c (elf_fake_sections): Propagate errors from + elf_backend_fake_section. -2000-04-24 Clinton Popetz +2002-01-07 Jason Thorpe - * Makefile.am (coff64-rs6000.lo): New rule. - * Makefile.in: Regenerate. - * coff-rs6000.c (xcoff_mkobject, xcoff_copy_private_bfd_data, - xcoff_is_local_label_name, xcoff_rtype2howto, - xcoff_reloc_type_lookup, xcoff_slurp_armap, xcoff_archive_p, - xcoff_read_ar_hdr, xcoff_openr_next_archived_file, xcoff_write_armap, - xcoff_write_archive_contents): No longer static, and prefix with _bfd_. - (NO_COFF_SYMBOLS): Define. - (xcoff64_swap_sym_in, xcoff64_swap_sym_out, xcoff64_swap_aux_in, - xcoff64_swap_aux_out): New functions; handle xcoff symbol tables - internally. - (MINUS_ONE): New macro. - (xcoff_howto_tabl, xcoff_reloc_type_lookup): Add 64 bit POS - relocation. - (coff_SWAP_sym_in, coff_SWAP_sym_out, coff_SWAP_aux_in, - coff_SWAP_aux_out): Map to the new functions. - * coff64-rs6000.c: New file. - * libcoff.h (bfd_coff_backend_data): Add new fields - _bfd_coff_force_symnames_in_strings and - _bfd_coff_debug_string_prefix_length. - (bfd_coff_force_symnames_in_strings, - bfd_coff_debug_string_prefix_length): New macros for above fields. - * coffcode.h (coff_set_arch_mach_hook): Handle XCOFF64 magic. - Set machine to 620 for XCOFF64. Use bfd_coff_swap_sym_in instead - of using coff_swap_sym_in directly. - (FORCE_SYMNAMES_IN_STRINGS): New macro, defined for XCOFF64. - (coff_set_flags) Set magic for XCOFF64. - (coff_compute_section_file_positions): Add symbol name length to - string section length if bfd_coff_debug_string_prefix_length is - true. - (coff_write_object_contents): Don't do reloc overflow for XCOFF64. - (coff_slurp_line_table): Use bfd_coff_swap_lineno_in instead of - using coff_swap_lineno_in directly. - (bfd_coff_backend_data): Add _bfd_coff_force_symnames_in_strings - and _bfd_coff_debug_string_prefix_length fields. - * coffgen.c (coff_fix_symbol_name, coff_write_symbols): Force - symbol names into strings table when - bfd_coff_force_symnames_in_strings is true. - * coffswap.h (MAX_SCNHDR_NRELOC, MAX_SCNHDR_NLNNO, GET_RELOC_VADDR, - SET_RELOC_VADDR): New macros. - (coff_swap_reloc_in, coff_swap_reloc_out): Use above macros. - (coff_swap_aux_in, coff_swap_aux_out): Remove RS6000COFF_C - code. - (coff_swap_aouthdr_in, coff_swap_aouthdr_out): Handle XCOFF64 - changes within RS6000COFF_C specific code. - (coff_swap_scnhdr_out): Use PUT_SCNHDR_NLNNO, PUT_SCNHDR_NRELOC, - MAX_SCNHDR_NRELOC, and MAX_SCNHDR_NLNNO. - * reloc.c (bfd_perform_relocation, bfd_install_relocation): - Extend existing hack on target name. - * xcofflink.c (XCOFF_XVECP): Extend existing hack on - target name. - * coff-tic54x.c (ticof): Keep up to date with new fields - in bfd_coff_backend_data. - * config.bfd: Add bfd_powerpc_64_arch to targ_arch and define - targ_selvecs to include rs6000coff64_vec for rs6000. - * configure.in: Add rs6000coff64_vec case. - * cpu-powerpc.c: New bfd_arch_info_type. - -2000-04-24 Jeffrey A Law (law@cygnus.com) - - * config.bfd: Only disable elf32-hppa vectors, not all of the - BSD and OSF configuration support. Provide (disabled) clauses - for PA64 support. - * configure.in: Add clause for PA64 support. - * configure: Rebuilt. - - * targets.c (bfd_target_vector): Add bfd_elf64_hppa_vec. - (bfd_elf64_hppa_vec): Declare. - - * Makefile.am (BFD64_BACKENDS): Add elf64-hppa.lo - (BFD64_BACKENDS_CFILES): Add elf64-hppa.c - (elf64-hppa.lo): Add dependencies. - * Makefile.in: Rebuilt. - - * elf64-hppa.c, elf64-hppa.h: New files with PA64 support. - -2000-04-24 Jason Eckhardt - - * libhppa.h (dis_assemble_16): New function. - (pa_arch): Added pa20w element. - -2000-04-24 Ulrich Drepper - - * elf-bfd.h: Add prototypes for bfd_elf32_write_relocs, - bfd_elf32_slurp_reloc_table, bfd_elf64_write_relocs, and - bfd_elf64_slurp_reloc_table. - - * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): New - definitions to get external names. - (elf_write_relocs): Renamed from write_relocs and make global. - (elf_slurp_reloc_table): Make global. - (_bfd_elf,size_info): Use elf_write_relocs instead of write_relocs. - - * archive.c (hpux_uid_gid_encode): New function. - (bfd_ar_hdr_from_filesystem): Use it if HPUX_LARGE_AR_IDS is - defined and the ID is greater than 99999. - (bfd_generic_stat_arch_elt): If HPUX_LARGE_AR_IDS is defined decode - special uid/gid fields into 32 bit values. - -2000-04-21 Matthew Green - - * config.bfd: Add NetBSD/sparc64 support. - -Fri Apr 21 13:20:53 2000 Richard Henderson - David Mosberger - Timothy Wall - Jim Wilson - - * Makefile.am (ALL_MACHINES): Add cpu-ia64.lo. - (ALL_MACHINES_CFILES): Add cpu-ia64.c. - (BFD64_BACKENDS): Add elf64-ia64.lo. - (BFD64_BACKENDS_CFILES): Add elf64-ia64.c. - (cpu-ia64.lo, elf64-ia64.lo): New rules. - * Makefile.in: Rebuild. - * archures.c (enum bfd_architecture): Add bfd_arch_ia64. - (bfd_ia64_arch): Declare. - (bfd_archures_list): Add bfd_ia64_arch. - * bfd-in2.h: Rebuild. - * config.bfd: (ia64*-*-linux-gnu*, ia64*-*-elf*): New targets. - * configure: Rebuild. - * configure.host: (ia64-*-linux*): New host. - * configure.in (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec, - bfd_efi_app_ia64_vec, bfd_efi_app_ia64_vec): New vectors. - * elf.c (prep_headers): Add bfd_arch_ia64. - * libbfd.h: Rebuild. - * reloc.c: Add IA-64 relocations. - * targets.c (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec): - Declare. - (bfd_target_vect): Add bfd_elf64_ia64_little_vec. - * cpu-ia64-opc.c, cpu-ia64.c, elf64-ia64.c: New files. - -2000-04-21 Richard Henderson - - * elf32-d30v.c (bfd_elf_d30v_reloc): Don't modify section - contents when performing a partial link. - (bfd_elf_d30v_reloc_21): Likewise. - -2000-04-20 H.J. Lu - - * elf32-i386.c (elf_i386_relocate_section): Restrict 1998-12-10 - patch to symbols defined by a shared object. - * elf32-ppc.c (ppc_elf_relocate_section): Similarly. - -2000-04-19 Michael Sokolov - - K&R compiler fixes. - * dwarf2.c (concat_filename): Avoid string literal concatenation. - * ieee.c (ieee_get_symtab): Don't initialise union in struct. - -Mon Apr 17 19:14:36 2000 David Mosberger - - * Makefile.am (BFD64_BACKENDS): Mention coff-ia64.lo. - (BFD64_BACKENDS_CFILES): Mention coff-ia64.c - (coff-ia64.lo): Add dependency. + * Makefile.am (BFD32_BACKENDS): Add elf32-sh-nbsd.lo. + (BFD32_BACKENDS_CFILES): Add elf32-sh-nbsd.c. + (elf32-sh-nbsd.lo): New rule. * Makefile.in: Regenerate. - * coff-ia64.c: New file. - * efi-app-ia32.c: Ditto. - * efi-app-ia64.c: Ditto. - * coffcode.h (coff_set_arch_mach_hook): Handle IA64MAGIC. - (coff_set_flags): Ditto. - (coff_write_object_contents) [IA64]: Set magic number to ZMAGIC. - * config.bfd (i[3456]86-*-linux-gnu*): Mention bfd_efi_app_ia32_vec. - * configure.in (elf): Handle bfd_efi_app_ia32 and bfd_efi_app_ia64_vec. + * config.bfd (sh*le-*-netbsdelf*): New target. + (sh*-*-netbsdelf*): New target. + * configure.in: Include netbsd-core.lo for native sh*-*-netbsd*. + (bfd_elf32_shnbsd_vec): New vector. + (bfd_elf32_shlnbsd_vec): New vector. * configure: Regenerate. - * libpei.h (GET_OPTHDR_IMAGE_BASE): New macro. - (PUT_OPTHDR_IMAGE_BASE): Ditto. - (GET_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto. - (PUT_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto. - (GET_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto. - (PUT_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto. - (GET_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto. - (PUT_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto. - (GET_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto. - (PUT_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto. - (GET_PDATA_ENTRY): Ditto. - * peigen.c (_bfd_pei_swap_aouthdr_in) [COFF_WITH_PEP64]: Don't read - data_start. Use above macros to read fields that are 64 bit wide for - COFF_WITH_PEP64. Don't truncate entry and text_start to 32 bits. - (_bfd_pei_swap_aouthdr_out) [PEI_FORCE_MINIMUM_ALIGNMENT]: Force - FileAlignment and SectionAlignment to minimum alignment if they - are zero. - (_bfd_pei_swap_aouthdr_out) [PEI_DEFAULT_TARGET_SUBSYSTEM]: Set - Subsystem to default PEI_DEFAULT_TARGET_SUBSYSTEM. - (_bfd_pei_swap_aouthdr_out) [COFF_WITH_PEP64]: Don't set data_start. - Use above macros to write fields that are 64 bit wide for - COFF_WITH_PEP64. - (pe_print_pdata): Set PDATA_ROW_SIZE to 3*8 for COFF_WITH_PEP64, - 5*4 otherwise. This should be right for IA-32 and IA-64, but may - be wrong for platforms. Use PDATA_ROW_SIZE instead of hardcoded - value of 20 bytes. Modify printing for COFF_WITH_PEP64 to print - begin address, end address, and unwind info address only. Use - GET_PDATA_ENTRY() to read .pdata entries. Use fprintf_vma() to - print addresses. - (tbl): Add SECTION, REL32, RESERVED1, MIPS_JMPADDR16, DIR64, and - HIGH3ADJ relocation names. - (_bfd_pe_print_private_bfd_data): Print Subsystem name in legible form. - * targets.c: Declare bfd_efi_app_ia32_vec and - bfd_efi_app_ia64_vec. - (bfd_target_vector): Mention bfd_efi_app_ia32_vec and - bfd_efi_app_ia64_vec. - -2000-04-17 Timothy Wall - - * bfd-in2.h: Add prototypes for tic54x load page access. - * bfd-in.h: Regenerate. - * coff-tic54x.c: Add load page functions; allow bfd_arch_unknown - in customized _set_arch_mach function. - * coffcode.h (coff_set_alignment_hook): Set section load page if - the appropriate macro is defined. - (write_object_contents): Read section load page. - -2000-04-13 Alan Modra - - * elf32-hppa.h: Update copyright date. - - * elf32-fr30.c (fr30_elf_i20_reloc): Don't use U suffix. - * elf32-mips.c (_bfd_mips_elf_relocate_section): And here. - - * elf32-d30v.c (MAX32): Don't use LL suffix. - (MIN32): Define in terms of MAX32. - (bfd_elf_d30v_reloc): Make relocation a bfd_signed_vma. - - * coff-a29k.c (SIGN_EXTEND_HWORD): Replace with more concise - expression. - - * peicode.h (pe_ILF_build_a_bfd): Remove UL from hex constants. - -2000-04-12 Alan Modra - - * dep-in.sed: Match space before file name, not after. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - - * reloc.c (_bfd_relocate_contents): In complain_overflow_bitfield - case, allow address wrap-around stupidly removed 2000-03-17. Sign - extend without an if statement. - -2000-04-11 Alan Modra - - * coff-mips.c (mips_gprel_reloc): Test for 16 bit range using - signed quantites. - * elf32-mips.c (gprel16_with_gp): Likewise. - * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Test range - here using -0x40000, not (int)0xfffc0000. - (elf32_hppa_size_of_stub): Likewise. - -2000-04-11 Timothy Wall + * elf32-sh-nbsd.c: New file. + * targets.c: Update copyright years. + (_bfd_target_vector): Add bfd_elf32_shlnbsd_vec and + bfd_elf32_shnbsd_vec. - * coff-tic54x.c: Now builds with all targets. - * Makefile.am: Add coff/tic54x.h to coff-tic54x.o dependencies. - * Makefile.in: Regenerate. - * coffcode.h (coff_set_arch_mach_hook): Eliminate warning on - unitialized variable. +2002-01-07 Aldy Hernandez -Fri Apr 7 15:56:57 2000 Andrew Cagney + * coff-rs6000.c (READ20): Use bfd_scan_vma. - * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add - --enable-build-warnings option. - * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. - * Makefile.in, configure: Re-generate. +2002-01-07 Geoffrey Keating -2000-04-07 Nick Clifton + * elflink.h (elf_link_input_bfd): Don't ask for the merged offset + of a symbol in a section that will be deleted. - * reloc.c: Add BFD_RELOC_ARM_PCREL_BLX and - BFD_RELOC_THUMB_PCREL_BLX. +2002-01-07 Nick Clifton - * elf32-arm.h (elf32_arm_final_link_relocate): Handle - R_ARM_XPC25 and R_ARM_THM_PC22. + * po/es.po: New file: Spanish translation. + * configure.in (ALL_LINGUAS): Add es. + * configure: Regenerate. - * elfarm-nabi.c (elf32_arm_howto_): Fix definitions of - R_ARM_XPC25 and R_ARM_THM_XPC22. - (elf32_arm_reloc_map): Make BFD_RELOC_{ARM|THUMB}_PCREL_BLX to - R_ARM_[XPC25|THM_XPC22]. +2002-01-06 Steve Ellcey - * elfarm-oabi.c: Define OLD_ARM_ABI and change include from - elf/arm-oabi.h to elf/arm.h + * elfxx-ia64.c (is_unwind_section_name): Add target vector as + argument so we can handle HP-UX specially. + (elfNN_ia64_hpux_vec): New for use in is_unwind_section_name. + (elfNN_hpux_backend_section_from_bfd_section): New for support + of SHN_IA_64_ANSI_COMMON. + (elfNN_ia64_relax_section): Add support for SHN_IA_64_ANSI_COMMON. + (is_unwind_section_name): Add special HP-UX support. + (elfNN_ia64_section_from_shdr): Add support for more sections. + (elfNN_ia64_fake_sections): Modify is_unwind_section_name call and + add support for more sections. + (elfNN_ia64_additional_program_headers): Modify + is_unwind_section_name call. + (elfNN_ia64_modify_segment_map): Remove assumption that there is + only one unwind section in segment. - * Makefile.am: Fix dependency for elfarm-oabi.c - * Makefile.in: Regenerate. +2002-01-06 Alan Modra - * bfd-in2.h: Regenerate. + * syms.c (_bfd_generic_make_empty_symbol): New function. + * libbfd-in.h (_bfd_nosymbols_make_empty_symbol): Define as + _bfd_generic_make_empty_symbol. * libbfd.h: Regenerate. - -2000-04-06 Michael Snyder - - * elfcore.h (elf_core_file_p): preserve value of tdata at entry, - and restore it on failure. Release newly allocated tdata on - failure. - -Fri Apr 7 11:33:47 2000 Jim Wilson - - * dwarf2.c (struct dwarf2_debug): New field dwarf_line_size. - (decode_line_info): Set it. Report error if unit->line_offset is - equal to or larger than it. - -2000-04-07 Timothy Wall - - * targets.c: Added vecs for tic54x. - * reloc.c: Added relocs for tic54x. - * libbfd.h: Regenerated. - * configure: Add TI COFF vecs for tic54x. - * configure.in: Ditto. - * config.bfd (targ_cpu): Recognize new tic54x target. - * coffcode.h (coff_slurp_symbol_table): Additions for TI COFF handling. - * bfd-in2.h: Add tic54x target and relocations. - * Makefile.am, Makefile.in: Add tic54x target. - * archures.c (bfd_archures_list): Add tic54x target. - * coff-tic54x.c: New. - * cpu-tic54x.c: New. - -2000-04-06 Michael Snyder - - * elfcore.h (elf_core_file_p): call backend_object_p which - thereby gets an opportunity to update the arch/machine type. - -2000-04-06 Timothy Wall - - * coffcode.h (coff_slurp_symbol_table): Handle C_STATLAB storage - class. Handle SEC_CLINK and SEC_BLOCK flags. - * section.c: Add SEC_CLINK and SEC_BLOCK flags. - * bfd-in2.h: Add SEC_CLINK and SEC_BLOCK flags. - -2000-04-06 Nick Clifton - - * elf32-arm.h (elf32_arm_set_private_flags): Only check for - EF_INTERWORK if this is an unknown EABI. - (elf32_arm_merge_private_bfd_data): Check EABI version - numbers. Only check EF_xxx flags if the EABI version number - is unknown. - (elf32_arm_check_private_bfd_data): Only check EF_xxx flags - if the EABI version number is unknown. - (elf32_arm_print_private_bfd_data): Only decode EF_xxx flags - if the EABI version number is unknown. - -Wed Apr 5 22:04:20 2000 J"orn Rennecke - - * reloc.c (_bfd_relocate_contents): Add BFD_RELOC_SH_LOOP_START and - BFD_RELOC_SH_LOOP_END. - * elf32-sh.c (sh_elf_howto_tab): Change special_func to - sh_elf_ignore_reloc for all entries that sh_elf_reloc used to ignore. - Add entries for R_SH_LOOP_START and R_SH_LOOP_END. - (sh_elf_reloc_loop): New function. - (sh_elf_reloc): No need to test for always-to-be-ignored relocs - any more. - (sh_rel): Add entries for BFD_RELOC_SH_LOOP_{START,END}. - (sh_elf_relocate_section): Handle BFD_RELOC_SH_LOOP_{START,END}. - * bfd-in2.h, libbfd.h: Regenerate. - -2000-04-04 Alan Modra - - * po/bfd.pot: Regenerate. - - * Makefile.am: Remove extraneous mkdep comment. - (MKDEP): Use gcc -MM rather than mkdep. - (DEP): Quote when passing vars to sub-make. Add warning - message to end. - (DEP1): Rewrite for "gcc -MM". - (CLEANFILES): Add DEP2. - Update dependencies. - * Makefile.in: Regenerate. - -2000-04-03 Kevin Buettner - - * configure.in: Added corefile support for AIX 4.3. In particular, - AIX_CORE_DUMPX_CORE will be defined in addition to AIX_CORE when - compiling rs6000-core.c. + * bfd-in2.h: Regenerate. + * hppabsd-core.c (hppabsd_core_make_empty_symbol): Delete function. + (hppabsd_core_get_symtab_upper_bound): Don't define. + (hppabsd_core_get_symtab): Likewise. + (hppabsd_core_print_symbol): Likewise. + (hppabsd_core_get_symbol_info): Likewise. + (hppabsd_core_bfd_is_local_label_name): Likewise. + (hppabsd_core_get_lineno): Likewise. + (hppabsd_core_find_nearest_line): Likewise. + (hppabsd_core_bfd_make_debug_symbol): Likewise. + (hppabsd_core_read_minisymbols): Likewise. + (hppabsd_core_minisymbol_to_symbol): Likewise. + (hppabsd_core_vec): Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). + Formatting fixes. + * hpux-core.c: Similarly. + * irix-core.c: Similarly. + * osf-core.c: Similarly. + * sco5-core.c: Similarly. + * binary.c (binary_make_empty_symbol): Remove function, define as + _bfd_generic_make_empty_symbol. + * ihex.c (ihex_make_empty_symbol): Likewise. + * mmo.c (mmo_make_empty_symbol): Likewise. + * ppcboot.c (ppcboot_make_empty_symbol): Likewise. + * srec.c (srec_make_empty_symbol): Likewise. + * versados.c (versados_make_empty_symbol): Likewise. + * vms.c (_bfd_vms_make_empty_symbol): Remove. + (vms_make_empty_symbol): Define as _bfd_generic_make_empty_symbol. + * vms-gsd.c (_bfd_vms_slurp_gsd): Call bfd_make_empty_symbol + rather than _bfd_vms_make_empty_symbol. + * vms-misc.c (new_symbol): Likewise. + +2002-01-05 Alan Modra + + * section.c (bfd_section_init): Remove unnecessary initialisations. + (bfd_section_list_clear): New function. + (bfd_section_list_remove, bfd_section_list_insert): New macros. + (_bfd_strip_section_from_output): Use them. + * coffcode.h (coff_set_alignment_hook): Likewise. + * elf32-mips.c (_bfd_mips_elf_final_link): Likewise. + * elf64-mips.c (mips_elf64_final_link): Likewise. + * elf64-mmix.c (mmix_elf_final_link): Likewise. + * sunos.c (sunos_add_dynamic_symbols): Likewise. + * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise. + * bfd-in2.h: Regenerate. + + * netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway + rather than doing our own section handling. Clean up after errors + with bfd_release and bfd_section_list_clear. Handle unexpected + flags. + * aoutf1.h (sunos4_core_file_p): Likewise. + * aix386-core.c (aix386_core_file_p): Likewise. + * cisco-core.c (cisco_core_file_validate): Likewise. + * ptrace-core.c (ptrace_unix_core_file_p): Likewise. + * trad-core.c (trad_unix_core_file_p): Likewise. + + * hppabsd-core.c (hppabsd_core_core_file_p): Clean up after errors + with bfd_release and bfd_section_list_clear. + * hpux-core.c (hpux_core_core_file_p): Likewise. + * irix-core.c (irix_core_core_file_p): Likewise. + * lynx-core.c (lynx_core_file_p): Likewise. + * osf-core.c (osf_core_core_file_p): Likewise. + * rs6000-core.c (rs6000coff_core_p): Likewise. + * sco5-core.c (sco5_core_file_p): Likewise. + + * elf32-mips.c (_bfd_mips_elf_lo16_reloc): Simplify, and perform + sign extension adjustments without conditionals. + +2002-01-04 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash if + CIE at .eh_frame start is removed due to no FDEs referencing it. + +2002-01-04 Jason Thorpe + + * config.bfd (x86_64-*-netbsd*): New target. + * configure.in (x86_64-*-netbsd*): Set COREFILE + to netbsd-core.lo. * configure: Regenerated. -2000-04-03 H.J. Lu - - * cache.c (bfd_open_file): Unlink the output file only if - it has non-zero size. - -2000-04-01 Ken Block USG - - * elf64-alpha.c (elf64_alpha_relocate_section): Don't emit - relative relocations for non-loaded sections in shared objects. - (elf64_alpha_check_relocs): Similarly. - -Mon Apr 3 13:37:15 2000 Hans-Peter Nilsson - - * aoutx.h (NAME(aout,reloc_type_lookup)): Add BFD_RELOC_8 and - BFD_RELOC_16 to switch for extended relocs. - (MY_swap_ext_reloc_in): New. - (MY_swap_ext_reloc_out): New. - (NAME(aout,slurp_reloc_table)): Use MY_swap_ext_reloc_in rather - than NAME(aout,swap_ext_reloc_in) for extended relocs. - (NAME(aout,squirt_out_relocs)): Similarly use - MY_swap_ext_reloc_out. - (aout_link_reloc_link_order): Use MY_put_ext_reloc if defined. - -2000-04-03 Kazu Hirata - - * coff-h8300.c (h8300_reloc16_extra_cases): Add bsr:16 -> bsr:8 to - the R_PCRWORD_B case. - -2000-03-31 Thomas de Lellis - - * srec.c : Set CHUNK size to 16 bytes to prevent download failures - on some targets. - * ihex.c : Ditto. - -Wed Mar 30 15:28:00 2000 Donald Lindsay - - * elf32-m32r.c (m32r_elf_generic_reloc): new function. All - HOWTO references to bfd_elf_generic_reloc, that have - partial_inplace == true, now use the new function. The function - is based on the recent rewrite of m32r_elf_lo16_reloc(), and - extends its fixes to the R_M32R_{16,24,32} relocs. - The new logic in m32r_elf_lo16_reloc() has been removed, and - it instead calls the new routine to obtain that functionality. - -2000-03-27 Alan Modra - - * elf32-avr.c (elf32_avr_gc_mark_hook, elf32_avr_gc_sweep_hook, - elf32_avr_check_relocs, avr_final_link_relocate, - elf32_avr_relocate_section, bfd_elf_avr_final_write_processing, - elf32_avr_object_p): Add prototypes. - (elf32_avr_gc_mark_hook): Add default for h->root.type. - (bfd_elf_avr_final_write_processing): Make static. - -2000-03-27 Denis Chertykov - - * cpu-avr.c: New file. BFD support routines for AVR architecture. - * archures.c (bfd_architecture): Add AVR architecture. - (bfd_archures_list): Add reference to AVR architecture info. - * elf.c (prep_headers): Handle bfd_arch_avr. - * reloc.c: Add various AVR relocation enums. - * targets.c (bfd_elf32_avr_vec): Declare and add to target vector - list. - * Makefile.am: Add support for AVR elf. - * configure.in: Likewise. - * config.bfd: Likewise. - * Makefile.in: Regenerate. - * configure: This too. - * bfd-in2.h: And this. - * libbfd.h: And this. - -2000-03-24 H.J. Lu - - * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Add prototype. - (elf64_alpha_find_reloc_at_ofs): Likewise. - -2000-03-17 Alan Modra - - * reloc.c (bfd_check_overflow): In case complain_overflow_bitfield, - flag an overflow if the bitfield is outside -2**n to 2**n-1. The - allowable range used to be -2**(n-1) to 2**n-1. - * reloc.c (_bfd_relocate_contents): Same here. Also replace - "boolean overflow" with "bfd_reloc_status_type flag". - -2000-03-14 Doug Evans - - * elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite. - -2000-03-14 Kazu Hirata - - * reloc16.c (bfd_coff_reloc16_relax_section): Count the total number - of shrinks properly, including the last reloc. - -2000-03-13 Kazu Hirata - - * coff-h8300.c (h8300_reloc16_extra_cases): Fix the sanity - check for R_MOVL2. - -2000-03-11 Alan Modra - - * ieee.c (ieee_archive_p): Return bfd_error_wrong_format on - a format mismatch rather than an "error" from bfd_read such as - bfd_error_file_truncated. - -2000-03-10 Geoff Keating - - * elf32-mips.c (_bfd_mips_elf_relocate_section): Do proper - sign-extension and big-endian compensation for - R_MIPS_64 even in ld -r. - -2000-03-10 Geoffrey Keating - - * elf32-mips.c (mips_elf_next_relocation): Rename from - mips_elf_next_lo16_relocation, and generalize to look - for any relocation type. - (elf_mips_howto_table): Make R_MIPS_PC16 pcrel_offset. - (elf_mips_gnu_rel_hi16): Howto for R_MIPS_GNU_REL_HI16. - (elf_mips_gnu_rel_lo16): Howto for R_MIPS_GNU_REL_LO16. - (elf_mips_gnu_rel16_s2): Howto for R_MIPS_GNU_REL16_S2. - (elf_mips_gnu_pcrel64): Howto for R_MIPS_PC64. - (elf_mips_gnu_pcrel32): Howto for R_MIPS_PC32. - (bfd_elf32_bfd_reloc_type_lookup): Add new relocs. - (mips_rtype_to_howto): Likewise. - (mips_elf_calculate_relocation): Handle new relocs. - (_bfd_mips_elf_relocate_section): REL_HI16/REL_LO16 relocs - are paired. The addend for R_MIPS_GNU_REL16_S2 - is shifted right two bits. - -2000-03-10 Alan Modra - - * reloc.c (bfd_perform_relocation): Undo emacs formatting of - comment, and ensure it doesn't happen again. - (bfd_install_relocation): Same here. - (_bfd_relocate_contents): Don't bother assigning unused signmask - shift result. Fix typos in comments. - Remove trailing whitespace throughout file. - -2000-03-07 Doug Evans - - * reloc.c (reloc_howto_struct): Fix partial_inplace comment. - * bfd-in2.h: Rebuild. - -2000-03-06 Nick Clifton - - * peicode.h (struct pe_ILF_vars): Add sym_ptr_table and - sym_ptr_ptr fields. - (SIZEOF_ILF_SYM_PTR_TABLE): Define. - (SIZEOF_ILF_STRINGS): Redefine. - (pe_ILF_make_a_symbol-reloc): New function. Creates a symbol - relative reloc, as opposed to a section relative reloc. - (pe_ILF_make_a_symbol): Set the class of local symbols to C_STAT - not C_LABEL. - Add length of symbol's prefix to string pointer. - Store a pointer to the symbol in the symbol pointer table. - (pe_ILF_build_a_bfd): Do not build .idata$2 or .idata$7. - Initialise the symbol pointer table. - Store the hint in the Hint/Name table. - Make the jump reloc be symbol realtive, not section relative. - Create an import symbol for imported code. - -2000-03-06 Catherine Moore - - * elf.c (swap_out_syms): Check for null type_ptr. - -2000-03-01 Hans-Peter Nilsson - - * aout-target.h (MY(write_object_contents)): Remove unused - and unusable "#if CHOOSE_RELOC_SIZE". - * pc532-mach.c (MY(write_object_contents)): Ditto. - * netbsd.h (MY(write_object_contents)): Ditto. - * hp300hpux.c (MY(write_object_contents)): Ditto. - * freebsd.h (MY(write_object_contents)): Ditto. - * aout-tic30.c (tic30_aout_write_object_contents): Ditto. - -2000-02-29 H.J. Lu - - * peicode.h (jtab): Make it static. +2002-01-03 Tom Rix - * coff-sh.c (sh_align_load_span): Declared if COFF_WITH_PE is - defined and COFF_IMAGE_WITH_PE is not defined. - (_bfd_sh_align_load_span): Defined as sh_align_load_span if - COFF_WITH_PE is defined and COFF_IMAGE_WITH_PE is not defined. + * xcofflink.c (_bfd_xcoff_bfd_final_link): Update .pad section ordering + for recent bfd_make_section_anyway change. -2000-03-01 Nick Clifton +2002-01-03 Nick Clifton - * coff-arm.c (bfd_arm_process_before_allocation): Make - 'symndx' signed to prevent compile time warning. - - * coff-mcore.c: Remove unused prototype for pe_object_p. - - * coff-sh.c: Add "#ifndef COFF_IMAGE_WITH_PE" around static - functions that are not used when COFF_IMAGE_WITH_PE is - defined. - (struct sh_opcode): Change type of 'flags' field to unsigned - long so that it can hold the USESAS flag. - - * coffcode.h (styp_to_sec_flags): Initialise 'target_name'. - - * elf-m10300.c (mn10300_elf_relax_section): Initialise - 'sym_sec'. - - * elf32-i370.c: Add ATTRIBUTE_UNUSED to unused function - parameters. - Remove unusued variables and code. - (elf_backend_add_symbol_hook): Fix prototype. - - * elf32-m68k.c (elf_m68k_gc_sweep_hook): Initialise 'sgot' and - 'srelgot'. - - * elf32-mcore.c (mcore_elf_relocate_section): Initialise - 'oldinst'. - - * elf32-mips.c: Add ATTRIBUTE_UNUSED to unused function - parameters. - Remove unusued variables and code. - (elf_backend_add_symbol_hook): Fix prototype. - - * elf32-sh.c (sh_elf_set_mach_from_flags): Use 'flags'. - - * elflink.h (elf_bfd_link_add_symbols): Add ATTRIBUTE_UNUSED - to unused function parameter. - - * pe-mips.c: Add ATTRIBUTE_UNUSED to unused function - parameters. - Use EMPTY_HOWTO to initialise empty howto slots. - Remove unused variables. - - * peicode.h (pe_ILF_build_a_bfd): Initialise id6. - -2000-03-01 H.J. Lu - - * aoutx.h (aout_link_input_section_std): Pass "true" to - the undefined_symbol callback. - (aout_link_input_section_ext): Likewise. - * bout.c (get_value): Likewise. - * coff-a29k.c (coff_a29k_relocate_section): Likewise. - * coff-alpha.c (alpha_ecoff_get_relocated_section_conten): - Likewise. - (alpha_relocate_section): Likewise. - * coff-arm.c (coff_arm_relocate_section): Likewise. - * coff-i960.c (coff_i960_relocate_section): Likewise. - * coff-mcore.c (coff_mcore_relocate_section): Likewise. - * coff-mips.c (mips_relocate_section): Likewise. - * coff-ppc.c (coff_ppc_relocate_section): Likewise. - * coff-sh.c (sh_relocate_section): Likewise. - * coff-tic80.c (coff_tic80_relocate_section): Likewise. - * cofflink.c (_bfd_coff_generic_relocate_section): Likewise. - * elf-m10200.c (mn10200_elf_relocate_section): Likewise. - * elf-m10300.c (mn10300_elf_relocate_section): Likewise. - * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. - * elf32-fr30.c (fr30_elf_relocate_section): Likewise. - * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. - * elf32-i370.c (i370_elf_relocate_section): Likewise. - * elf32-m32r.c (m32r_elf_relocate_section): Likewise. - * elf32-mcore.c (mcore_elf_relocate_section): Likewise. - * elf32-sh.c (sh_elf_relocate_section): Likewise. - * elf32-v850.c (v850_elf_relocate_section): Likewise. - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. - * elflink.h (elf_link_output_extsym): Likewise. - * pe-mips.c (coff_pe_mips_relocate_section): Likewise. - * reloc.c (bfd_generic_get_relocated_section_conten): Likewise. - * reloc16.c (_bfd_ppc_xcoff_relocate_section): Likewise. - - * elf-hppa.h (elf_hppa_relocate_section): Pass "false" to the - undefined_symbol callback when building shared library with - -Bsymbolic and undefined symbols are allowed. Otherwise, pass - "true". - * elf32-arm.h (elf32_arm_relocate_section): Likewise. - * elf32-i386.c (elf_i386_relocate_section): Likewise. - * elf32-m68k.c (elf_m68k_relocate_section): Likewise. - * elf32-mips.c (mips_elf_calculate_relocation): Likewise. - (elf32_mips_get_relocated_section_content): Likewise. - * elf32-ppc.c (ppc_elf_relocate_section): Likewise. - * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. - * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - -2000-02-28 Nick Clifton - - * Makefile.am: Add rules to build pe[i]-{sh|mips}.lo objects. - * Makefile.in: Regenerate. - - * configure.in: Add support for mips and sh pe vectors. - * configure: regenerate. - - * config.bfd: Add support for arm-wince, mips-pe and sh-pe - targets. - - * targets.c: Add mips and sh pe vectors. - - * libpei.h (coff_final_link_postscript): Only define if not - already defined. - - * coffcode.h: Add support for WinCE magic numbers. - - * peigen.c (pe_print_reloc): Update comment and rearrange - appending of newline character. - - * peicode.h: Add support for Image Library Format. - (pe_ILF_vars): Structure containing data used by ILF code. - (pe_ILF_make_a_section): New function. Create a section based - on ILF data. - (pe_ILF_make_a_reloc): New function. Create a reloc based on - ILF data. - (pe_ILF_make_a_symbol): New function. Create a symbol based - on ILF data. - (pe_ILF_save_relocs): New function. Store the relocs created - by pe_ILF_make_a_reloc in a section. - (pe_ILF_build_a_bfd): New function. Create a BFD describing - an ILF object. - (pe_ILF_object_p): New function. Return a bfd_target pointer - for an ILF object. - (pe_bfd_object_p): If an ILF object is detected call - pe_ILF_object_p on it. - - * coff-arm.c: Add support for WinCE relocs which are different - from normal ARM COFF relocs. - * pe-arm.c: Unset TARGET_UNDERSCORE for a WinCE target. - - * coff-sh.c: Add support for sh-pe target. - * pe-sh.c: New file. Support code for sh-pe target. - * pei-sh.c: New file. Support code for sh-pe target. - - * pe-mips.c: New file. Support code for mips-pe target. - * pei-mips.c: New file. Support code for mips-pe target. - -2000-02-27 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Don't bump - architecture if the object causing the bump is dynamic. - * elf64-sparc.c (sparc64_elf_merge_private_bfd_data): Likewise, - and also don't it for memory ordering. - (sparc64_elf_write_relocs): Take src_rela out of the loop. - -2000-02-27 Ian Lance Taylor - - * dwarf2.c (read_abbrevs): Use _raw_size directly rather than - calling bfd_get_section_size_before_reloc. - (decode_line_info): Likewise. - (_bfd_dwarf2_find_nearest_line): Likewise. - -2000-02-27 Eli Zaretskii - - * Makefile.am (stamp-lib): Use $(LIBTOOL) --config to get the - name of the libtool directory. - * Makefile.in: Rebuild. - -Fri Feb 25 18:39:26 2000 Rodney Brown (RodneyBrown@pmsc.com) - - * som.c (SOM_HOWTO): Define. - (som_hppa_howto_table): Use it. - -2000-02-25 Alexandre Oliva - - * config.bfd: Enable 64 bit support for GNU/Linux/sparc. - - * config.bfd: Enable 64 bit support for Solaris7+/sparc. - -2000-02-24 Catherine Moore - - * som.c (som_misc_symbol_info): Add field - secondary_def. - (som_bfd_derive_misc_symbol_info): Initialize - secondary_def. - (som_build_and_write_symbol_table): Keep track - of secondary_def field. - (som_slurp_symbol_table): Set BSF_WEAK symbol flag - if secondary_def field is set. - (som_bfd_ar_write_symbol_stuff): Initialize - secondary_def. - -2000-02-23 Stephane Carrez - - * dwarf2.c (read_address): Read 16-bits addresses. - (parse_comp_unit): Accept addr_size == 2. - -2000-02-23 Alan Modra - - * bfd-in.h: Update copyright date. - -2000-02-23 Linas Vepstas + * elf32-arm.h (elf32_arm_final_link_relocate): Handle + R_ARM_THM_PC11 reloc. - * cpu-i370.c: New file. - * elf32-i370.c: New file. - * archures.c (enum bfd_architecture): Add bfd_arch_i370. - (bfd_i370_arch): New. - (bfd_archures_list): Add bfd_i370_arch. - * elf.c (prep_headers): Add bfd_arch_i370. - * Makefile.am: Add support for IBM 370 elf. - * config.bfd: Likewise. - * configure.in: Likewise. - * libbfd.h (bfd_reloc_code_real_names): Likewise. - * reloc.c (bfd_reloc_code_type): Likewise. - * targets.c: Likewise. +2002-01-02 Nick Clifton - * Makefile.in: Regenerate. + * configure.in (LINGUAS): Add ja. * configure: Regenerate. - * bfd-in2.h: Regenerate. - -2000-02-22 Ian Lance Taylor - - * elf32-i386.c (elf_i386_info_to_howto_rel): Give a warning for - invalid relocation types, and change them to R_386_NONE. - -2000-02-22 H.J. Lu - - * elflink.h (elf_link_add_object_symbols): If a version symbol is - not defined, don't add a second ELF_VER_CHR. - - * elflink.h (elf_bfd_final_link): Call output_extsym for global - symbols converted to local symbols even when stripping all - symbols. - (elf_link_output_extsym): Process global symbols converted to - local symbols even if they are being stripped. - -2000-02-21 Alan Modra - - * archures.c (bfd_octets_per_byte): Return unsigned int. - (bfd_arch_mach_octets_per_byte): Ditto. - * libbfd.c (bfd_read, bfd_seek): Quell signed vs. unsigned - comparison warning. - * section.c (bfd_get_section_size_before_reloc): Quell signed - vs. unsigned comparison warning. - (bfd_get_section_size_after_reloc): Same here. Fix parentheses too. - * trad-core.c (trad_unix_core_file_p): Correct 2000-01-27 - change. What was I thinking? - * bfd-in2.h: Regenerate. - - * elflink.h (elf_gc_sweep): Skip non-elf input bfds. - (elf_gc_sections): Same here. - (elf_gc_common_finalize_got_offsets): And here. - -2000-02-21 Ian Lance Taylor - - ELF HPPA doesn't work at present; remove it until it does. - * config.bfd: Comment out setting targ_defvec to - bfd_elf32_hppa_vec. - * Makefile.am: Rebuild dependencies. - (BFD32_BACKENDS): Remove elf32-hppa.lo. - (BFD32_BACKENDS_CFILES): Remove elf32-hppa.c. - (SOURCE_HFILES): Remove elf32-hppa.h and hppa_stubs.h. - * Makefile.in: Rebuild. - * targets.c (bfd_target_vector): Comment out bfd_elf32_hppa_vec. - -2000-02-18 Geoff Keating - - * coffcode.h (coff_set_arch_mach_hook): Use free(), because there - is no bfd_free(). Revert bfd_free part of previous change. - -2000-02-18 Geoff Keating - - * coffcode.h (coff_set_arch_mach_hook): Don't use variable-size - arrays. - (coff_compute_section_file_positions): Use bfd_free to pair - bfd_malloc. - (coff_write_object_contents): Likewise. - - * coff-rs6000.c (xcoff_howto_table_16): New variable. - (xcoff_rtype2howto): Handle 16-bit variants of 32-bit relocs. - -2000-02-18 Ulrich Drepper - - * coff-rs6000.c (XCOFFARMAGBIG): New macro. - (xcoff_ar_file_hdr_big): New structure. - (SIZEOF_AR_FILE_HDR_BIG): New macro. - (xcoff_ar_hdr_big): New structure. - (SIZEOF_AR_HDR_BIG): New macro. - (xcoff_big_format_p): New macro. - (xcoff_ardata_big): New macro. - (arch_xhdr_big): New macro. - (xcoff_slurp_armap): Handle large archives. - (xcoff_archive_p): Detect large archives. - (xcoff_read_ar_hdr): Handle large archives. - (xcoff_openr_next_archived_file): Handle large archives. - (xcoff_generic_stat_arch_elt): Handle large archives. - (xcoff_write_armap_old): Rename from xcoff_write_armap. - (xcoff_write_armap_big): New function. - (xcoff_write_armap): New function, dispatch to _old or _big. - (xcoff_write_archive_contents_old): Rename from - xcoff_write_archive_contents. - (xcoff_write_archive_contents_big): New function. - (xcoff_write_archive_contents): New function, dispatch to _old or - _big. - -2000-02-18 Richard Henderson - - * elf-bfd.h (struct elf_link_hash_table): Remove copy_indirect - and hide_symbol members. - (elf_link_hash_copy_indirect): Remove. - (elf_link_hash_hide_symbol): Remove. - (struct elf_backend_data): Add elf_backend_copy_indirect_symbol - and elf_backend_hide_symbol. - (_bfd_elf_link_hash_copy_indirect): Declare. - (_bfd_elf_link_hash_hide_symbol): Declare. - * elf.c (_bfd_elf_link_hash_copy_indirect): Remove table argument. - (_bfd_elf_link_hash_hide_symbol): Likewise. - (_bfd_elf_link_hash_table_init): Don't init killed members. - * elflink.h (elf_link_add_object_symbols): Use the bed function - pointers not elf_link_hash_{copy_indirect,hide_symbol}. - (elf_link_assign_sym_version): Likewise. - * elfxx-target.h (elf_backend_copy_indirect_symbol): Default. - (elf_backend_hide_symbol): Likewise. - (elfNN_bed): Update for new members. - -2000-02-17 Kevin Buettner - - * rs6000-core.c (CORE_DATA_SIZE_FIELD, CORE_COMM_FIELD, SAVE_FIELD, - STACK_END_ADDR): Define for new core file format. - (LOADER_OFFSET_FIELD, LOADER_REGION_SIZE, CORE_DUMP): New defines - for handling the vagaries of the various core file structures used - by AIX over the years. - (rs6000coff_core_p, rs6000coff_core_file_matches_executable, - Rs6kCorData): Use above defines to adapt code to use AIX 4.3's - core_dumpx structure. - -Thu Feb 17 00:04:48 2000 J"orn Rennecke - - * archures.c (bfd_mach_sh2, bfd_mach_sh_dsp): New macros. - (bfd_mach_sh3_dsp): Likewise. - (bfd_mach_sh4): Reinstate. - (bfd_default_scan): Recognize 7410, 7708, 7729 and 7750. - * bfd-in2.h: Regenerate. - * coff-sh.c (struct sh_opcode): flags is no longer short. - (USESAS, USESAS_REG, USESR8, SETSAS, SETSAS_REG): New macros. - (sh_opcode41, sh_opcode42): Integrate as sh_opcode41. - (sh_opcode01, sh_opcode02, sh_opcode40): Add sh-dsp opcodes. - (sh_opcode41, sh_opcode4, sh_opcode80): Likewise. - (sh_opcodes): No longer const. - (sh_dsp_opcodef0, sh_dsp_opcodef): New arrays. - (sh_insn_uses_reg): Check for USESAS and USESR8. - (sh_insn_sets_reg, sh_insns_conflict): Check for SETSAS. - (_bfd_sh_align_load_span): Return early for SH4. - Modify sh_opcodes lookup table for sh-dsp / sh3-dsp. - Take into account that field b of a parallel processing insn - could be mistaken for a separate insn. - * cpu-sh.c (arch_info_struct): New array elements for - sh2, sh-dsp and sh3-dsp. - Reinstate element for sh4. - (SH2_NEXT, SH_DSP_NEXT, SH3_DSP_NEXT): New macros. - (SH4_NEXT): Reinstate. - (SH3_NEXT, SH3E_NEXT): Adjust. - * elf-bfd.h (_sh_elf_set_mach_from_flags): Declare. - * elf32-sh.c (sh_elf_set_private_flags): New function. - (sh_elf_copy_private_data, sh_elf_set_mach_from_flags): Likewise. - (sh_elf_merge_private_data): New function. - (elf_backend_object_p, bfd_elf32_bfd_set_private_bfd_flags): Define. - (bfd_elf32_bfd_copy_private_bfd_data): Define. - (bfd_elf32_bfd_merge_private_bfd_data): Change to - sh_elf_merge_private_data. - -2000-02-13 Richard Henderson - - * elf-bfd.h (struct elf_link_hash_table): Add copy_indirect and - hide_symbol members. - (elf_link_hash_copy_indirect): New. - (elf_link_hash_hide_symbol): New. - * elflink.h (elf_link_add_object_symbols): Break out copy from - indirect new new symbol to elf.c. - (elf_link_assign_sym_version): Break out privatization of - non-exported symbol to elf.c. - * elf.c (_bfd_elf_link_hash_copy_indirect): New. - (_bfd_elf_link_hash_hide_symbol): New. - (_bfd_elf_link_hash_table_init): Init copy_indirect and hide_symbol. - -2000-02-13 Ian Lance Taylor - - * section.c (_bfd_strip_section_from_output): Add info parameter. - If it passed as non-NULL, use it to check whether any input BFD - has an input section which uses this output section. Change all - callers. - * bfd-in2.h: Rebuild. - - * bfd-in.h: Move declarations of bfd_get_elf_phdr_upper_bound and - bfd_get_elf_phdrs in from bfd-in2.h, correcting patch of - 1999-11-29. - * bfd-in2.h: Rebuild. - -2000-02-10 Timothy Wall - - * coffswap.h (coff_swap_sym_in): Add hook SWAP_SYM_IN_POST to - allow final modifications of swapped-in symbol. - (coff_swap_sym_out): Ditto with SWAP_SYM_OUT_POST. - * coffcode.h (coff_write_relocs): Use macro - SECTION_RELATIVE_ABSOLUTE_SYMBOL_P if defined to determine whether - symbol index should be set to -1. - -Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com) - - * coff-sh.c (USES1_REG, USES2_REG, SETS1_REG, SETS2_REG, - USESF1_REG, USESF2_REG, SETSF1_REG, SETSF2_REG): New macros. - * (sh_insn_sets_reg, sh_insn_sets_freg): New prototypes. - * (sh_insn_sets_reg, sh_insn_uses_or_sets_reg, sh_insns_sets_freg, - sh_insns_uses_or_sets_freg): New functions. - * (sh_insn_uses_reg, sh_insn_uses_freg): Use new macros. - * (sh_insns_conflict): Use new functions and new macros to - detect conflicts when two instructions both set same integer registers, - both set same fp register, and both set special register. - -2000-02-09 Timothy Wall - - * coffgen.c (coff_real_object_p): Set arch/mach info prior to - swapping in sections, so that the swapping routines have access to - the arch/mach info. - -2000-02-08 Mark Elbrecht - - * coff-go32.c: Update comment. Update copyright. - -2000-01-27 Thomas de Lellis - - * syms.c (bfd_decode_symclass) - Two new class characters were added - 'V' and 'v'. The - meaning of 'W' is now restricted to just weak non-object - symbols. This allows differentiation between, for example, - weak functions vs weak objects. nm for example now dumps: - 'W' = weak global - 'w' = weak unresolved - 'V' = weak global object - 'v' = weak unresolved object - - (bfd_is_undefined_symclass): New function. Return true if the - given symbol class represents and undefined/unresolved symbol. - - (bfd_symbol_info): Use bfd_is_undefined_symclass to check for - unresolved symbols. - - * bfd-in2.h: Add prototype for bfd_is_undefined_symbol(). - - * elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the - STT_ARM_16BIT flag set, but it is not attached to a data object - return STT_ARM_16BIT so that it will be treated as code by the - disassembler. - -2000-01-27 Alan Modra - - * coff-i386.c (i3coff_object_p): Remove prototype. - Update copyright. - - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Add const - to name. Update copyright. - - * trad-core.c (trad_unix_core_file_p): Cast core_regsec - assignment to avoid warning. Update copyright. - -2000-01-24 Robert Lipe (robertl@sco.com) - - * coffcode.h (coff_write_object_contents): Get buff via bfd_malloc - instead of using GNU C extension. - -2000-01-21 Nick Clifton - - * libbfd.c (bfd_read): Do not attempt to get a negativly sized - amount from a bfd_in_memory structure. - (bfd_seek): Do not allow seeks past the end of a bfd_in_memory - structure. - -2000-01-14 Nick Clifton - - * linker.c (default_indirect_link_order): oops - fix incorrectly - applied patch from Tim Wall. - -2000-01-13 Timothy Wall (twall@tiac.net> - - * coffcode.h: Use bfd_coff_xxx instead of the macro XXX (where xxx - = scnhsz, filhsz, relsz, aoutsz, etc) - - * coffswap.h: Ditto. - -2000-01-13 Nick Clifton - - * elf32-arm.h (elf32_thumb_to_arm_stub): Fix offset in branch to - interwork thumb to arm stub. - -2000-01-13 Timothy Wall (twall@tiac.net> - - * archures.c (bfd_octets_per_byte): New function: Return - target byte size. - (bfd_arch_mach_octets_per_byte): New function: Return target - byte size. - - * section.c: Distinguish between octets and bytes for usage of - _cooked_size, _raw_size, and output_offset. Clarify - description of bfd_set_section_contents. - - * bfd-in2.h: Regenerate. - - * coffgen.c: Indicate that the offset parameter is in bytes, not - octets. - - * cofflink.c (bfd_coff_link_input_bfd): Use bfd_octets_per_byte - where appropriate to get the octet offset when calling - bfd_set_section_contents. - (bfd_coff_reloc_link_order): Ditto. - - * linker.c (bfd_generic_reloc_link_order): Ditto. - (_bfd_default_link_order): Ditto. - - * reloc.c (bfd_perform_relocation): Distinguish between octets - and bytes. Use octets when indexing into octet data; use bytes - when calculating target addresses. - (bfd_install_relocation): Ditto. + * po/ja.po: Import from translation project's web site. - * srec.c (srec_write_section): Ditto. - -2000-01-13 Nick Clifton - - * coff-mcore.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Change from - 3 to 2. This allows 4 byte sized sections, which is necessary for - dlltool to build functioning DLLs. - -2000-01-10 Philip Blundell - - * config.bfd (arm*-*-linux-gnu*): Match instead of arm*-*-linux-gnu. - (arm*-*-conix*): New target. - -2000-01-10 Egor Duda - - * config.bfd: Include elf32_i386 vector to target list for cygwin - and mingw. - - * config.in: Undefine HAVE_WIN32_PSTATUS_T. - * configure.in: Test for structure win32_pstatus_t in - - * configure: Regenerate. +2002-01-02 Nick Clifton - * elf.c (elfcore_grok_win32pstatus): New function: process - win32_pstatus_t notes in elf core file. - (elfcore_grok_note): Detect win32_pstatus notes. - -2000-01-03 Martin v. Loewis - - * elflink.c (_bfd_elf_link_record_dynamic_symbol): Process symbol - visibility. - * elflink.h (elf_link_add_object_symbols): Combine visibilities. - * elf.c (bfd_elf_print_symbol): Interpret st_other as visibility. + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Reformat error + messages to ease translation into other languages. -For older changes see ChangeLog-9899 +For older changes see ChangeLog-0001 Local Variables: mode: change-log diff -uprN binutils-2.11.92.0.12.3/bfd/ChangeLog-0001 binutils-2.11.93.0.2/bfd/ChangeLog-0001 --- binutils-2.11.92.0.12.3/bfd/ChangeLog-0001 Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/ChangeLog-0001 Sun Feb 3 11:22:30 2002 @@ -0,0 +1,9592 @@ +2001-12-31 Jakub Jelinek + + * elflink.h (elf_bfd_final_link): Check if dynobj is not NULL + before looking for .eh_frame_hdr section. + * elf-eh-frame.c (_bfd_elf_write_section_eh_frame_hdr): If + .eh_frame_hdr section is being stripped from output, don't do + anything. + +2001-12-27 Tom Rix + + * coff-rs6000.c (xcoff_generate_rtinit): Clean data_buffer alloc/free. + * coff64-rs6000.c (xcoff64_generate_rtinit): Same. + (xcoff_write_archive_contents_big): Rewrite. + (xcoff_write_armap_big): Rewrite. + (xcoff_write_one_armap_big): Delete. + * libxcoff.h : Clean up. + +2001-12-21 Tom Rix + + * xcofflink.c (bfd_xcoff_link_generate_rtinit): New function. + Interface to linker for generation of __rtinit. + * libxcoff.h (struct xcoff_backend_data_rec): Add new ops to xcoff + backend to generate special linker symbol __rtinit. + * coff-rs6000.c (bfd_xcoff_backend_data, bfd_pmac_xcoff_backend_data) + : Add new rtinit ops + * coff64-rs6000.c (bfd_xcoff_aix5_backend_data, + bfd_xcoff_backend_data): Same. + * bfd-in.h: Add bfd_xcoff_link_generate_rtinit. + * bfd-in2.h : Regenerate. + +2001-12-21 Jakub Jelinek + + * elf32-sparc.c (_bfd_sparc_elf_howto_table): Fix dst_mask for + R_SPARC_DISP32. Support R_SPARC_PLT32. + (sparc_reloc_map): Add BFD_RELOC_16_PCREL and BFD_RELOC_SPARC_PLT32. + (elf32_sparc_check_relocs): Handle R_SPARC_PLT32. + (elf32_sparc_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_howto_table): Fix dst_mask for + R_SPARC_DISP32. Support R_SPARC_PLT32 and R_SPARC_PLT64. + (sparc_reloc_map): Add BFD_RELOC_16_PCREL, BFD_RELOC_64_PCREL + and BFD_RELOC_SPARC_PLT32. + (sparc64_elf_check_relocs): Handle R_SPARC_PLT32 and R_SPARC_PLT64. + (sparc64_elf_relocate_section): Likewise. + * reloc.c (bfd_reloc_code_type): Add BFD_RELOC_SPARC_PLT32. + * bfd-in2.h, libbfd.h: Rebuilt. + +2001-12-20 Tom Rix + + * coffcode.h (coff_compute_section_file_positions): Add special AIX + loader alignment of text section. + +2001-12-20 Jason Thorpe + + * config.bfd (mips-dec-netbsd*): Delete alias for mips*el-*-netbsd*. + + * config.bfd (arm-*-netbsdelf*): Add target. + * configure.in: Include netbsd-core.lo for native arm-*-netbsd*. + * configure: Regenerate. + +2001-12-20 Alan Modra + + * elfcode.h (elf_slurp_symbol_table): Test elf_elfsections for NULL, + as can happen with a core file, before dereferencing. + +2001-12-19 Michael Snyder + + * elf32-i386.c (elf_i386_grok_psinfo): Fix copy-and-paste error: + target is i386 (not mips), and size of descdata is 124 (not 128). + +2001-12-19 Jakub Jelinek + + * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): If new_size + is 0, temporarily grow it to minimal CIE size. + (_bfd_elf_write_section_eh_frame): If input .eh_frame section would + end up empty, build a fake minimal CIE. + +2001-12-19 Steve Ellcey + + * config.bfd (bfd_elf32_ia64_hpux_big_vec): New vector for + ia64*-*-hpux* target. + (bfd_elf64_ia64_hpux_big_vec): Likewise. + * targets.c: Ditto. + * configure.in: Ditto. + * configure: Regenerate + * elfxx-ia64.c (elfNN_ia64_final_write_processing): Replace use of + alloca with bfd_malloc. + (get_local_sym_hash): Likewise. + (elfNN_hpux_post_process_headers): New function. + #include elfNN-target.h again with values for IA64 HP-UX vector. + +2001-12-18 Michael Snyder + + * elf.c (assign_file_positions_for_segments): Don't sort PT_NOTE + sections of corefiles. Also it makes no sense to sort if count == 1. + +2001-12-18 H.J. Lu + + * elf.c (_bfd_elf_copy_private_bfd_data): Also copy GP. + +2001-12-18 H.J. Lu + + * elf.c (_bfd_elf_copy_private_bfd_data): Update comments. + +2001-12-18 H.J. Lu + + * elf-bfd.h (_bfd_elf_copy_private_bfd_data): New. Prototype. + (_bfd_mips_elf_copy_private_bfd_data): Removed. + + * elf.c (_bfd_elf_copy_private_bfd_data): New. Copy e_flags in + the ELF header. + + * elf32-i370.c (??_elf_copy_private_bfd_data): Removed. + (bfd_elf??_bfd_copy_private_bfd_data): Removed. + * elf32-m32r.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-sparc.c: Likewise. + * elfxx-ia64.c: Likewise. + + * elf64-mips.c (bfd_elf64_bfd_copy_private_bfd_data): Removed. + + * elfxx-target.h (bfd_elfNN_bfd_copy_private_bfd_data): Defined + to _bfd_elf_copy_private_bfd_data. + +2001-12-18 Martin Schwidefsky + + * elf32-s390 (elf_s390_check_relocs): Pass addend to + gc_record_vtentry. + * elf64-s390 (elf_s390_check_relocs): Likewise. + Fix by Andreas Jaeger . + +2001-12-18 Jason Thorpe + + * configure.host: Correctly match all NetBSD/mips + hosts. + +2001-12-18 matthew green + + * config.bfd (m68*-*-netbsdelf*): New target. + (m68*-*-netbsd): Also include bfd_elf32_m68k_vec. + (m68*-*-netbsdaout*): New alias for m68*-*-netbsd. + +2001-12-18 Jakub Jelinek + + * elflink.h (size_dynamic_sections): Skip anonymous version tag. + (elf_link_assign_sym_version): Don't count anonymous version tag. + +2001-12-18 Jakub Jelinek + + * elf-eh-frame.c (struct cie): Add make_lsda_relative. + (struct eh_cie_fde): Add lsda_encoding, lsda_offset, + make_lsda_relative. + (read_value, write_value): New. + (_bfd_elf_discard_section_eh_frame): Inicialize + lsda_encoding, lsda_offset and make_lsda_relative. + (_bfd_elf_eh_frame_section_offset): If make_lsda_relative, + request no dynamic reloc for LSDA field of FDE. + (_bfd_elf_write_section_eh_frame): Handle make_lsda_relative. + If a non-DW_EH_PE_absptr value is 0, don't adjust it by base + or pcrel. Fix address computation for DW_EH_PE_pcrel relocs. + Update LSDA field if LSDA encoding is DW_EH_PE_pcrel, because + . might have changed due to deleted FDE or CIEs. + +2001-12-18 Jakub Jelinek + + * elf-strtab.c (struct elf_strtab_hash_entry): Add u.next. + (last_eq): Remove. + (_bfd_elf_strtab_finalize): Don't use a hash table for last + character chains, instead use an array. + +2001-12-18 Jason Thorpe + + * elf.c (elfcore_netbsd_get_lwpid): New function. + (elfcore_grok_netbsd_procinfo): New function. + (elfcore_grok_netbsd_note): New function. + (elfcore_read_notes): Call elfcore_grok_netbsd_note to process + NetBSD ELF core file notes. + +2001-12-18 Alan Modra + + * elfcode.h (struct bfd_preserve): New. + (elf_object_p): Replace preserved_* vars with instance of above. + Save and restore arch_info pointer rather than arch, mach so that + more cases can be restored. Save and restore new section_tail, + section_htab structure, and init appropriately. Move "rest of + section header" code so that i_shdrp needs no NULL initialisation. + Free old section_htab on success. + * elfcore.h (elf_core_file_p): Likewise. + +2001-12-17 Tom Rix + + * coffcode.h (sec_to_styp_flags): Add STYP_EXCEPT and STYP_TYPCHK for + xcoff. + +2001-12-17 Jakub Jelinek + + * elf-bfd.h (elf_discarded_section): Define. + * elflink.h (elf_link_input_bfd): Use it. + (elf_reloc_symbol_deleted_p): Likewise. + + * elf64-alpha.c (elf64_alpha_relocate_section): Don't warn about + overflows for pc relative relocs against discarded sections. + +2001-12-17 Thiemo Seufer + + * elf32-mips.c (_bfd_mips_elf_relocate_section): Formatting. + * elf64-mips.c: Add most of the fixes and tweaks done in elf32-mips.c + over the last months. Add some code for mips16 handling. + (mips_elf64_check_mips16_stubs): New function. + (mips_elf64_stub_section_p): Likewise. + (mips_elf64_calculate_relocation): Change interface to support mips16. + (mips_elf64_perform_relocation): Likewise. + +2001-12-17 Alan Modra + + Support for more than 64k ELF sections. + * elf-bfd.h (elf_size_info ): Add shndx param. + (bfd_elf32_swap_symbol_in): Likewise. + (bfd_elf32_swap_symbol_out): Likewise. + (bfd_elf64_swap_symbol_in): Likewise. + (bfd_elf64_swap_symbol_out): Likewise. + (elf_reloc_cookie): Add locsym_shndx field. Make locsyms a PTR. + (elf_obj_tdata): Add num_elf_sections, symtab_shndx_hdr and + symtab_shndx_section. + (elf_numsections): Define. + (elf_symtab_shndx): Define. + * elf.c (setup_group): Use elf_numsections rather than header e_shnum. + (bfd_elf_find_section): Likewise. + (bfd_section_from_elf_index): Likewise. + (bfd_section_from_shdr): Likewise. Handle SHT_SYMTAB_SHNDX. + (bfd_section_from_r_symndx): Read symbol shndx extension, and + translate st_shndx for > SHN_HIRESERVE. + (assign_section_numbers): Skip reserved sections. Assign + symtab_shndx_section and elf_numsections. Exclude reserved + sections from e_shnum. Set up symtab_shndx_hdr. + (_bfd_elf_compute_section_file_positions): Handle symtab_shndx_hdr. + (map_sections_to_segments): Don't map eh_frame_hdr unless required. + (assign_file_positions_except_relocs): Use elf_numsections rather + than header e_shnum. Skip reserved sections and symtab_shndx_section. + (prep_headers): Set name for symtab_shndx_hdr. + (_bfd_elf_assign_file_positions_for_relocs): Use elf_numsections. + (_bfd_elf_write_object_contents): Likewise. Skip reserved sections. + (_bfd_elf_section_from_bfd_section): Check bfd_{abs,com,und}_section + first. Use elf_section_data if available. Use elf_numsections. + Start scan at index 1. + (copy_private_bfd_data ): Comment fixes. + (MAP_ONESYMTAB): Define above SHN_HIOS. + (MAP_DYNSYMTAB): Likewise. + (MAP_STRTAB): Likewise. + (MAP_SHSTRTAB): Likewise. + (MAP_SYM_SHNDX): New define. + (_bfd_elf_copy_private_symbol_data): Handle symtab_shndx_section. + (swap_out_syms): Swap out SHT_SYMTAB_SHNDX section too. + * elfcode.h (elf_swap_symbol_in): Add shndx param, and handle shndx + extension. + (elf_swap_symbol_out): Likewise. + (elf_object_p): Set elf_numsections, and use instead of e_shnum. + Initialialise reserved elf_elfsections to point at shdr[0]. Remove + redundant bfd_release calls. + (elf_slurp_symbol_table): Read symbol shndx extension, and use with + elf_swap_symbol_in. Translate st_shndx for > SHN_HIRESERVE too. + * elflink.h (elf_link_is_defined_archive_symbol): Read symbol shndx + extension, and use with elf_swap_symbol_in. + (elf_link_record_local_dynamic_symbol): Likewise. + (elf_link_add_object_symbols): Likewise. Also translate st_shndx + for elf sections > SHN_HIRESERVE. + (NAME(bfd_elf,size_dynamic_sections)): Adjust elf_swap_symbol_out + call. + (struct elf_final_link_info): Add locsym_shndx and symshndxbuf. + (elf_bfd_final_link): Allocate the above, and tidy code allocating + other buffers. Use elf_numsections instead of e_shnum. Adjust + elf_swap_symbol_out calls. + (elf_link_output_sym): Swap out symbol shndx extension too. + (elf_link_flush_output_syms): And flush them to disk. + (elf_link_output_extsym): Use SHN_BAD. Adjust elf_swap_symbol_out + calls. + (elf_gc_mark): Read symbol shndx extension, and use with + elf_swap_symbol_in. + (elf_link_input_bfd): Likewise, Translate st_shndx for elf sections + > SHN_HIRESERVE too. Use SHN_BAD. + (elf_reloc_symbol_deleted_p): Use symbol shndx extensions with + elf_swap_symbol_in. Translate st_shndx > SHN_HIRESERVE too. + (elf_bfd_discard_info): Read symbol shndx extension. Don't attempt + to continue after a bfd error. + * elf-m10200.c (mn10200_elf_relax_section): Only read local syms. + Stash them immediately to symtab_hdr->contents rather than later + in multiple places. Clean up afterwards. Read symbol shndx + extension, and use with swap_symbol_in. Translate SHN_UNDEF, + SHN_ABS, SHN_COMMON and elf sections > SHN_HIRESERVE to bfd + sections too. Remove dead code. + (mn10200_elf_relax_delete_bytes): Use symbol shndx extension + when swapping in symbols. Tidy code adjusting global syms. + Don't swap in global syms. + (mn10200_elf_symbol_address_p): Likewise. Remove extsyms param. + (mn10200_elf_get_relocated_section_contents): Read symbol shndx + extension, and use with swap_symbol_in. Rename "size" -> "amt" + to maximize code in common with other files. Translate st_shndx + for > SHN_HIRESERVE too. Remove dead code. + * elf-m10300.c (mn10300_elf_relax_section): Only read local syms. + Stash them immediately to symtab_hdr->contents rather than later + in multiple places. Clean up afterwards. Read symbol shndx + extension, and use with swap_symbol_in. Remove dead code. + (mn10300_elf_relax_delete_bytes): As for elf-m10200.c. + (mn10300_elf_symbol_address_p): Likewise. + (mn10300_elf_get_relocated_section_contents): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): As for elf-m10300.c. + (elf32_h8_relax_delete_bytes): Likewise. + (elf32_h8_symbol_address_p): Likewise. + (elf32_h8_get_relocated_section_contents): Likewise. + * elf32-hppa.c (elf32_hppa_size_stubs): Read symbol shndx + extension, and use with swap_symbol_in. + * elf64-hppa.c (elf64_hppa_check_relocs): Likewise. + * elf32-i370.c (i370_elf_finish_dynamic_sections): Adjust call to + bfd_elf32_swap_symbol_out. + * elf32-m32r.c (m32r_elf_get_relocated_section_contents): Translate + elf sections > SHN_HIRESERVE too. + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Only read + local syms. Read symbol shndx extension, and use with swap_symbol_in. + * elf32-mips.c (_bfd_mips_elf_final_write_processing): Use + elf_numsections rather than header e_shnum. + * elf32-sh.c (sh_elf_relax_section): As for elf-m10300.c. + (sh_elf_relax_delete_bytes): Likewise. + (sh_elf_get_relocated_section_contents): Likewise. Only read local + symbols. + * elf32-v850.c (v850_elf_symbol_processing): Use an unsigned int to + hold section index. Use elf_numsections rather than e_shnum. + Rename "index" -> "indx" to avoid shadowing warning. + (v850_elf_add_symbol_hook): Likewise. + * elf64-alpha.c (elf64_alpha_relax_section): Only read local syms. + Read symbol shndx extension, and use with swap_symbol_in. + * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise. + Translate SHN_COMMON and elf sections > SHN_HIRESERVE too. + * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. + (elfNN_ia64_aix_add_symbol_hook): Use elf_numsections. + + * elf-m10300.c (mn10300_elf_gc_mark_hook): Remove unnecessary checks + before calling bfd_section_from_elf_index on local syms. + * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise. + * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise. + * elf32-cris.c (cris_elf_gc_mark_hook): Likewise. + * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise. + * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise. + * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise. + * elf32-i386.c (elf_i386_gc_mark_hook): Likewise. + * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise. + * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise. + * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise. + * elf32-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise. + * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise. + * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise. + * elf32-s390.c (elf_s390_gc_mark_hook): Likewise. + * elf32-sh.c (sh_elf_gc_mark_hook): Likewise. + * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise. + * elf32-v850.c (v850_elf_gc_mark_hook): Likewise. + * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise. + * elf64-mips.c (mips_elf64_gc_mark_hook): Likewise. + * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise. + * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise. + * elf64-s390.c (elf_s390_gc_mark_hook): Likewise. + * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise. + +2001-12-17 Alan Modra + + Hash bfd sections for fast lookup and create. + * bfd.c (struct _bfd): Add section_htab, section_tail. + * libbfd-in.h (_bfd_delete_bfd): Declare. + (bfd_section_hash_newfunc): Declare. + * opncls.c (_bfd_new_bfd): Free memory on failure. Init + section_htab and section_tail. + (_bfd_delete_bfd): New function. + (bfd_openr): Use it. + (bfd_fdopenr): Likewise. + (bfd_openstreamr): Likewise. + (bfd_openw): Likewise. + (bfd_close): Likewise. + (bfd_close_all_done): Likewise. + (bfd_release): Comment. + * section.c (struct section_hash_entry): New. + (bfd_section_hash_newfunc): New function. + (section_hash_lookup): Define. + (bfd_section_init): New function, split out from + bfd_make_section_anyway. + (bfd_get_section_by_name): Lookup via hash table. + (bfd_get_unique_section_name): Likewise. + (bfd_make_section_old_way): Rewrite to use hash table. + (bfd_make_section_anyway): Likewise. + (bfd_make_section): Likewise. Return NULL for attempts to make + BFD_{ABS,COM,UND,IND}_SECTION_NAME. + (_bfd_strip_section_from_output): Adjust section_tail if needed. + * configure.in: Bump bfd version. + * configure: Regenerate. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2001-12-15 Thiemo Seufer + + * elf64-mips.c (mips_elf64_link_hash_entry): New link hash. + (mips_elf64_high): New Function. + (mips_elf64_higher): Likewise. + (mips_elf64_highest): Likewise. + (mips_elf64_info_to_howto_rel): Likewise. + (mips_elf64_info_to_howto_rela): Likewise. + (mips_elf64_write_rel): Likewise. + (mips_elf64_write_rela): Likewise. + (mips_elf64_link_hash_newfunc): Likewise. + (mips_elf64_hi16_reloc): Likewise. + (mips_elf64_higher_reloc): Likewise. + (mips_elf64_highest_reloc): Likewise. + (mips_elf64_gprel16_reloc): Likewise. + (mips_elf64_gprel16_reloca): Likewise. + (mips_elf64_literal_reloc): Likewise. + (mips_elf64_gprel32_reloc): Likewise. + (mips_elf64_shift6_reloc): Likewise. + (mips_elf64_got16_reloc): Likewise. + (mips_elf64_assign_gp): Likewise. + (mips_elf64_final_gp): Likewise. + (gprel16_with_gp): Likewise. + (mips_elf64_additional_program_headers): Likewise. + (mips_elf64_link_hash_table_create): Likewise. + (mips_elf64_got_offset_from_index): Likewise. + (_mips_elf64_got_info): Likewise. + (mips_elf64_sign_extend): Likewise. + (mips_elf64_overflow_p): Likewise. + (mips_elf64_global_got_index): Likewise. + (mips_elf64_sort_hash_table_f): Likewise. + (mips_elf64_sort_hash_table): Likewise. + (mips_elf64_swap_msym_out): Likewise. + (mips_elf64_create_local_got_entry): Likewise. + (mips_elf64_local_got_index): Likewise. + (mips_elf64_got_page): Likewise. + (mips_elf64_got16_entry): Likewise. + (mips_elf64_local_relocation_p): Likewise. + (mips_elf64_next_relocation): Likewise. + (mips_elf64_create_dynamic_relocation): Likewise. + (mips_elf64_calculate_relocation): Likewise. + (mips_elf64_obtain_contents): Likewise. + (mips_elf64_perform_relocation): Likewise. + (mips_elf64_relocate_section): Likewise. + (mips_elf64_create_dynamic_sections): Likewise. + (mips_elf64_adjust_dynamic_symbol): Likewise. + (mips_elf64_always_size_sections): Likewise. + (mips_elf64_size_dynamic_sections): Likewise. + (mips_elf64_finish_dynamic_symbol): Likewise. + (mips_elf64_finish_dynamic_sections): Likewise. + (mips_elf64_gc_mark_hook): Likewise. + (mips_elf64_gc_sweep_hook): Likewise. + (mips_elf64_create_got_section): Likewise. + (mips_elf64_record_global_got_symbol): Likewise. + (mips_elf64_create_msym_section): Likewise. + (mips_elf64_allocate_dynamic_relocations): Likewise. + (mips_elf64_check_relocs): Likewise. + (mips_elf64_output_extsym): Likewise. + (mips_elf64_swap_gptab_in): Likewise. + (mips_elf64_swap_gptab_out): Likewise. + (gptab_compare): Likewise. + (mips_elf64_final_link): Likewise. + (prev_reloc_addend): Remenber addend of previous parts of a combined + reloc. + (ELF_MIPS_GP_OFFSET): New define. + (STUB_LW,STUB_MOVE,STUB_JALR,STUB_LI16): Likewise. + (MIPS_FUNCTION_STUB_SIZE): Likewise. + (mips_elf64_howto_rel): Fix HOWTO defines. + (mips_elf64_howto_rela): Likewise. + (mips_elf64_swap_reloca_out): Fix signedness. + (mips_elf64_be_swap_reloc_in): Use ELF64* instead of ELF32*. + (mips_elf64_be_swap_reloca_in): Likewise. + (mips_elf64_be_swap_reloc_out): Likewise. Preserve extended type info. + (mips_elf64_be_swap_reloca_out): Likewise. + +2001-12-15 Jakub Jelinek + + * elf-bfd.h (_bfd_elf_maybe_strip_eh_frame_hdr): New prototype. + * elf-eh-frame.c (struct eh_frame_hdr_info): Add strip. + (_bfd_elf_discard_section_eh_frame): Don't create .eh_frame_hdr + sec_info here. Free ehbuf. + (_bfd_elf_discard_section_eh_frame_hdr): Don't size the section + if hdr_info->strip. + (_bfd_elf_maybe_strip_eh_frame_hdr): New. + * elflink.h (size_dynamic_sections): Call it. + +2001-12-14 Alan Modra + + * elflink.h (elf_bfd_discard_info): Fix segfault when dynobj NULL. + +2001-12-13 Jakub Jelinek + + * elf-bfd.h (enum elf_link_info_type): New. + (struct bfd_elf_section_data): Remove stab_info and merge_info + fields, add sec_info and sec_info_type. + (struct elf_obj_tdata): Add eh_frame_hdr field. + (_bfd_elf_discard_section_eh_frame): New prototype. + (_bfd_elf_discard_section_eh_frame_hdr): Likewise. + (_bfd_elf_eh_frame_section_offset): Likewise. + (_bfd_elf_write_section_eh_frame): Likewise. + (_bfd_elf_write_section_eh_frame_hdr): Likewise. + * Makefile.am (BFD32_BACKENDS): Add elf-eh-frame.lo. + (BFD32_BACKENDS_CFILES): Add elf-eh-frame.c. + (elf-eh-frame.lo): New. + * Makefile.in: Rebuilt. + * configure.in (elf): Add elf-eh-frame.lo. + * configure: Rebuilt. + * elf.c (_bfd_elf_print_private_bfd_data): Support PT_GNU_EH_FRAME. + (map_sections_to_segments): Create PT_GNU_EH_FRAME if requested. + (get_program_header_size): Take into account PT_GNU_EH_FRAME + segment. + (_bfd_elf_rela_local_sym): Use sec_info_type and sec_info. + (_bfd_elf_rel_local_sym): Likewise. + (_bfd_elf_section_offset): Likewise. Call + _bfd_elf_eh_frame_section_offset too. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Use sec_info_type and + sec_info. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf-eh-frame.c: New file. + * elflink.h (elf_link_add_object_symbols): Don't optimize SHF_MERGE + .stab sections. Set sec_info_type, use sec_info instead + of merge_info and stab_info. + (elf_link_create_dynamic_sections): Create .eh_frame_hdr section + if --eh-frame-hdr. + (elf_bfd_final_link): Write .eh_frame_hdr section. + (elf_link_sec_merge_syms): Use sec_info_type and sec_info. + (elf_link_input_bfd): Likewise. + Call _bfd_elf_write_section_eh_frame to write .eh_frame sections. + (elf_bfd_discard_info): Add output_bfd argument. + Call _bfd_elf_discard_section_eh_frame and + _bfd_elf_discard_section_eh_frame_hdr. + (elf_section_ignore_discarded_relocs): Use sec_info_type, not section + names. + * bfd-in.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Adjust + prototypes. + * bfd-in2.h (bfd_elf32_discard_info, bfd_elf64_discard_info): Likewise. + +2001-12-12 Richard Henderson + + * syms.c (_bfd_generic_read_minisymbols): Early return for + no symbols. Patch from FreeBSD folk; exact origin unknown. + +2001-12-11 Alan Modra + + * elfcode.h (elf_swap_ehdr_out): Adjust value written for e_shnum + and e_shstrndx if out of range. + (elf_object_p): Read extended values for e_shnum and e_shstrndx + from the first section header. Allocate space in elf_elfsections + for reserved sections and set to NULLs. + (elf_write_shdrs_and_ehdr): Set overflow fields in first section + header. Skip reserved sections in elf_elfsections. Remove + duplicate size calculation. + +2001-12-07 Geoffrey Keating + Richard Henderson + Corinna Vinschen + + * Makefile.am: Add support for xstormy16. + * archures.c: Add support for xstormy16. + * config.bfd: Add support for xstormy16. + * configure.in: Add support for xstormy16. + * reloc.c: Add support for xstormy16. + * targets.c: Add support for xstormy16. + * cpu-xstormy16.c: New file. + * elf32-xstormy16.c: New file. + * Makefile.in: Regenerated. + * bfd-in2.h: Regenerated. + * configure: Regenerated. + * libbfd.h: Regenerated. + +2001-12-07 Nick Clifton + + * elf.c (assign_file_positions_for_segments): Combine sentance + fragments into a single sentance in order to permit better + translation into foreign languages. + +2001-12-07 Jim Blandy + + * elf32-s390.c (elf32_s390_grok_prstatus): New function. + (elf_backend_grok_prstatus): Define. + +2001-12-07 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_relocate_section): Revert + 2001-09-14 change. + +2001-12-07 Jakub Jelinek + + * elf.c (_bfd_elf_rela_local_sym): Only call + _bfd_merged_section_offset if merge_info is non-NULL. + (_bfd_elf_rel_local_sym, _bfd_elf_section_offset): New. + * elf-bfd.h (_bfd_elf_rel_local_sym, _bfd_elf_section_offset): New + prototypes. + * elf32-arm.h (elf32_arm_final_link_relocate): Use + _bfd_elf_section_offset. + (elf32_arm_relocate_section): Use _bfd_elf_rel_local_sym. + * elf32-i386.c (elf_i386_relocate_section): Use + _bfd_elf_section_offset and _bfd_elf_rel_local_sym. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Use + _bfd_elf_section_offset. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mips.c (mips_elf_create_dynamic_relocation): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise. + +2001-12-07 Alan Modra + + * elf32-hppa.c (clobber_millicode_symbols): Don't do anything if + already forced local. + +2001-12-05 Nick Clifton + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Combine + fragmented sentence parts into a whole sentence to permit + better translation into foreign languages. + +2001-12-06 Hans-Peter Nilsson + + * configure: Regenerate. + * Makefile.in: Regenerate. + +2001-12-05 Thiemo Seufer + + * Makefile.am: split up BFD_LIBS like statements in BFD32_LIBS and + BFD64_LIBS, make the latter depending on the availability of BFD64. + Add archive64.c source file. + * archive64.c: New file implementing bfd_elf64_archive_slurp_armap + and bfd_elf64_archive_write_armap, code from elf64-mips.c + * archive.c (bfd_slurp_armap): Add ELF64 archive support. + * config.bfd (mips*-*-irix6*): Allow with BFD64 only. + (mips64*el-*-linux*): Likewise. + (mips*el-*-linux*): Likewise. Reorder entries. + * configure.in (bfd_libs): Define in dependency of BFD64 and + AC_SUBST it. + * elf64-mips.c (mips_elf64_slurp_armap): Remove, use + bfd_elf64_archive_slurp_armap instead. + (mips_elf64_write_armap): Remove, use bfd_elf64_archive_write_armap + instead. + +2001-12-04 Thiemo Seufer + + * config.bfd: Remove trailing blanks. + * elf32-mips.c (gprel16_with_gp): Remove superfluous casts. + +2001-12-04 Alexandre Oliva + + * elf32-d10v.c (elf_d10v_howto_table): Adjust bit-size of + R_D10V_10_PCREL_L, R_D10V_10_PCREL_R, R_D10V_18, + R_D10V_18_PCREL. Check 10_PCREL relocations as signed. + Disable pointless overflow checking of NONE and 32. + +2001-12-04 Alan Modra + + * reloc.c (bfd_install_relocation): Correct reloc address test. + (bfd_perform_relocation): Formatting fix. + * bfd-in2.h: Regenerate for 2001-12-02 reloc.c change. + +2001-12-03 Nick Clifton + + * configure.in (LINGUAS): Add tr. + * configure: Regenerate. + * po/tr.po: Import from translation project's web site. + +2001-12-03 Alan Modra + + * elf32-hppa.c (hppa_get_stub_entry): Remove debug message that + happens to trigger on undefined symbols. + (final_link_relocate): Return bfd_reloc_undefined for undefined + stubs. + (elf32_hppa_relocate_section): Don't say we can't handle a reloc + if we have already warned about an undefined symbol. + +2001-12-02 Thiemo Seufer + + * elf32-mips.c (NEWABI_P): New define. + (USE_REL): Remove, replaced by + (elf_backend_may_use_rel_p): New define. + (elf_backend_may_use_rela_p): Likewise. + (elf_backend_default_use_rela_p): Likewise. + (elf_mips_howto_table): Rename to elf_mips_howto_table_rel. + Fix some relocation definitions. + (elf_mips_howto_table_rela): New RELA relocation definitions for + NewABI support. + (mips32_64bit_reloc): Use the renamed elf_mips_howto_table_rel. + (bfd_elf32_bfd_reloc_type_lookup): Likewise. + (mips_rtype_to_howto): Likewise. + (_bfd_mips_elf_relocate_section): Likewise. + (_bfd_mips_elf_object_p): Typo. + (elf_backend_sign_extend_vma): Reordered together with many other + defines nearby to resemble the order of declaration in the header + file. + +2001-12-02 Thiemo Seufer + + * coff-mips.c (mips_bfd_reloc_type_lookup): Replace + BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. + * pe-mips.c (mips_bfd_reloc_type_lookup): Likewise. + * elf32-mips.c (mips_reloc_map): Likewise. Replace + BFD_RELOC_MIPS_GPREL32 by BFD_RELOC_GPREL32. + * elf64-mips.c (mips_reloc_map): Likewise. + * reloc.c (BFD_RELOC_MIPS_GPREL): Remove. + (BFD_RELOC_MIPS_GPREL32): Remove. + +2001-11-30 H.J. Lu + + * elflink.h (elf_add_default_symbol): New. + (elf_link_add_object_symbols): Call elf_add_default_symbol () + to create an indirect symbol from the default for the symbol + with the default version if needed. + +2001-11-29 "Peter.Schauer" + + * elf.c (elfcore_grok_prstatus): Do not overwite the core signal + if it has already been set by another thread. + +2001-11-28 Jakub Jelinek + + * elf64-alpha.c (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Defined. + (elf64_alpha_relocate_section): Translate local_got_entries + for STT_SECTION symbol to SHF_MERGE section the first time + we see it. + * elfxx-ia64.c (struct elfNN_ia64_local_hash_entry): Add + sec_merge_done. + (get_local_sym_hash): New, extracted from get_dyn_sym_info. + (get_dyn_sym_info): Use it. + (elfNN_ia64_relocate_section): Translate local dyn entries + for STT_SECTION symbol to SHF_MERGE section the first time + we see it. + +2001-11-27 H.J. Lu + + * elflink.h (elf_bfd_discard_info): Skip if the input bfd isn't + ELF. + +2001-11-26 Jeffrey A Law (law@cygnus.com) + + * stabs.c (_bfd_discard_section_stabs): Use PARAMS in function + prototypes. + +2001-11-24 Alan Modra + + * elf32-hppa.c (elf32_hppa_size_stubs): Decrease default stub + group sizes to accommodate c++. + +2001-11-23 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_relocate_section): Don't clear + relocations in non-alloced sections against global symbols + defined in shared library being built. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + +2001-11-23 Jakub Jelinek + + * elf.c (_bfd_elf_rela_local_sym): New. + * elflink.h (elf_link_input_bfd): Don't consider empty + merged sections as removed in relocation tests. + * elf-bfd.h (_bfd_elf_rela_local_sym): Add prototype. + * elf32-i386.c (elf_i386_relocate_section): Handle relocs + against STT_SECTION symbol of SHF_MERGE section. + * elf32-arm.h (elf32_arm_relocate_section): Likewise. + * elf32-avr.c (elf32_avr_relocate_section): Call + _bfd_elf_rela_local_sym. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. + * elf32-fr30.c (fr30_final_link_relocate): Likewise. + * elf32-h8300.c (elf32_h8_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-i860.c (elf32_i860_relocate_section): Likewise. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-s390.c (elf_s390_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-mmix.c (mmix_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elf-hppa.h (elf_hppa_relocate_section): Likewise. + * elf-m10200.c (mn10200_elf_relocate_section): Likewise. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise for + !partial_inplace relocs. Handle relocs against STT_SECTION + symbol of SHF_MERGE for partial_inplace relocs. + +2001-11-21 Nick Clifton + + * po/Make-in (distclean): Move SRC-POTFILES.in and + BLD-POTFILES.in to maintainer-clean target. + +2001-11-21 Alan Modra + + * elfxx-ia64.c (elfNN_ia64_relocate_section): Test r_symndx rather + than sym_sec->output_section to detect relocs against discarded + sections. + +2001-11-19 H.J. Lu + + * elflink.h (elf_link_input_bfd): Assert r_symndx != 0 when + discarding relocations. + +2001-11-19 Nick Clifton + + * section.c (bfd_is_const_section): New macro. Return true if the + given seciton is one of the special, constant, sections. + * bfd-in2.h: Regenerate. + * coffgen.c (coff_count_linenumbers): Use bfd_is_const_section. + (coff_write_native_symbol): Use bfd_is_const_section. + +2001-11-19 Alan Modra + + * elf32-hppa.c (clobber_millicode_symbols): Dec dynstr refcount. + + * elf32-hppa.c (elf32_hppa_size_stubs): Don't consider undefined + millicode syms as candidates for import stubs. + + * elf32-hppa.c (PLABEL_PLT_ENTRY_SIZE): Delete. + (allocate_PIC_calls): Rename to allocate_plt_static. + (allocate_dynrelocs): Move most of code handling .plt entries to.. + (allocate_plt_static): ..here. Don't drop plabel entries. + +2001-11-19 Hans-Peter Nilsson + + * mmo.c: Adjust documentation tags to use texinfo 4 features. + +2001-11-16 Nick Clifton + + * section.c (bfd_is_const_section): New macro. Return true if the + section pointer refers to one of the special, constant sections. + * bfd-in2.h: Regenerate. + + * coffgen.c (coff_count_linenumbers): Only update the line number + count in non-special sections. + (coff_write_native_symbol): Only update the line number file + position in non-special sections. + +2001-11-15 Daniel Jacobowitz + + * elflink.h (elf_reloc_symbol_deleted_p): Catch all relocs against + local syms from discarded sections. Update comment. + +2001-11-15 Alan Modra + + * po/SRC-POTFILES.in: Regenerate. + + * elflink.h (elf_link_input_bfd): Complain about all relocs + against local syms from discarded sections. K&R fixes. + (elf_reloc_symbol_deleted_p): Don't try to swap in external syms. + K&R fixes. + +2001-11-15 Alexandre Oliva + + * elf64-sparc.c (sparc64_elf_relocate_section): Disregard + overflows in the .stab section. + +2001-11-14 Daniel Jacobowitz + + * bfd-in.h (bfd_elf32_discard_info): Add prototype. + (bfd_elf64_discard_info): Likewise. + * bfd-in2.h: Regenerate. + * elf-bfd.h (struct elf_reloc_cookie): New. + (struct elf_backend_data): Add elf_backend_discard_info, + elf_backend_ignore_discarded_relocs, and elf_backend_write_section. + (_bfd_elf32_reloc_symbol_deleted_p): Add prototype. + (_bfd_elf64_reloc_symbol_deleted_p): Likewise. + * elf32-mips.c (_bfd_elf32_mips_discard_info): New. + (_bfd_elf32_mips_ignore_discarded_relocs): New. + (_bfd_elf32_mips_write_section): New. + (elf_backend_discard_info): Define. + (elf_backend_ignore_discarded_relocs): Define. + (elf_backend_write_section): Define. + * elfcode.h (elf_bfd_discard_info): Define. + (elf_reloc_symbol_deleted_p): Define. + * elflink.h (elf_link_input_bfd): Check + elf_section_ignore_discarded_relocs. Call + bed->elf_backend_write_section if available. + (elf_reloc_symbol_deleted_p): New. + (elf_bfd_discard_info): New. + (elf_section_ignore_discarded_relocs): New. + * elfxx-target.h (elf_backend_discard_info): Define. + (elf_backend_ignore_discarded_relocs): Define. + (elf_backend_write_section): Define. + (elfNN_bed): Add elf_backend_discard_info, + elf_backend_ignore_discarded_relocs, and + elf_backend_write_section. + * libbfd-in.h (_bfd_discard_section_stabs): Add prototype. + * libbfd.h: Regenerate. + * stabs.c (_bfd_discard_section_stabs): New. + +2001-11-14 Martin Schwidefsky + + * elf32-s390.c (elf_s390_relocate_section): Use the "unresolved_reloc" + scheme to get rid of an ugly complicated test. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + +2001-11-14 Andreas Jaeger + + * cpu-i386.c (bfd_x86_64_arch_intel_syntax,bfd_x86_64_arch): Use + x86-64 for display. + +2001-11-14 Jakub Jelinek + + * dwarf2.c (struct line_head) [total_length]: Change type to + bfd_vma. + (struct dwarf2_debug): Add dwarf_str_buffer and dwarf_str_size. + (struct comp_unit): Add stash and offset_size. + (read_8_bytes): Return bfd_vma. + (read_indirect_string): New. + (read_attribute): Handle DW_FORM_strp. + (decode_line_info): Support 64-bit DWARF format. + (_bfd_dwarf2_find_nearest_line): Likewise. + (parse_comp_unit): Set offset_size and stash. + +2001-11-13 Keith Walker + + * dwarf2.c (read_attribute_value): New function to handle + DW_FORM_indirect. + (read_attribute): Use it. + +2001-11-13 Geoffrey Keating + + * dwarf2.c (decode_line_info): Properly deal with unknown standard + opcodes. + +2001-11-13 John Marshall + Alan Modra + + * section.c (bfd_make_section_anyway): Don't increment section_id + and the BFD's section_count if adding the section failed. + * vms.c (vms_new_section_hook): Adjust for bfd_make_section_anyway + change. + +2001-11-12 Orjan Friberg + + * elf32-cris.c (cris_elf_grok_prstatus): Adjust values to match new + core dump format. + +2001-11-11 H.J. Lu + + * elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Call + _bfd_elf_strtab_size instead of _bfd_stringtab_size. + + * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Change + dynstr type to `struct elf_strtab_hash *'. + +2001-11-11 Hans-Peter Nilsson + + * elf-strtab.c (_bfd_elf_strtab_finalize): Make first variable i + size_t. Rename second i to j. + +2001-11-10 Jeffrey A Law (law@cygnus.com) + + * binary.c: Include safe-ctype.h after bfd.h and sysdep.h. + +2001-11-10 Alan Modra + + * elf32-arm.h (elf32_arm_final_link_relocate): Don't copy STN_UNDEF + relocs into shared libs. + * elf32-cris.c (cris_elf_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mips.c (mips_elf_calculate_relocation): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-s390.c (elf_s390_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise. + + * elf.c (bfd_section_from_r_symndx): New function. + * elf-bfd.h (LOCAL_SYM_CACHE_SIZE): Define. + (struct sym_sec_cache): New. + (bfd_section_from_r_symndx): Declare. + (struct bfd_elf_section_data): Change local_dynrel type to PTR. + * elflink.h (elf_link_input_bfd): Don't test for removed linkonce + relocs when relocatable. Don't zero entire reloc, just zero the + addend and sym. + * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add sym_sec. + (elf32_hppa_link_hash_table_create): Init it. + (elf32_hppa_check_relocs): Track dynamic relocs needed for local + syms on a per-section basis as we do for globals. + (elf32_hppa_gc_sweep_hook): Update for local_dynrel change. + (allocate_dynrelocs): Warning fix. + (elf32_hppa_size_dynamic_sections): Don't allocate relocs when + section has been discarded. + (elf32_hppa_relocate_section): Don't copy STN_UNDEF relocs + into shared libs. + * elf32-i386.c (struct elf_i386_link_hash_table): Add sym_sec. + (elf_i386_link_hash_table_create): Init it. + (elf_i386_check_relocs): Track dynamic relocs needed for local + syms on a per-section basis as we do for globals. + (elf_i386_gc_sweep_hook): Update for local_dynrel change. + Remove dead code. + (allocate_dynrelocs): Warning fix. + (elf_i386_size_dynamic_sections): Don't allocate relocs when + section has been discarded. + (elf_i386_relocate_section): Don't copy STN_UNDEF relocs + into shared libs. + * elf32-s390.c (struct elf_s390_link_hash_table): Add sym_sec. + (elf_s390_link_hash_table_create): Init it. + (elf_s390_check_relocs): Track dynamic relocs needed for local + syms on a per-section basis as we do for globals. + (elf_s390_gc_sweep_hook): Update for local_dynrel change. + Remove dead code. + (allocate_dynrelocs): Warning fix. + (elf_s390_size_dynamic_sections): Don't allocate relocs when + section has been discarded. + (elf_s390_relocate_section): Don't copy STN_UNDEF relocs + into shared libs. + * elf64-ppc.c (struct ppc_link_hash_table): Add sym_sec. + (ppc64_link_hash_table_create): Init it. + (ppc64_elf_check_relocs): Track dynamic relocs needed for local + syms on a per-section basis as we do for globals. + (ppc64_elf_gc_sweep_hook): Update for local_dynrel change. + (allocate_dynrelocs): Call the correct record_dynamic_dymbol + function. Warning fix. + (ppc64_elf_size_dynamic_sections): Don't allocate relocs when + section has been discarded. + (ppc64_elf_relocate_section): Don't copy STN_UNDEF relocs + into shared libs. + * elf64-s390.c (struct elf_s390_link_hash_table): Add sym_sec. + (elf_s390_link_hash_table_create): Init it. + (elf_s390_check_relocs): Track dynamic relocs needed for local + syms on a per-section basis as we do for globals. + (elf_s390_gc_sweep_hook): Update for local_dynrel change. + Remove dead code. + (allocate_dynrelocs): Warning fix. + (elf_s390_size_dynamic_sections): Don't allocate relocs when + section has been discarded. + (elf_s390_relocate_section): Don't copy STN_UNDEF relocs + into shared libs. + +2001-11-08 Martin Schwidefsky + + * elf32-s390: Major rework that introduces all recent changes to + the s390 backends. Get a closer match to elf32-i386. + (elf_s390_relocate_section): Make use of dynamic section short-cuts. + Localise vars, and delay setting. Better error reporting, replace + BFD_ASSERT with abort. Check ELF_LINK_HASH_DEF_DYNAMIC to see if a + symbol is not defined in the regular object file and tread the weak + definition as the normal one. Don't discard relocs for undefweak or + undefined symbols and check !DEF_REGULAR as well as DEF_DYNAMIC in + test for avoided copy relocs. Reinstate fudge for unresolved relocs + in debugging sections. + (elf32_s390_adjust_dynamic_symbol): Handle nocopyreloc. Don't do copy + reloc processing for weakdefs. Remove redundant casts and aborts. + Delay setting of vars until needed. Move creation of dynamic symbols + and allocation of .plt and .rela.plt to allocate_dynrelocs. Replace + BFD_ASSERT with abort. Discard .plt entries for everything with + plt.refcount <= 0. + (elf_s390_check_relocs): Don't allocate space for dynamic relocs, + .got or .relgot here but do it in allocate_dynrelocs. Reference count + possible .plt and .got entries. Don't test input section SEC_READONLY + here to try to avoid copy relocs, and keep dyn_relocs regardless of + ELF_LINK_NON_GOT_REF. Don't set DF_TEXTREL here. Delay setting of + variables until needed. Remove separate switch stmt for creating .got + section. Initialise local_got_refcounts to 0. Cache pointer to + "sreloc" section in elf_section_data. Tweak condition under which .got + created. Report files with bad relocation section names. + (elf_s390_finish_dynamic_symbol): Don't copy relocs for symbols that + have been forced local. Use same test to decide if we can use a + relative reloc for got as elf_s390_relocate_section. Expand SHN_UNDEF + comment. Move expressions out of function calls. Replace BFD_ASSERT + with abort. + (elf_s390_finish_dynamic_sections): Migrate common code out of switch + statement. Replace BFD_ASSERT with abort. + (elf_s390_size_dynamic_sections): Call readonly_dynrelocs. Rename "i" + to "ibfd". Allocate space for local dyn relocs. Use DF_TEXTREL flag + instead of looking up section names for DT_TEXTREL. Replace + BFD_ASSERT with abort. Zero out the dynamic allocated content space. + Add a comment to remind us that one day this ought to be fixed. + (struct elf_s390_link_hash_entry): Rename "root" to "elf". + (struct elf_s390_link_hash_table): Likewise. + (elf_s390_link_hash_newfunc): Rename to link_hash_newfunc and get + rid of unnecessary casts. + (struct elf_s390_dyn_relocs): Add "sec", and "pc_count" fields. + Remove "section" field. + (elf_s390_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. + Reference count possible .plt entries. Don't deallocate .got and + .relgot space here. + (struct elf_s390_pcrel_relocs_copied): Rename to elf_s390_dyn_relocs. + Update comment. + (struct elf_s390_link_hash_entry): Rename pcrel_relocs_copied to + dyn_relocs. + (elf_s390_discard_copies): Delete. + (elf_s390_link_hash_traverse): Delete. + (bfd_elf32_bfd_final_link): Delete. (ie. use regular final link + rather than gc variety). + (struct elf_s390_link_hash_table): Add sgot, sgotplt, srelgot, splt, + srelplt, sdynbss, srelbss fields. + (elf_s390_link_hash_table_create): Init them. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (allocate_dynrelocs): New function. + (create_got_section): New function. + (elf_backend_can_refcount): Define. + (elf_backend_copy_indirect_symbol): Define. + (elf_s390_copy_indirect_symbol): New function. + (elf_s390_create_dynamic_sections): New function. + (readonly_dynrelocs): New function. + * elf64-s390.c: Likewise. + +2001-11-07 Jakub Jelinek + + * Makefile.am (BFD32_BACKENDS): Add elf-strtab.lo. + (BFD32_BACKENDS_CFILES): Add elf-strtab.c. + (elf-strtab.lo): Add rule. + * Makefile.in: Rebuilt. + * configure.in (elf): Add elf-strtab.lo. + * configure: Rebuilt. + * elf-bfd.h (elf_strtab_hash): Forward declare. + (struct elf_link_hash_table): Change dynstr type to + struct elf_strtab_hash *. + (struct elf_obj_tdata): Change strtab_ptr type to + struct elf_strtab_hash *. + (_bfd_elf_strtab_init, _bfd_elf_strtab_free, _bfd_elf_strtab_add, + _bfd_elf_strtab_addref, _bfd_elf_strtab_delref, + _bfd_elf_strtab_clear_all_refs, _bfd_elf_strtab_size, + _bfd_elf_strtab_offset, _bfd_elf_strtab_emit, + _bfd_elf_strtab_finalize): New prototypes. + * elf-strtab.c: New file. + * elflink.h (elf_link_add_object_symbols): Use _bfd_elf_strtab_add + and _bfd_elf_strtab_size instead of _bfd_stringtab calls. + Call _bfd_elf_strtab_delref if DT_NEEDED entry is not needed or + when forcing dynamic symbol to local. + (elf_link_create_dynamic_sections): Call + _bfd_elf_strtab_init instead of elf_stringtab_init. + (elf_link_record_local_dynamic_symbol): Likewise, change + dynstr type. Use _bfd_elf_strtab functions instead of + _bfd_stringtab calls. + (size_dynamic_sections): Use _bfd_elf_strtab functions instead of + _bfd_stringtab calls. For DT_RUNPATH and Verdaux vda_name fields, + call _bfd_elf_strtab_addref. Call elf_finalize_dynstr. + (elf_adjust_dynstr_offsets, elf_finalize_dynstr): New functions. + (elf_fix_symbol_flags): Call _bfd_elf_strtab_delref when forcing + dynamic symbol to local. + (elf_link_assign_sym_version): Likewise. + (elf_bfd_final_link): Call _bfd_elf_strtab_emit instead of + _bfd_stringtab_emit. + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Change dynstr + type. Call _bfd_elf_strtab functions instead of + _bfd_stringtab functions. + * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise. + * elf.c (_bfd_elf_init_reloc_shdr): Likewise. + (elf_fake_sections): Likewise. + (assign_section_numbers): Call _bfd_elf_strtab_clear_all_refs + on shstrtab hash table, call _bfd_elf_strtab_addref on each section + name in the output. Call _bfd_elf_strtab_finalize and + use _bfd_elf_strtab_offset to finalize sh_name section header fields. + (_bfd_elf_compute_section_file_positions): Use _bfd_elf_strtab_size + instead of _bfd_stringtab_size. + (prep_headers): Change shstrtab type. + Use _bfd_elf_strtab calls instead of _bfd_stringtab calls. + +2001-11-07 Alan Modra + + * elflink.h (elf_link_input_bfd ): Fix + bad symtab segfault. Formatting and warning fixes. Improve + error message for internationalisation. + +2001-11-06 H.J. Lu (hjl@gnu.org) + + * elflink.h (elf_link_input_bfd): Complain about relocs against + discarded sections. + +2001-11-03 Alan Modra + + * elfxx-target.h (elfNN_bed): Correct want_got_sym, want_dynbss order. + +2001-11-02 H.J. Lu + + * elf32-mips.c (mips_elf_calculate_relocation): Don't create + dynamic relocation for symbols defined in regular objects when + creating executables. + +2001-11-02 Nick Clifton + + * configure.in (ALL_LINGUAS): Add "fr". + * configure: Regenerate. + * po/fr.po: New file. + + * coffgen.c (coff_object_p): Add comment to H.J.'s recent patch. + +2001-11-02 John David Anglin + + * som.c (setup_sections): Initialize subspace_sections. + +2001-11-02 H.J. Lu (hjl@gnu.org) + + * coffgen.c (coff_object_p): Return 0 if the header is too big. + +2001-11-02 Hans-Peter Nilsson + + * elfcore.h (elf_core_file_p): Preserve and clear abfd section + information. Save bfd arch and mach values. Restore on error. + +2001-11-02 Alan Modra + + * elf32-hppa.c (hppa_handle_PIC_calls): Rename to mark_PIC_calls. + (allocate_PIC_calls): New function. + (allocate_dynrelocs): Don't allocate pic_call plt entries here. + (elf32_hppa_size_dynamic_sections): Call allocate_PIC_calls. + (elf32_hppa_finish_dynamic_symbol): Remove dead code. + +2001-11-02 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_grok_prstatus): New function. + (cris_elf_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Define. + +2001-11-01 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Correct branch + prediction bits. + +2001-10-31 Chris Demetriou + + * elf32-mips.c (_bfd_mips_elf_hi16_reloc): Handle PC-relative + relocations properly. + +2001-10-31 H.J. Lu + + * elflink.h (elf_link_output_extsym): Don't clear the visibility + field for relocateable. + +2001-11-01 Alan Modra + + * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Don't count + .plt relocs in DT_RELASZ. + +2001-10-29 NIIBE Yutaka + + * config.bfd: Supports sh3/sh4/sh3eb/sh4eb-unknown-linux-gnu + targets. + +2001-10-31 Nick Clifton + + * targets.c: Fix typo: bfd_mmo_mmix_vec => bfd_mmo_vec. + +2001-10-30 Hans-Peter Nilsson + + * Makefile.am (ALL_MACHINES): Add cpu-mmix.lo. + (BFD64_BACKENDS): Add elf64-mmix.lo and mmo.lo. + (BFD64_BACKENDS_CFILES): Add elf64-mmix.c and mmo.c. + Regenerate dependencies. + * configure.in (bfd_elf64_mmix_vec, bfd_mmo_vec): New vectors. + * config.bfd: [BFD64] (mmix-*-*): New case. + * cpu-mmix.c, mmo.c, elf64-mmix.c: New files. + * archures.c (enum bfd_architecture): Add bfd_arch_mmix. + (bfd_mmix_arch): Declare. + (bfd_archures_list): Add bfd_mmix_arch. + * targets.c (enum bfd_flavour): Add bfd_target_mmo_flavour. + (bfd_elf64_mmix_vec, bfd_mmo_vec): Declare. + (bfd_target_vect) [BFD64]: Add bfd_elf64_mmix_vec and + bfd_mmo_mmix_vec. + * reloc.c: Add MMIX relocations. + * bfd.c (struct _bfd, tdata): Add mmo_data. + * Makefile.in: Regenerate. + * configure: Regenerate. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * configure: Rebuild. + +2001-10-30 Richard Earnshaw (rearnsha@arm.com) + + * elf.c (_bfd_elf_make_section_from_shdr): Set the LMA based on the + p_paddr of the segment that contains it. + (copy_private_bfd_data): If the LMA for a segment is known, use it + for matching sections to segments. + (assign_file_positions_for_segments): Use the LMA when adjusting + for inter-section alignment padding. + +2001-10-29 Kazu Hirata + + * README: Fix a typo. + +2001-10-24 Richard Henderson + + * peXXigen.c (_bfd_XX_print_private_bfd_data_common): Copy + timestamp to time_t for ctime. + +2001-10-24 Hans-Peter Nilsson + + * elf32-cris.c (cris_reloc_type_lookup): Change loop to use + unsigned, increasing index. + +2001-10-23 H.J. Lu + + * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Check + m != NULL before accessing it. + +2001-10-23 Alan Modra + + * elflink.h (elf_link_input_bfd): Zero the reloc instead of doing + bfd_reloc_type_lookup (bfd, BFD_RELOC_NONE) as bfd_reloc_type_lookup + doesn't accept BFD_RELOC_* on some targets, eg. hppa. + + * elf32-hppa.c (elf32_hppa_link_hash_entry): Remove plt_abs. + (hppa_link_hash_newfunc): Likewise. + (elf32_hppa_finish_dynamic_symbol): Likewise. + (allocate_dynrelocs): Always allocate .got relocs if shared. + (elf32_hppa_relocate_section): Output them too. Similarly + consolidate .plt reloc code, and no longer initialise .plt + when a reloc is output. + (elf32_hppa_finish_dynamic_symbol): Only initialise .plt entries + when no reloc is output. + + From Herbert Xu + * elf32-hppa.c (final_link_relocate): Call bfd_set_error for + unreachable branches. + +2001-10-22 H.J. Lu + + * configure.in (WIN32LIBADD): Use -L../libiberty for + mips*-*-linux*. + * configure: Rebuild. + +2001-10-21 H.J. Lu + + * configure.in (WIN32LIBADD): Include -L../libiberty/pic -liberty + if shared library is enabled only for Linux hosts. + * configure: Rebuild. + +2001-10-21 H.J. Lu + + * configure.in (WIN32LIBADD): Check if PICFLAG is defined in + ../libiberty/Makefile instead of $enable_shared. + * configure: Rebuild. + +2001-10-21 H.J. Lu + + * elf32-cris.c (cris_reloc_type_lookup): Use int for index. Cover + index 0. + +2001-10-20 H.J. Lu + + * configure.in (WIN32LIBADD): Include -L../libiberty/pic -liberty + if shared library is enabled. + * configure: Rebuild. + +2001-10-20 H.J. Lu + + * elf32-cris.c (cris_reloc_type_lookup): Allow index 0. + +2001-10-19 H.J. Lu + + * elfcode.h (elf_object_p): Don't clear D_PAGED if the section + size is empty. + +2001-10-18 H.J. Lu + + * elf32-i370.c (i370_elf_relocate_section): Ignore R_XXX_NONE. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + +2001-10-18 Jakub Jelinek + + * section.c (_bfd_strip_section_from_output): Don't count + SEC_EXCLUDE sections as references. Set SEC_EXCLUDE. + +2001-10-17 Alan Modra + + * elf-m10200.c (mn10200_elf_relax_section): Cast assignment to + Elf_Internal_Shdr.contents now that it's no longer a PTR. + * elf-m10300.c (mn10300_elf_relax_section): Likewise. + * elf32-h8300.c (elf32_h8_relax_section): Likewise. + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise. + * elf32-sh.c (sh_elf_relax_section): Likewise. + * elf64-alpha.c (elf64_alpha_relax_section): Likewise. + * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise. + * elf.c (setup_group): Warning fixes. + * elflink.h (elf_link_sort_relocs): Likewise. + * pdp11.c (slurp_reloc_table): Likewise. + +2001-10-16 Jeff Holcomb + + * elflink.h (elf_link_sort_relocs): Remove unnecessary pointer + casts. + +2001-10-15 H.J. Lu + + * elflink.h (elf_link_input_bfd): Set type to BFD_RELOC_NONE + for relocations against discarded link-once section. + +2001-10-15 Alan Modra + + * elf32-i386.c (elf_i386_relocate_section): Report some detail on + bfd_reloc_outofrange and similar errors. + + * elf.c (_bfd_elf_link_hash_copy_indirect): Test ind->root.type + rather than ind->weakdef. + * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. + * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. + * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. + +2001-10-15 Alan Modra + H.J. Lu + + * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Merge dyn_reloc + counts for aliases instead of aborting. + * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise. + + * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Set plt.offset + to -1 for non-function symbols. + * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise. + * elf32-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. + * elf64-s390.c (elf_s390_adjust_dynamic_symbol): Likewise. + * elf64-x86-64.c (elf64_x86_64_adjust_dynamic_symbol): Likewise. + * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Refer to + plt.offset instead of plt.refcount when setting to -1. + +2001-10-12 Nick Clifton + + * elf32-arm.h (elf32_arm_relocate_section): Treat R_ARM_THM_PC22 + like R_ARM_PC24. Include reloc number in error message about + unresolvable relocs. + +2001-10-10 Jakub Jelinek + + * elflink.h (elf_link_sort_cmp2): Don't mix PLT and non-PLT + relocations against the same symbol in .rel{,a}.dyn section. + +2001-10-10 Kazu Hirata + + * aout-encap.c: Fix comment typos. + * aoutx.h: Likewise. + * archive.c: Likewise. + * bout.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + * coff-mips.c: Likewise. + * ecoff.c: Likewise. + * elf32-m32r.c: Likewise. + * libcoff-in.h: Likewise. + * libecoff.h: Likewise. + * libxcoff.h: Likewise. + * nlm32-i386.c: Likewise. + * pdp11.c: Likewise. + * section.c: Likewise. + * som.c: Likewise. + * som.h: Likewise. + * bfd-in2.h: Regenerate. + * libcoff.h: Likewise. + +2001-10-10 Alan Modra + + * elf.c (elf_map_symbols): Don't create new section symbols; Use + existing section syms. Update comments. + (copy_private_bfd_data): Formatting fixes. + (elfcore_grok_win32pstatus): Likewise. + (swap_out_syms): Likewise. Remove unnecessary level of braces. + +2001-10-09 Alan Modra + + * elf-bfd.h (struct bfd_elf_section_data): Rename "group" to + "group_name". + (elf_group_name): Define. + (elf_next_in_group): Define. + * elf.c: Make use of elf_group_name and elf_next_in_group throughout. + (setup_group): Don't use sec->lineno for SHT_GROUP section to store + first member section; Instead use elf_next_in_group. + (bfd_section_from_shdr): Likewise. + (set_group_contents): Likewise. Use elf_section_syms, not sec->symbol. + +2001-10-09 Alan Modra + + * elf-bfd.h (struct bfd_elf_section_data): Add "group" and + "next_in_group". Fix gp and gp_size comments. + * elf.c (union elf_internal_group): New. + (setup_group): New function. + (_bfd_elf_make_section_from_shdr): Set BFD flags for SHT_GROUP. + Call setup_group for SHF_GROUP sections. + (bfd_section_from_shdr): Build a BFD section for SHT_GROUP. + (elf_fake_sections): Set header type for SEC_GROUP, and header + flags for sections in a group. + (set_group_contents): New function. + (_bfd_elf_compute_section_file_positions): Call it. + (assign_section_numbers): Set sh_link for SHT_GROUP. + + * elflink.h (gc_mark_hook): Handle section groups. + * elfxx-target.h: Add SEC_GROUP to applicable_flags. + * section.c (SEC_GROUP): Define. + (struct sec): Comment fixes. + * bfd-in2.h: Regenerate. + + * elf.c (bfd_elf_print_symbol): Formatting fix; migrate expression + out of function args. + (_bfd_elf_canonicalize_reloc): Similarly. + (_bfd_elf_get_symtab): Here too. + (_bfd_elf_canonicalize_dynamic_symtab): And here. + * elfcode.h (elf_slurp_symbol_table): Don't recalculate size for + bfd_bread, and remove unnecessary cast. + +2001-10-08 Aldy Hernandez + + * bfd/config.bfd (targ_cpu): Add arm9e-*-elf. + +2001-10-06 Stephane Carrez + + * dwarf2.c (comp_unit_find_nearest_line): Check for end of + compilation unit. + +2001-10-06 Alan Modra + + * bfd.c (bfd_assert): Report bfd version. + (_bfd_abort): Likewise. + + * elflink.h (elf_link_input_bfd): Don't zero discarded link-once + section sym values. Instead replace any relocs against them with + relocs against STN_UNDEF, which has a zero value. + + * elf32-arc.c (elf_arc_howto_table): Set partial_inplace for all + relocs. + +2001-10-05 Jeff Law + + * som.h (som_exec_data): New field "version_id". + * som.c (som_object_setup): Record the version_id if it + exists. + (som_prep_headers): Do not initialize version_id here. + (som_finish_writing): Initialize version_id here. + +2000-10-05 Thiemo Seufer + + * elf32-mips.c (elf_mips_howto_table): Fix some relocation howtos + according to the MIPS/SGI ELF64 ABI Draft. + (mips_elf_sort_hash_table): Typo. + +2001-10-04 Alan Modra + + * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Comment typo. + + * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): Bail out after + copying flags if this is a weakdef. + +2001-10-04 Alan Modra + + * elf-bfd.h (struct elf_link_hash_entry): Reorganise for better + packing. + + * elf32-mips.c (mips_elf_record_global_got_symbol): Set got.offset + to 1 rather than 0 to avoid confusing copy_indirect_symbol. + (mips_elf_sort_hash_table_f): Compare got.offset against 1. + + * Makefile.am (BFD_H_DEPS): Add symcat.h. Ensure everything + depends on $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS), not just those + backends we configure. Run "make dep-am". + (install-data-local): Install symcat.h. + * dep-in.sed: Remove symcat.h from dependencies. + * Makefile.in: Regenerate. + +2001-10-03 Vassili Karpov + + * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Handle nocopyreloc. + +2001-10-03 Thiemo Seufer + + * elf64-mips.c (elf_backend_may_use_rela_p): New define. + (elf_backend_default_use_rela_p): New define. + +2001-10-03 Alan Modra + + * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Fix typos in last + change. + + * configure.in (AC_OUTPUT ): Remove version.h. + * configure: Regenerate. + * Makefile.am (BFD_H_FILES): Add version.h. + * Makefile.in: Regenerate. + * po/SRC-POTFILES.in: Regenerate. + + * elflink.h (elf_fix_symbol_flags): Copy flags to weakdef using + elf_backend_copy_indirect_symbol so that backend has a chance to + copy other necessary fields. + * elf-bfd.h (struct elf_backend_data): Update description of + elf_backend_copy_indirect_symbol. + * elf.c (_bfd_elf_link_hash_copy_indirect): Bail out after + copying flags if this is a weakdef. + * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise. + (elfNN_ia64_aix_add_symbol_hook): Use elf_link_hash_lookup rather + than bfd_link_hash_lookup. + * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Don't do copy + reloc processing for weakdefs. + * elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise. + * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise. + +2001-10-02 Alan Modra + + * elf64-ppc.c (ppc64_elf_check_relocs): Use a local var and cast + result of ELF64_R_TYPE to enum before using in a switch. + (ppc64_elf_gc_mark_hook): Likewise. + (ppc64_elf_gc_sweep_hook): Likewise. + (ppc64_elf_reloc_type_class): Likewise. + +2001-10-02 Alan Modra + + * version.h: New file. + * bfd-in.h: (BFD_VERSION): Substitute bfd_version. + (BFD_VERSION_DATE): Define. + (BFD_VERSION_STRING): Define. + * configure.in: AC_SUBST bfd_version, bfd_version_date and + bfd_version_string. + (AC_OUTPUT ): Depend on version.h. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + + * bfd-in.h: Include "symcat.h". + (CONCAT4): Redefine as for old CAT4. + * aout-arm.c: Use equivalent CONCAT* macro in place of CAT* macros. + Add warning regarding whitespace. + * aout-cris.c: Likewise. + * aout-ns32k.c: Likewise. + * aout-sparcle.c: Likewise. + * aout-tic30.c: Likewise. + * aout0.c: Likewise. + * armnetbsd.c: Likewise. + * demo64.c: Likewise. + * elf-bfd.h: Likewise. + * gen-aout.c: Likewise. + * host-aout.c: Likewise. + * hp300bsd.c: Likewise. + * hp300hpux.c: Likewise. + * i386aout.c: Likewise. + * i386bsd.c: Likewise. + * i386dynix.c: Likewise. + * i386freebsd.c: Likewise. + * i386linux.c: Likewise. + * i386lynx.c: Likewise. + * i386mach3.c: Likewise. + * i386netbsd.c: Likewise. + * libaout.h: Likewise. + * m68k4knetbsd.c: Likewise. + * m68klinux.c: Likewise. + * m68klynx.c: Likewise. + * m68knetbsd.c: Likewise. + * m88kmach3.c: Likewise. + * mipsbsd.c: Likewise. + * newsos3.c: Likewise. + * ns32knetbsd.c: Likewise. + * pc532-mach.c: Likewise. + * pdp11.c: Likewise. + * riscix.c: Likewise. + * sparclinux.c: Likewise. + * sparclynx.c: Likewise. + * sparcnetbsd.c: Likewise. + * sunos.c: Likewise. + * targets.c: Likewise. + * vaxnetbsd.c: Likewise. + * vms-hdr.c: Likewise. + +2001-10-01 Alan Modra + + * bfd-in.h: Remove comments regarding generated files. + * libbfd-in.h: Likewise. + * libcoff-in.h: Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Likewise. + * libcoff.h: Likewise. + +2001-09-30 kaz Kojima + Hans-Peter Nilsson + + * elf32-sh.c (sh_elf_howto_table, R_SH_REL32): Make + partial_inplace, matching assembler output. Set src_mask to + all ones. + (sh_elf_relocate_section): Delete misplaced comment. + For relocatable linking against section symbol, call + _bfd_relocate_contents for partial_inplace relocs and adjust + rel->r_addend for others. + : Fetch partial_inplace addend with + bfd_get_32, not at rel->r_addend. + +2001-09-30 Alan Modra + + * elf.c (_bfd_elf_link_hash_copy_indirect): Set ind refcounts to + the old dir refcount, so we indirectly set them to init_refcount. + Short-circuit asserts when we've just verified they are true. + +2001-09-29 Alan Modra + + * section.c (struct sec): Remove kept_section. + (STD_SECTION): Remove kept_section initialisation. + (bfd_make_section_anyway): Here too. + * ecoff.c (bfd_debug_section): Remove kept_section initialisation. + * cofflink.c (_bfd_coff_link_input_bfd): Don't test kept_section. + * elflink.h (elf_link_input_bfd): Set discarded link-once section + symbols to zero, and remove all code involved with kept_section + and tracking section symbol values. + * bfd-in2.h: Regenerate. + * configure.in: Bump version number. + * configure: Regenerate. + +2001-09-29 Alan Modra + + * elf64-ppc.c (struct ppc_dyn_relocs): New. + (IS_ABSOLUTE_RELOC): Define. + (struct ppc_link_hash_entry): New. + (struct ppc_link_hash_table): New. + (ppc_hash_table): Define. + (link_hash_newfunc): New function. + (ppc64_elf_link_hash_table_create): New function. + (create_got_section): New function. + (ppc64_elf_create_dynamic_sections): Call create_got_section. Stash + pointers to our dynamic sections in hash table. + (ppc64_elf_copy_indirect_symbol): New function. + (ppc64_elf_check_relocs): Remove DEBUG code. Use short-cuts to + dynamic sections. Localise vars. Modify code for refcounts + starting from zero. Don't allocate here, or force symbols dynamic. + Don't copy all relocs if shared, select ones we need. Add code + to track possible copy relocs for non-shared link. + (ppc64_elf_gc_mark_hook): Update comment. + (ppc64_elf_gc_sweep_hook): Sweep dynrelocs too. + (ppc64_elf_adjust_dynamic_symbol): Remove DEBUG code. Rewrite .plt + code for reference counting garbage collection. Don't create .plt + entries for functions that don't comply with ABI naming convention, + and don't allocate .plt space here. Use short-cuts to dynamic + sections. If possible, keep dynamic relocations instead of using + copy relocs. Remove confused comments. + (ppc_adjust_dynindx): Delete. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (allocate_dynrelocs): New function. + (readonly_dynrelocs): New function. + (ppc64_elf_size_dynamic_sections): Rewrite. Allocate local .got + space here, and call allocate_dynrelocs to allocate space for + global .plt, .got and reloc sections. Use short-cuts to dynamic + sections. Call readonly_dynrelocs to determine whether we need + DT_TEXTREL. Don't generate section symbols here, the generic + ELF linker code does it for us. + (ppc64_elf_final_link): Call regular ELF backend linker rather than + gc variety, since we do our own .got handling. + (ppc64_elf_relocate_section): Remove DEBUG code. Make use of + dynamic section short-cuts. Localise vars, and delay setting. + Handle unknown relocs in main switch statement. Replace ugly + complicated tests for unresolvable relocs with a simple direct + scheme using "unresolved_reloc" var. Test ELF_ST_VISIBILITY + before allowing an undefined sym in a shared lib. Do R_*_DS tests + after main switch, when we've set addend. Do non-addend insn + tweaks before main swithc. Ignore input_section->vma when + calculating reloc offsets as it's always zero. Rewrite dynamic + reloc handling. Consolidate R_*_HA handling. Handle more relocs. + (ppc64_elf_finish_dynamic_symbol): Remove DEBUG code. Make use + of dynamic section short-cuts. Reorganise .plt handling code. + Remove confused comments. Take note of ELF_LINK_FORCED_LOCAL. + Move expressions out of swap_reloca_out function calls. + (ppc64_elf_reloc_type_class): New function. + (ppc64_elf_info_to_howto): Move common expression to local var. + (ppc64_elf_finish_dynamic_sections): Remove DEBUG code. Make use + of dynamic section short-cuts. Don't fiddle with section syms + here as the ELF linker does it for us. + (elf_backend_can_refcount): Define. + (bfd_elf64_bfd_link_hash_table_create): Define. + (elf_backend_copy_indirect_symbol): Define. + (elf_backend_reloc_type_class): Define. + (elf_backend_*, bfd_elf64_bfd_* defines): Sort. + +2001-09-29 Alan Modra + + * elf-bfd.h (struct elf_link_local_dynamic_entry): Add init_refcount. + (struct elf_backend_data): Add can_refcount. + * elf.c (_bfd_elf_link_hash_newfunc): Get rid of a few casts. Set + got.refcount and plt.refcount from init_refcount. + (_bfd_elf_link_hash_table_init): Set up init_refcount. + (_bfd_elf_link_hash_copy_indirect): Reference got/plt.refcount + rather than got/plt.offset, and test for <= 0 rather than -1. + * elflink.h (size_dynamic_sections): Set init_refcount to -1. + * elfxx-target.h (elf_backend_can_refcount): Define. + (elfNN_bed): Init can_refcount. + * linker.c (_bfd_link_hash_newfunc): Get rid of a few casts. + (_bfd_generic_link_hash_newfunc): Likewise. + * elf32-cris.c (cris_elf_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + * elf32-hppa.c (elf32_hppa_check_relocs): Modify for refcounts + starting from zero. + (elf32_hppa_copy_indirect_symbol): Make static to agree with + prototype. + (elf_backend_can_refcount): Define. + * elf32-i386.c (elf_i386_check_relocs): Modify for refcounts + starting from zero. + (allocate_dynrelocs): Set plt/got.offset rather than *.refcount. + (elf_i386_finish_dynamic_symbol): Expand SHN_UNDEF comment. + (elf_i386_finish_dynamic_sections): Use local var so line < 80 chars. + (elf_backend_can_refcount): Define. + (elf_i386_copy_indirect_symbol): Make static to agree with + prototype. Formatting fix. + * elf32-m68k.c (elf_m68k_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + * elf32-ppc.c (ppc_elf_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + * elf32-s390.c (elf_s390_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + * elf64-s390.c (elf_s390_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + * elf64-x86-64.c (elf64_x86_64_check_relocs): Modify for refcounts + starting from zero. + (elf_backend_can_refcount): Define. + + * som.c (som_write_symbol_strings): Cast current_offset in + bfd_seek call to match param type. + +2001-09-28 J. Brobecker + + * som.c (som_write_symbol_strings): Fix incorrect type of + current_offset to match the function definition. Fixes a build + failure on HPUX-11.00. + +2001-09-28 Richard Henderson + + * elfxx-target.h [section_flags]: Add SEC_ARCH_BIT_0, SEC_SMALL_DATA, + SEC_MERGE, SEC_STRINGS. + + * section.c (SEC_ARCH_BIT_0): New; replace unused SEC_BALIGN. + * bfd-in2.h: Rebuild. + +2001-09-28 Alan Modra + + * elf64-x86-64.c (elf64_x86_64_reloc_type_lookup): Don't map bfd + reloc code using x86_64_reloc_map. + + * elf32-hppa.c (elf32_hppa_check_relocs): Update comment since we + no longer allocate here. Localise some vars to blocks where they + are used. + (elf32_hppa_adjust_dynamic_symbol): Correct a comment. Delay + setting of vars until needed. + (allocate_dynrelocs): Don't create a .plt entry without a reloc + when symbol visibilty makes a function local. + (elf32_hppa_finish_dynamic_symbol): Move expressions out of + swap_reloca_out function calls. + (elf32_hppa_relocate_section): Likewies. Comment typo fix. + (elf32_hppa_finish_dynamic_sections): Migrate common code out of + switch statement. + + * elf32-i386.c (elf_i386_check_relocs): Update comment since we + no longer allocate here. Localise some vars to blocks where they + are used. Remove separate switch stmt for creating .got sec. + (elf_i386_adjust_dynamic_symbol): Correct a comment. Remove + redundant casts and aborts. Delay setting of vars until needed. + (allocate_dynrelocs): Remove redundant casts and aborts. + (elf_i386_size_dynamic_sections): Move comment. + (elf_i386_finish_dynamic_symbol): Move expressions out of function + calls. + (elf_i386_relocate_section): Likewise. Comment typo fix. + (elf_i386_finish_dynamic_sections): Migrate common code out of + switch statement. + (elf_backend_* defines): Sort. + + * elf32-i386.c (allocate_dynrelocs): Don't create a .plt entry + without a reloc when symbol visibilty makes a function local. + +2001-09-27 Nick Clifton + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix detection of + conflicting float flags. + +2001-09-26 Alan Modra + + * elf32-i386 (elf_i386_copy_indirect_symbol): New function. + (elf_backend_copy_indirect_symbol): Define. + (struct elf_i386_link_hash_entry): Rename "root" to "elf". + (struct elf_i386_link_hash_table): Likewise. + (link_hash_newfunc): Get rid of unnecessary casts. + (elf_i386_link_hash_table_create): Likewise. + (elf_i386_check_relocs): Initialise local_got_refcounts to 0. + Don't test input section SEC_READONLY here to try to avoid copy + relocs, and keep dyn_relocs regardleas of ELF_LINK_NON_GOT_REF. + (elf_i386_adjust_dynamic_symbol): Check output section SEC_READONLY + here to properly test whether we need copy relocs. Do so for weak + syms too. + + * elf32-hppa (elf32_hppa_copy_indirect_symbol): New function. + (elf_backend_copy_indirect_symbol): Define. + (struct elf32_hppa_link_hash_table): Rename "root" to "elf". + (stub_hash_newfunc): Get rid of unnecessary casts. + (hppa_link_hash_newfunc): Likewise. + (elf32_hppa_check_relocs): Initialise local_got_refcounts to 0. + Don't test input section SEC_READONLY here to try to avoid copy + relocs, and keep dyn_relocs regardleas of ELF_LINK_NON_GOT_REF. + (elf32_hppa_adjust_dynamic_symbol): Check output section SEC_READONLY + here to properly test whether we need copy relocs. Do so for weak + syms too. + +2001-09-26 Alan Modra + + * bfd.c (_bfd_default_error_handlerl): Define using VPARAMS, + VA_OPEN, VA_FIXEDARG, VA_CLOSE. + (bfd_archive_filename): Cast bfd_malloc arg to the correct size. + +2001-09-25 Jakub Jelinek + + * elf64-sparc.c (sparc64_elf_build_plt): Fix .plt[32768+] slot + computation. + +2001-09-25 H.J. Lu + + * bfd-in2.h: Regenerated. + +2001-09-25 Alan Modra + + * elf32-i386.c: Add comment re linker function names and ordering. + (elf_i386_link_hash_newfunc): Rename to link_hash_newfunc. + (elf_i386_grok_prstatus): Move before linker functions. + (elf_i386_grok_psinfo): Likewise. + (elf_i386_fake_sections): Move so that functions are ordered. + (elf_i386_reloc_type_class): Likewise. Comment function purpose. + +2001-09-25 Alan Modra + + * elf32-hppa.c: Rename occurrences of "hplink" to "htab" + throughout file. + + * elf32-hppa.c: (LONG_BRANCH_PIC_IN_SHLIB): Delete. Remove all + code handling this option. + (LONG_BRANCH_VIA_PLT): Likewise. + (RELATIVE_DYNRELOCS): Define as zero. + (struct elf32_hppa_dyn_reloc_entry): Add "sec", and + "pc_count" fields. Remove "section" field. + (elf32_hppa_link_hash_entry): Rename reloc_entries to dyn_relocs. + (elf32_hppa_check_relocs): Don't allocate space for dynamic + relocs here. Instead, record all needed dynamic relocs via + dyn_relocs and local_dynrel. Cache pointer to "sreloc" section + in elf_section_data. + (elf32_hppa_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. + (allocate_plt_and_got_and_discard_relocs): Rename to + allocate_dynrelocs. Allocate rather than discarding dyn relocs. + (readonly_dynrelocs): New function. + (elf32_hppa_size_dynamic_sections): Mark output_bfd unused. + Call readonly_dynrelocs to determine need for DT_TEXTREL. + Rename "i" to "ibfd". Allocate space for local dyn relocs. + (elf32_hppa_relocate_section): Make use of cached sreloc. + (elf32_hppa_reloc_type_class): New function. + (elf_backend_reloc_type_class): Define. + +2001-09-25 Alan Modra + + * elf-bfd.h (struct bfd_elf_section_data): Add "local_dynrel" + and "sreloc" fields. + * elf32-i386.c (struct elf_i386_dyn_relocs): Add "sec", and + "pc_count" fields. Remove "section" field. + (elf_i386_check_relocs): Don't set DF_TEXTREL here. Don't + allocate space for dynamic relocs here. Instead, record all + needed dynamic relocs via dyn_relocs and local_dynrel. Cache + pointer to "sreloc" section in elf_section_data. + (elf_i386_gc_sweep_hook): Sweep dyn_relocs and local_dynrel. + (allocate_plt_and_got_and_discard_relocs): Rename to + allocate_dynrelocs. Allocate rather than discarding dyn relocs. + (readonly_dynrelocs): New function. + (elf_i386_size_dynamic_sections): Call readonly_dynrelocs. + Rename "i" to "ibfd". Allocate space for local dyn relocs. + (elf_i386_relocate_section): Make use of cached sreloc. + +2001-09-24 Alan Modra + + * elf-bfd.h (elf_backend_reloc_type_class): Pass in the entire + reloc rather than just the type. + (_bfd_elf_reloc_type_class): Likewise. + * elf.c (_bfd_elf_reloc_type_class): Likewise. + * elf32-arm.h (elf32_arm_reloc_type_class): Likewise. + * elf32-cris.c (elf_cris_reloc_type_class): Likewise. + * elf32-i386.c (elf_i386_reloc_type_class): Likewise. + * elf32-m68k.c (elf32_m68k_reloc_type_class): Likewise. + * elf32-ppc.c (ppc_elf_reloc_type_class): Likewise. + * elf32-s390.c (elf_s390_reloc_type_class): Likewise. + * elf32-sh.c (sh_elf_reloc_type_class): Likewise. + * elf32-sparc.c (elf32_sparc_reloc_type_class): Likewise. + * elf64-alpha.c (elf64_alpha_reloc_type_class): Likewise. + * elf64-s390.c (elf_s390_reloc_type_class): Likewise. + * elf64-sparc.c (sparc64_elf_reloc_type_class): Likewise. + * elf64-x86-64.c (elf64_x86_64_reloc_type_class): Likewise. + * elfxx-ia64.c (elfNN_ia64_reloc_type_class): Likewise. + * elflink.h: Formatting fixes. + (elf_link_sort_relocs): Make "count" and "size" bfd_size_type. + Call bfd_zmalloc rather than calloc. Remove unnecessary cast of + o->contents to PTR. Update call to elf_backend_reloc_type_class. + +2001-09-22 John Reiser + + * elfcode.h (elf_object_p): Allow for no section header at all in + non-ET_REL files. Honor 0 for e_shnum, e_shstrndx, e_shoff. + +2001-09-21 Nick Clifton + + * elfxx-ia64.c: Fix compile time warning messages. + * coff-mcore.c: Fix compile time warning messages. + * coff-ppc.c: Fix compile time warning messages. + * coffcode.h: Fix compile time warning messages. + * elf32-mips.c: Fix compile time warning messages. + * elf64-alpha.c: Fix compile time warning messages. + * libbfd.c: Fix compile time warning messages. + * bfd-in2.h: Regenerate. + +2001-09-21 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + + * aoutx.h: Formatting fixes. + * merge.c (_bfd_merged_section_offset): Break line at 80 chars. + + * linker.c: Replace bfd_get_filename with bfd_archive_filename + in error message. + +2001-09-21 Alan Modra + + * bfd.c (bfd_archive_filename): New function. + * bfd-in2.h: Regenerate. + * aout-adobe.c: Replace bfd_get_filename with bfd_archive_filename + in error messages where the bfd is an input bfd. + * aout-cris.c: Likewise. + * coff-arm.c: Likewise. + * coff-mcore.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-sh.c: Likewise. + * coff-tic54x.c: Likewise. + * coff-tic80.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + * ecofflink.c: Likewise. + * elf-hppa.h: Likewise. + * elf.c: Likewise. + * elf32-arm.h: Likewise. + * elf32-cris.c: Likewise. + * elf32-gen.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-gen.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sparc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elflink.h: Likewise. + * elfxx-ia64.c: Likewise. + * ieee.c: Likewise. + * ihex.c: Likewise. + * libbfd.c: Likewise. + * pdp11.c: Likewise. + * pe-mips.c: Likewise. + * peicode.h: Likewise. + * srec.c: Likewise. + * xcofflink.c: Likewise. + + * elf32-arm.h: Make _bfd_error_handler calls K&R compatible. + + * elflink.c (_bfd_elf_create_linker_section): Better grammar for + error message. + + * coff-mcore.c (coff_mcore_relocate_section): Internalionalise + error message. + + * elf64-sparc.c (sparc64_elf_add_symbol_hook): Constify stt_types. + Consolidate error messages, and split long messages to two lines. + +2001-09-20 John Reiser + + * elf32-i386.c (elf_i386_relocate_section): Coordinate info->symbolic + and info->allow_shlib_undefined. + * elf32-cris.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sparc.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sparc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfxx-ia64.c: Likewise. + +2001-09-18 Bruno Haible + + * aoutx.h: Include "safe-ctype.h" instead of . + (aout_link_write_symbols): Use ISDIGIT instead of isdigit. + * archive.c: Include "safe-ctype.h" instead of . + (_bfd_generic_read_ar_hdr_mag): Use ISDIGIT instead of isdigit. + * archures.c: Include "safe-ctype.h" instead of . + (bfd_default_scan): Use ISDIGIT instead of isdigit. + * bfd.c: Include "safe-ctype.h" instead of . + (bfd_scan_vma): Use ISXDIGIT/ISDIGIT/ISLOWER instead of + isxdigit/isdigit/islower. + * binary.c: Include "safe-ctype.h" instead of . + (mangle_name): Use ISALNUM instead of isalnum. + * cpu-v850.c: Include "safe-ctype.h" instead of . + (scan): Use ISDIGIT instead of isdigit. + * hosts/alphavms.h: Don't include . + * ieee.c: Include "safe-ctype.h" instead of . + (ieee_object_p): Use TOUPPER instead of toupper. + * ihex.c: Include "safe-ctype.h" instead of . + (ihex_bad_byte): Use ISPRINT instead of isprint. + * merge.c: Don't include . + * oasys.c: Include "safe-ctype.h" instead of . + (oasys_write_sections): Use ISDIGIT instead of isdigit. + * pdp11.c: Include "safe-ctype.h" instead of . + (aout_link_write_symbols): Use ISDIGIT instead of isdigit. + * ppcboot.c: Include "safe-ctype.h" instead of . + (mangle_name): Use ISALNUM instead of isalnum. + * som.c: Include "safe-ctype.h" instead of . + (som_set_reloc_info): Use ISUPPER/ISLOWER/ISDIGIT instead of + isupper/islower/isdigit. + (som_decode_symclass): Use TOUPPER instead of toupper. + * srec.c: Include "safe-ctype.h" instead of . + (srec_bad_byte): Use ISPRINT instead of isprint. + (srec_scan): Use ISSPACE instead of isspace. + * stabs.c: Include "safe-ctype.h" instead of . + (_bfd_link_section_stabs): Use ISDIGIT instead of isdigit. + * syms.c: Include "safe-ctype.h" + (islower, toupper): Remove macro definitions. + (bfd_decode_symclass): Use TOUPPER instead of toupper. + * vms-gsd.c: Don't include . + * vms-hdr.c: Include "safe-ctype.h" instead of . + (_bfd_vms_write_hdr): Use ISLOWER/TOUPPER instead of + islower/toupper. + * vms-tir.c: Don't include . + +2001-09-18 Alan Modra + + * libbfd.c (bfd_bread): New function replacing bfd_read without + redundant params. Allow reads up to (size_t) -2 in length. + (bfd_bwrite): Similarly for bfd_write. + (real_read): Return a size_t. + (bfd_read): Call bfd_bread. + (bfd_write): Call bfd_bwrite. + (warn_deprecated): New function to annoy everybody. + (bfd_get_file_window): Don't call bfd_set_error unnecessarily. + * bfd-in.h (bfd_bread, bfd_bwrite, warn_deprecated): Declare. + (bfd_read, bfd_write): Define as macro. + * aix386-core.c: Replace calls to bfd_read with bfd_bread, and + likewise for bfd_write. Ensure function args are correct size by + using casts or local vars. In some cases, remove unnecessary + casts. Formatting fixes, in some cases removing a large expression + from function args by using a local var. Replace CONST with const. + Modify variable types to avoid warings. Use casts to avoid + warnings when using negative numbers in unsigned expressions. + * aout-adobe.c: Likewise. + * aout-arm.c: Likewise. + * aout-cris.c: Likewise. + * aout-encap.c: Likewise. + * aout-ns32k.c: Likewise. + * aout-target.h: Likewise. + * aout-tic30.c: Likewise. + * aoutf1.h: Likewise. + * aoutx.h: Likewise. + * archive.c: Likewise. + * archures.c: Likewise. + * bfd-in.h: Likewise. + * bfd.c: Likewise. + * binary.c: Likewise. + * bout.c: Likewise. + * cache.c: Likewise. + * cisco-core.c: Likewise. + * coff-a29k.c: Likewise. + * coff-alpha.c: Likewise. + * coff-arm.c: Likewise. + * coff-h8300.c: Likewise. + * coff-h8500.c: Likewise. + * coff-i386.c: Likewise. + * coff-i860.c: Likewise. + * coff-i960.c: Likewise. + * coff-ia64.c: Likewise. + * coff-m68k.c: Likewise. + * coff-m88k.c: Likewise. + * coff-mcore.c: Likewise. + * coff-mips.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-sh.c: Likewise. + * coff-sparc.c: Likewise. + * coff-stgo32.c: Likewise. + * coff-tic30.c: Likewise. + * coff-tic54x.c: Likewise. + * coff-tic80.c: Likewise. + * coff-w65.c: Likewise. + * coff-z8k.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + * coffswap.h: Likewise. + * corefile.c: Likewise. + * cpu-arc.c: Likewise. + * cpu-h8300.c: Likewise. + * cpu-h8500.c: Likewise. + * cpu-i960.c: Likewise. + * cpu-ia64-opc.c: Likewise. + * cpu-ns32k.c: Likewise. + * cpu-pdp11.c: Likewise. + * cpu-pj.c: Likewise. + * cpu-sh.c: Likewise. + * cpu-w65.c: Likewise. + * cpu-z8k.c: Likewise. + * dwarf1.c: Likewise. + * dwarf2.c: Likewise. + * ecoff.c: Likewise. + * ecofflink.c: Likewise. + * ecoffswap.h: Likewise. + * elf-bfd.h: Likewise. + * elf-hppa.h: Likewise. + * elf-m10200.c: Likewise. + * elf-m10300.c: Likewise. + * elf.c: Likewise. + * elf32-arc.c: Likewise. + * elf32-arm.h: Likewise. + * elf32-avr.c: Likewise. + * elf32-cris.c: Likewise. + * elf32-fr30.c: Likewise. + * elf32-gen.c: Likewise. + * elf32-h8300.c: Likewise. + * elf32-hppa.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-i860.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-mips.c: Likewise. + * elf32-openrisc.c: Likewise. + * elf32-pj.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-s390.c: Likewise. + * elf32-sh-lin.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-mips.c: Likewise. + * elf64-ppc.c: Likewise. + * elf64-s390.c: Likewise. + * elf64-sparc.c: Likewise. + * elf64-x86-64.c: Likewise. + * elfarm-nabi.c: Likewise. + * elfcode.h: Likewise. + * elfcore.h: Likewise. + * elflink.c: Likewise. + * elflink.h: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-target.h: Likewise. + * format.c: Likewise. + * hash.c: Likewise. + * hp300hpux.c: Likewise. + * hppabsd-core.c: Likewise. + * hpux-core.c: Likewise. + * i386aout.c: Likewise. + * i386dynix.c: Likewise. + * i386linux.c: Likewise. + * i386lynx.c: Likewise. + * i386mach3.c: Likewise. + * i386msdos.c: Likewise. + * i386os9k.c: Likewise. + * ieee.c: Likewise. + * ihex.c: Likewise. + * irix-core.c: Likewise. + * libaout.h: Likewise. + * libbfd-in.h: Likewise. + * libbfd.c: Likewise. + * libcoff-in.h: Likewise. + * libecoff.h: Likewise. + * libieee.h: Likewise. + * libnlm.h: Likewise. + * libpei.h: Likewise. + * libxcoff.h: Likewise. + * linker.c: Likewise. + * lynx-core.c: Likewise. + * m68klinux.c: Likewise. + * merge.c: Likewise. + * mipsbsd.c: Likewise. + * netbsd-core.c: Likewise. + * nlm.c: Likewise. + * nlm32-alpha.c: Likewise. + * nlm32-i386.c: Likewise. + * nlm32-ppc.c: Likewise. + * nlm32-sparc.c: Likewise. + * nlmcode.h: Likewise. + * nlmswap.h: Likewise. + * ns32k.h: Likewise. + * oasys.c: Likewise. + * opncls.c: Likewise. + * osf-core.c: Likewise. + * pc532-mach.c: Likewise. + * pdp11.c: Likewise. + * pe-mips.c: Likewise. + * peXXigen.c: Likewise. + * peicode.h: Likewise. + * ppcboot.c: Likewise. + * ptrace-core.c: Likewise. + * reloc.c: Likewise. + * reloc16.c: Likewise. + * riscix.c: Likewise. + * rs6000-core.c: Likewise. + * sco5-core.c: Likewise. + * section.c: Likewise. + * som.c: Likewise. + * sparclinux.c: Likewise. + * sparclynx.c: Likewise. + * srec.c: Likewise. + * stabs.c: Likewise. + * sunos.c: Likewise. + * syms.c: Likewise. + * targets.c: Likewise. + * tekhex.c: Likewise. + * trad-core.c: Likewise. + * versados.c: Likewise. + * vms-gsd.c: Likewise. + * vms-hdr.c: Likewise. + * vms-misc.c: Likewise. + * vms-tir.c: Likewise. + * vms.c: Likewise. + * vms.h: Likewise. + * xcofflink.c: Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * libcoff.h: Regenerate. + + * bfd.c (struct _bfd): Make "where" and "origin" unsigned. + * bfd-in.h (file_ptr): Change from a long int to a bfd_signed_vma. + (ufile_ptr): Define. + (bfd_tell): Return a ufile_ptr. + * libbfd.c (bfd_tell): Likewise. + (bfd_seek): Use bfd_size_type locals. Don't call bfd_set_error + unnecessarily. + * aix386-core.c: Test != 0 for bfd_seek errors rather than < 0. + * aoutf1.h: Likewise. + * som.c: Likewise. + * cache.c (bfd_cache_lookup_worker): Guard against abfd->where + larger than unsigned long can represent. + + * libbfd.c (bfd_malloc): Take a bfd_size_type arg. Error if + size overflows size_t. + (bfd_realloc): Likewise. + (bfd_zmalloc): Likewise. + * opncls.c (bfd_alloc): Likewise. + (bfd_zalloc): Likewise. + * libbfd-in.h (bfd_malloc, bfd_realloc, bfd_zmalloc): Update. + (bfd_alloc, bfd_zalloc): Update. + + * libbfd.c (bfd_get_8): Mask with 0xff in case char is more than + 8 bits. + (bfd_get_signed_8): Likewise. + (H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8, + H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8, + H_GET_64, H_GET_32, H_GET_16, H_GET_8, + H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Define and use. + * libaout.h: Likewise define and use here. + * aout-adobe.c: Use H_GET_* and H_PUT_* macros. + * aout-arm.c: Likewise. + * aout-encap.c: Likewise. + * aout-ns32k.c: Likewise. + * aout-tic30.c: Likewise. + * aoutf1.h: Likewise. + * aoutx.h: Likewise. + * bout.c: Likewise. + * coff-alpha.c: Likewise. + * coff-h8300.c: Likewise. + * coff-h8500.c: Likewise. + * coff-i960.c: Likewise. + * coff-ia64.c: Likewise. + * coff-m88k.c: Likewise. + * coff-mips.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-sh.c: Likewise. + * coff-sparc.c: Likewise. + * coff-stgo32.c: Likewise. + * coff-tic30.c: Likewise. + * coff-tic80.c: Likewise. + * coff-w65.c: Likewise. + * coff-z8k.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + * coffswap.h: Likewise. + * ecoff.c: Likewise. + * ecoffswap.h: Likewise. + * elf.c: Likewise. + * elf32-mips.c: Likewise. + * elf64-mips.c: Likewise. + * hp300hpux.c: Likewise. + * i386dynix.c: Likewise. + * i386lynx.c: Likewise. + * i386msdos.c: Likewise. + * i386os9k.c: Likewise. + * libpei.h: Likewise. + * nlm32-alpha.c: Likewise. + * nlm32-i386.c: Likewise. + * nlm32-ppc.c: Likewise. + * nlmcode.h: Likewise. + * nlmswap.h: Likewise. + * oasys.c: Likewise. + * pdp11.c: Likewise. + * pe-mips.c: Likewise. + * peXXigen.c: Likewise. + * peicode.h: Likewise. + * riscix.c: Likewise. + * sunos.c: Likewise. + * xcofflink.c: Likewise. + * elfcode.h: (put_word, get_word, put_signed_word, get_signed_word): + Rename to H_PUT_WORD, H_GET_WORD, H_PUT_SIGNED_WORD, H_GET_SIGNED_WORD. + * coff-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Don't define. Use + equivalent H_PUT_* macro instead. + (GETWORD, GETHALF, GETBYTE): Similarly. + * coff64-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Likewise. + (GETWORD, GETHALF, GETBYTE): Likewise. + * coffswap.h (PUTWORD, PUTHALF, PUTBYTE): Likewise. + + * bfd-in.h (struct orl): Change "pos" to a union. + * archive.c (_bfd_compute_and_write_armap): Use it instead of casts. + (bsd_write_armap): Here too. + (coff_write_armap): And here. + * coff-rs6000.c (xcoff_write_armap_old): And here. + (xcoff_write_one_armap_big): And here. + (xcoff_write_armap_big): And here. + * ecoff.c (_bfd_ecoff_write_armap): And here. + * elf64-mips.c (mips_elf64_write_armap): And here. + + * aoutf1.h (sunos_set_arch_mach): Make "mach" param an enum. + * elf-m10300.c (elf_mn10300_mach): Return an unsigned long. + * elf32-h8300.c (elf32_h8_mach): Likewise. + * elf32-mips.c (elf_mips_mach): Likewise. + * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise. + + * aix386-core.c (aix386_core_file_p): Remove redundant bfd_release + calls. + (aix386_core_vec): Typo fix. + + * aout-arm.c: Include libaout.h and aout/aout64.h after N_TXTADDR + etc. to avoid redefined macro warning. + (MY(put_reloc)): Use bfd_vma for "value" rather than long. + (MY(fix_pcrel_26)): Likewise. + * aout-ns32k.c (MY(put_reloc)): Likewise. + * aout-cris.c (MY(swap_ext_reloc_out)): Likewise for r_addend. + * aoutx.h (NAME(aout,swap_ext_reloc_out)): Likewise. + * coff-arm.c (coff_arm_relocate_section): Likewise for my_offset. + + * aout-encap.c: Include "file", not for binutils headers. + (encap_object_p): Half baked attempt to fix compile errors in + code dealing with "magic". + + * aout-ns32k.c: Include "file", not for binutils headers. + (_bfd_ns32k_relocate_contents): get_data and put_data manipulate + bfd_vma's rather than longs. + * cpu-ns32k.c (ns32k_sign_extend): Delete. + (_bfd_ns32k_get_displacement): Return a bfd_vma, don't pass in offset. + (_bfd_ns32k_get_immediate): Likewise. Add code for 8 byte values, + remove case 3. + (_bfd_ns32k_put_displacement): Accept a bfd_vma, don't pass in offset. + Use unsigned comparisons. + (bfd_ns32k_put_immediate): Likewise, and add code for 8 byte values. + (do_ns32k_reloc): get_data and put_data operate on bfd_vma's. + (_bfd_do_ns32k_reloc_contents): Likewise. + * ns32k.h (_bfd_ns32k_get_displacement): Update prototype. + (_bfd_ns32k_get_immediate): Likewise. + (_bfd_ns32k_put_displacement): Likewise. + (_bfd_ns32k_put_immediate): Likewise. + (bfd_reloc_status_type): Likewise. + + * aoutx.h (NAME(aout,find_nearest_line)): Rename 'p' to 'colon' + to avoid shadowing. + * pdp11.c (NAME(aout,find_nearest_line)): Likewise. + * coff-h8300.c (h8300_reloc16_extra_cases): Remove shadowing "value". + * coff-ppc.c (enum ref_category): Rename "data" to "tocdata" to + avoid shadowing. + (record_toc): Use a bfd_signed_vma for our_toc_offset. + * coffcode.h (coff_write_relocs): Rename "i" to avoid shadowing. + * elf.c (bfd_elf_get_bfd_needed_list): Rename "link" var to avoid + shadow warning. + (_bfd_elfcore_strndup): Likewise for "dup". + * elf32-cris.c (cris_elf_relocate_section): "symname" instead of + "name" to avoid shadowing. + * elf32-hppa.c (elf32_hppa_relocate_section): Remove duplicate + definition of "off". + * elf32-i386.c (elf_i386_relocate_section): Likewise. + * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Remove duplicate + definition of "s". + (_bfd_mips_elf_final_link): Rename "i" to "j". Remove duplicate + "secpp". + * elf64-x86-64.c (elf64_x86_64_relocate_section): Rename inner "indx" + to avoid shadowing. + * elflink.h (elf_link_add_object_symbols): Rename "link" to "shlink" + to avoid shadowing. + (elf_link_input_bfd): Likewise. + (elf_bfd_final_link): Remove duplicate innermost "off" var. + * oasys.c (oasys_write_data): Rename innermost "p" to "sym". + * reloc16.c (bfd_coff_reloc16_relax_section): Rename "i" param to + "input_section". + * som.c (som_prep_for_fixups): Rename inner "i" to "j". + * sunos.c (sunos_add_dynamic_symbols): Localise "s" var. + (sunos_write_dynamic_symbol): Remove unused vars. + * syms.c (_bfd_stab_section_find_nearest_line): Remove duplicate + innermost "directory_name" and "file_name" vars. + * tekhex.c (first_phase): Rename local var "type" to "stype". + (tekhex_write_object_contents): Rename innermost "s" to "sym". + * vms-gsd.c (vms_secflag_by_name): Change "size" param to "hassize", + doing comparison at caller. + (vms_esecflag_by_name): Likewise. + * vms-tir.c (etir_sto): Rename innermost "psect" to "psect1". + * xcofflink.c (xcoff_link_input_bfd): Delete duplicate innermost "o". + (xcoff_write_global_symbol): Rename "p" param to "inf". + + * cisco-core.c: Add missing prototypes. + (cisco_core_file_failing_command): Add ATTRIBUTE_UNUSED. + (cisco_core_file_failing_signal): Likewise. + (cisco_core_file_matches_executable_p): Likewise. + * hpux-core.c (hpux_core_core_file_failing_signal): Likewise. + * netbsd-core.c (netbsd_core_file_matches_executable_p): Likewise. + * osf-core.c (osf_core_core_file_matches_executable_p): Likewise. + * sco5-core.c (sco5_core_file_matches_executable_p): Likewise. + + * coff-arm.c (coff_arm_link_hash_table): Use bfd_size_type for + thumb_glue_size and arm_glue_size. + * elf32-arm.h (elf32_arm_link_hash_table): Likewise here. + + * coff64-rs6000.c: Group prototypes together. + + * coffcode.h (coff_set_arch_mach): Add ATTRIBUTE_UNUSED. + (buy_and_read): Remove "seek" param. Change "size" to bfd_size_type. + + * cpu-arc.c: Add missing prototypes. + * cpu-h8500.c: Likewise. + * cpu-i960.c: Likewise. + * cpu-pj.c: Likewise. + * cpu-sh.c: Likewise. + * cpu-w65.c: Likewise. + * cpu-z8k.c: Likewise. + * elf32-fr30.c: Likewise. + * elf32-h8300.c: Likewise. + * elf32-i370.c: Likewise. + * hpux-core.c: Likewise. + * versados.c: Likewise. + + * cpu-h8300.c (bfd_default_scan_num_mach): Don't declare. + * cpu-h8500.c: Likewise. + * cpu-i960.c: Likewise. + * cpu-z8k.c: Likewise. + + * cpu-ia64-opc.c: Correct comment. + + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove unused var. + + * elf-bfd.h (elf_size_info): Change count param of write_out_phdrs + to unsigned. + (bfd_elf32_write_out_phdrs): Likewise. + (bfd_elf64_write_out_phdrs): Likewise. + (elf_linker_section_pointers): Change addend to bfd_vma. + (_bfd_elf_find_pointer_linker_section): Likewise. + (_bfd_elfcore_make_pseudosection): Change size param to size_t and + filepos to unsigned file_ptr. + (_bfd_elfcore_strndup): Change max param to size_t. + * elf.c (_bfd_elfcore_make_pseudosection): As above. + (_bfd_elfcore_strndup): Likewise. + (_bfd_elf_find_pointer_linker_section): Likewise. + + * elf-hppa.h (elf_hppa_relocate_insn): Return an int, and change + insn and sym_value to ints. + + * elf.c (elf_read): Make "offset" param a file_ptr, "size" a + bfd_size_type. + (elfcore_read_notes): Likewise. + + * elf32-arm.h (elf32_arm_final_link_relocate): Change sym_flags + param from unsigned char to int. + (elf32_arm_relocate_section): If USE_REL, cast "rel" appropriately + for info_to_howto call. + (add_dynamic_entry): Define macro. + (elf32_arm_size_dynamic_sections): Use add_dynamic_entry. + + * elf32-cris.c (add_dynamic_entry): Define macro. + (elf_cris_size_dynamic_sections): Use add_dynamic_entry. + + * elf32-h8300.c (elf32_h8_final_write_processing): Make static. + (elf32_h8_object_p): Likewise. + (elf32_h8_merge_private_bfd_data): Likewise. + (elf32_h8_relax_section): Cast gap to int so signed comparisons work. + + * elf32-hppa.c (add_dynamic_entry): Define macro. + (elf32_hppa_size_dynamic_sections): Use it. + * elf32-i370.c (add_dynamic_entry): Define macro. + (i370_elf_size_dynamic_sections): Use it. + (i370_noop): Make static. + * elf32-i386.c (add_dynamic_entry): Define macro. + (elf_i386_size_dynamic_sections): Use it. + * elf32-m68k.c (add_dynamic_entry): Define macro. + (elf_m68k_size_dynamic_sections): Use it. + * elf32-ppc.c (add_dynamic_entry): Define macro. + (ppc_elf_size_dynamic_sections): Use it. + * elf32-s390.c (add_dynamic_entry): Define macro. + (elf_s390_size_dynamic_sections): Use it. + * elf64-alpha.c (add_dynamic_entry): Define macro. + (elf64_alpha_size_dynamic_sections): Use it. + * elf64-hppa.c (add_dynamic_entry): Define macro. + (elf64_hppa_size_dynamic_sections): Use it. + * elf64-ppc.c (add_dynamic_entry): Define macro. + (ppc64_elf_size_dynamic_sections): Use it. + * elf64-s390.c (add_dynamic_entry): Define macro. + (elf_s390_size_dynamic_sections): Use it. + * elf64-sparc.c (add_dynamic_entry): Define macro. + (sparc64_elf_size_dynamic_sections): Use it. + * elf64-x86-64.c (add_dynamic_entry): Define macro. + (elf64_x86_64_size_dynamic_sections): Use it. + * elfxx-ia64.c (add_dynamic_entry): Define macro. + (elfNN_ia64_size_dynamic_sections): Use it. + + * elf32-v850.c (SEXT24): Modify to avoid signed/unsigned warning. + (v850_elf_perform_relocation): Make "r_type" param unsigned. + + * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Just return + false if the first malloc fails rather than going via error_return. + + * elf64-sparc.c (sparc64_elf_plt_entry_offset): Use a bfd_vma for + "index" param. + (sparc64_elf_plt_ptr_offset): Likewise, and for "max" param too. + + * elflink.h (elf_link_input_bfd): s/ingored/ignored/ in error message. + + * elfxx-ia64.c (global_sym_index): Return a long. + + * ieee.c (get_symbol): Use int rather than char param. + (ieee_slurp_sections): Move "section" var to inner blocks. + (copy_expression): Don't init "value" to zero or worry about + clearing to zero after using. + (ieee_write_debug_part): Rename "output_buffer" to "obuff" to avoid + shadowing. + + * ihex.c (ihex_write_record): Make "count" var a size_t, "addr" an + unsigned int. + + * libbfd-in.h (BFD_ALIGN): Add cast to avoid signed/unsigned warning. + (bfd_write_bigendian_4byte_int): Pass an unsigned int value param. + + * mipsbsd.c (mips_fix_jmp_addr): Add "error_message" param. + + * pc532-mach.c (MYNSX): Delete. + (ns32kaout_bfd_reloc_type_lookup): Define prototype without MYNSX. + (write_object_contents): Correct prototype. + + * peicode.h (pe_ILF_build_a_bfd): Use an unsigned int param rather + than unsigned short. + + * section.c (bfd_set_section_contents): Remove redundant + "offset < 0" test. Check that "count" doesn't overflow size_t. + (bfd_get_section_contents): Likewise. + + * som.c (som_fixup_formats): Add missing braces. + (som_reloc_addend): Pass a bfd_vma for "addend". + + * srec.c (srec_write_record): Pass "type" as an unsigned int. + (srec_write_symbols): Remove an unnecessary var. + + * targets.c (_bfd_target_vector): Sort entries. Sort externs + to match. + * configure.in: Sort to match. Bump version number. + * configure: Regenerate. + + * tekhex.c (move_section_contents): Assert offset == 0. + + * versados.c (new_symbol_string): Constify arg. + (process_esd): Use bfd_und_section_ptr rather than &bfd_und_section. + (versados_get_symbol_info): Make static. + (versados_print_symbol): Likewise. + (versados_get_reloc_upper_bound): Likewise. + (versados_canonicalize_reloc): Likewise. + +2001-09-18 Nick Clifton + + * elflink.h (elf_link_input_bfd): Fix typo in error message. + +2001-09-17 H.J. Lu + + * dwarf1.c (parse_die): Take a new arg for the end of the + section. Return false if die is beyond the section. + (parse_functions_in_unit): Pass the end of the section to + parse_die (). + (_bfd_dwarf1_find_nearest_line): Likewise. + +2001-09-14 Michael Rauch + + * elf32-sparc.c (elf32_sparc_relocate_section): Treat R_SPARC_UA32 + just like R_SPARC_32. + +2001-09-14 Kevin Lo + + * configure.bfd: Add arm-openbsd target. + +2001-09-14 Thiemo Seufer + + * config.bfd: Change machine triplets from mips*el*-* to mips*el-*. + Add support for mips64. + +2001-09-13 Alexandre Oliva + + * elf32-openrisc.c (ELF_MACHINE_ALT1): Define as EM_OPENRISC_OLD. + +2001-09-12 Alexandre Oliva + + * elf.c (prep_headers): Get the machine code from the elf + backend data. + * elf-m10200.c (ELF_MACHINE_CODE): Redefine to EM_MN10200. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10200. + * elf-m10300.c (ELF_MACHINE_CODE): Redefine to EM_MN10300. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300. + * elf-arc.c (arc_elf_final_write_processing): Don't override + e_machine, it's now properly set in prep_headers. + * elf32-avr.c (elf32_avr_object_p): Accept both EM_AVR and + EM_AVR_OLD. + (ELF_MACHINE_ALT1): Define to EM_AVR_OLD. + * elf-d10v.c (ELF_MACHINE_CODE): Redefine to EM_D10V. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_D10V. + * elf-d30v.c (ELF_MACHINE_CODE): Redefine to EM_D30V. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_D30V. + * elf-fr30.c (ELF_MACHINE_CODE): Redefine to EM_FR30. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_FR30. + * elf-m32r.c (ELF_MACHINE_CODE): Redefine to EM_M32R. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_M32R. + * elf32-pj.c (ELF_MACHINE_ALT1): DEfine to EM_PJ_OLD. + * elf-v850.c (ELF_MACHINE_CODE): Redefine to EM_V850. + (ELF_MACHINE_ALT1): Define to EM_CYGNUS_V850. + +2001-09-11 Richard Henderson + + * elf64-alpha.c (elf64_alpha_section_flags): New. + (elf64_alpha_fake_sections): Map SEC_SMALL_DATA to SHF_ALPHA_GPREL. + +2001-09-11 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section): Do not + apply HINT relocations against dynamic symbols. + +2001-09-11 H.J. Lu + + * linker.c (link_action): Change COMMON_ROW\defw from CREF to COM. + +2001-09-09 Richard Henderson + + * elf64-alpha.c: Delete all unused ERIC_neverdef and rth_notdef code. + + * elf64-alpha.c (elf64_alpha_relax_with_lituse): Nop out gpdisp + following a call to a near function. + +2001-09-08 Richard Henderson + + * elf64-alpha.c (elf64_alpha_relocate_section): Soft fail + relocation errors. Fail gp-relative relocations against + dynamic symbols. + +2001-09-08 Alan Modra + + * elf32-i386.c (elf_i386_relocate_section): Check !DEF_REGULAR + as well as DEF_DYNAMIC in test for avoided copy relocs. + (allocate_plt_and_got_and_discard_relocs): Likewise. + * elf32-hppa.c (elf_i386_relocate_section): Likewise. + (allocate_plt_and_got_and_discard_relocs): Likewise. + +2001-09-07 Thiemo Seufer + + * elf32-mips.c (mips_elf_calculate_relocation): Fix overflow handling + of R_MIPS_PC16. + +2001-09-06 Thiemo Seufer + + * elf64-mips.c (mips_elf64_howto_table_rel): Fix relocation HOWTO + definitions. + (mips_elf64_howto_table_rel): Likewise. + +2001-09-05 Tom Rix + + * xcofflink.c (bfd_xcoff_import_symbol): Handle import file XMC_XO + and syscall symbols. + (write_global_symbol) : Same. + (bfd_xcoff_export_symbol): Remove unused syscall param. + * libxcoff.h: Change prototype of bfd_xcoff_export symbol and + bfd_xcoff_import_symbol. + * bfd-in.h: Same. + * bfd-in2.h : Regenerate. + +2001-09-04 Richard Henderson + + * elf64-alpha.c (SKIP_HOWTO): New. + (elf64_alpha_howto_table): Use it to remove dead ECOFF relocs. + Fix sizes of 16-bit mem format relocs. + (elf64_alpha_reloc_map): Update to match. + (elf64_alpha_relax_with_lituse): Use GPREL16 as appropriate. + (elf64_alpha_relax_without_lituse): Likewise. + (elf64_alpha_check_relocs): Handle GPREL16. + (elf64_alpha_relocate_section): Likewise. + * reloc.c (BFD_RELOC_ALPHA_USER_*): Remove. + (BFD_RELOC_ALPHA_GPREL_HI16, BFD_RELOC_ALPHA_GPREL_LO16): New. + * bfd-in2.h, libbfd.h: Rebuild. + +2001-09-04 Jeff Law + + * elf32-h8300.c (elf32_h8_relax_section): New function. + (elf32_h8_relax_delete_bytes): Likewise. + (elf32_h8_symbol_address_p): Likewise. + (elf32_h8_get_relocated_section_contents): Likewise. + (bfd_elf32_bfd_relax_section): Define. + (bfd_elf32_bfd_get_relocated_section_contents): Likewise. + + * elf32-h8300.c (special): New function. + (h8_elf_howto_table): Use it for SPECIAL_FUNCTION field in + all relocations. + (elf32_h8_final_link_relocate): Treat R_H8_DIR24A8 like 32bit + relocations. Fix problems with the true 24bit reloc R_H8_DIR24R8. + Fix minor problems with 8bit and 16bit PC relative relocations. + +2001-09-01 Andreas Jaeger + + * vms-tir.c: Add missing prototypes. + * vms-hdr.c: Likewise. + * vms-gsd.c: Likewise. + * vms-misc.c: Likewise. + +2001-08-31 H.J. Lu + + * elf32-mips.c (_bfd_mips_elf_check_relocs): Report filename + with bad relocation. + +2001-08-31 Eric Christopher + Jason Eckhardt + + * bfd/archures.c: Add mipsisa32 and mipsisa64. Remove mips32, + mips32_4k and mips64. + * bfd/aoutx.h: Remove bfd_mach_mips32, bfd_mach_mips32_4k, + bfd_mach_mips64. Add bfd_mach_mipsisa32, bfd_mach_mipsisa64. + * bfd/cpu-mips.c: Ditto. + * bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing): Ditto. + * bfd/bfd-in2.h: Regenerate. + +2001-08-31 Jakub Jelinek + + * elf64-alpha.c (elf64_alpha_relocate_section): Duplicate memory + value into R_ALPHA_RELATIVE's addend. + (elf64_alpha_finish_dynamic_symbol): Likewise. + +2001-08-31 Nick Clifton + + * elf32-arm.h (elf32_arm_relocate_section): Do not rightshift + recomputed addend during relocatable link if not USE_REL. + + * elflink.h (elf_gc_propagate_vtable_entries_used): Fix off-by-one + error. + +2001-08-30 H.J. Lu + + * elf32-mips.c (mips_elf_calculate_relocation): Revert the last + 2 changes. + (_bfd_mips_elf_adjust_dynamic_symbol): Allocate dynamic + relocations for weak definitions. + +2001-08-30 H.J. Lu + + * Makefile.am (BFD32_BACKENDS): Add elf32-h8300.lo. + (BFD32_BACKENDS_CFILES): Add elf32-h8300.c. + * Makefile.in: Rebuild. + +2001-08-30 H.J. Lu + + * elf32-mips.c (mips_elf_calculate_relocation): Don't create + dynamic relocation for undefined weak symbols when creating + executables. Check h->root.root.type, instead of h->root.type. + +2001-08-29 Joel Sherrill + + * config.bfd (i[3456]86-*-rtems*, m68*-*-rtems*): Change + default from coff to elf. + +2001-08-29 Jeff Law + + * elf32-h8300.c (h8_elf_howto_table): Add new PC relative + relocations. + (h8_reloc_map): Similarly. + (elf32_h8_final_link_relocate): Remove incorrect overflow tests. + Add support for PC relative relocations. + + * elf32-h8300.c: Put all prototypes together. + (elf32_h8_info_to_howto): Parameter elf_reloc is used. + (elf32_h8_final_link_relocate): New function for linker. + (elf32_h8_relocate_section): Similarly. + (elf_backend_relocate_section): Define. + + * cpu-h8300.c (h8300_scan, compatible): Prototype. + (h8300_scan): Handle architecture:machine encodings typically + found in linker scripts. + * elf.c (prep_headers): Do not try to do H8 machine recognition + here. + * elf32-h8300.c: Add some missing prototypes. + (elf32_h8_mach, elf32_h8_final_write_processing): New functions. + (elf32_h8_object_p): Similarly. + +2001-08-29 Tom Rix + + * xcofflink.c (xcoff_link_add_symbols): Fix XTY_LD symbol that + does not follow a XTY_SD. + +2001-08-29 Alan Modra + + * targmatch.sed: Delete case statements. + * config.bfd : Select 64 bit xcoff for + aix4.3 and above. + +2001-08-29 J"orn Rennecke + + * Makefile.am (elf32-h8300.lo): New target. + * config.bfd (h8300*-*-elf): New case. + * configure.in (bfd_elf32_h8300_vec): New case. + * elf.c (prep_headers): Add case for bfd_arch_h8300. + * reloc.c (BFD_RELOC_H8_DIR16A8): New relocation. + (BFD_RELOC_H8_DIR16R8, BFD_RELOC_H8_DIR24A8): Likewise. + (BFD_RELOC_H8_DIR24R8, BFD_RELOC_H8_DIR32A16): Likewise. + * targets.c (bfd_target bfd_elf32_h8300_vec): New extern declaration. + * elf32-h8300.c: New file. + * Makefile.in, bfd-in2.h, libbfd.h, configure: Regenerated. + +2001-08-28 Nick Clifton + + * sparclynx.c: Add missing prototypes. + * coff-mcore.c: Add missing prototypes. + * elf32-pj.c: Add missing prototypes. + * nlm32-sparc.c: Add missing prototypes. + * oasys.c: Add missing prototypes. + * pdp11.c: Add missing prototypes. + * pe-mips.c: Add missing prototypes. + * riscix.c: Add missing prototypes. + +2001-08-27 Daniel Jacobowitz + + * elf32-i386.c: Add missing prototypes. + * elf32-ppc.c: Likewise. + * elf32-sh-lin.c: Likewise. + * elfarm-nabi.c: Likewise. + +2001-08-27 Daniel Jacobowitz + + * elf32-i386.c (elf_i386_grok_prstatus): New function. + (elf_i386_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Likewise. + * elf32-ppc.c (ppc_elf_grok_prstatus): New function. + (ppc_elf_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Likewise. + * elf32-sh-lin.c (elf32_shlin_grok_prstatus): New function. + (elf32_shlin_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Likewise. + * elfarm-nabi.c (elf32_arm_nabi_grok_prstatus): New function. + (elf32_arm_nabi_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Likewise. + +2001-08-27 H.J. Lu + + * elf32-mips.c (mips_elf_create_dynamic_relocation): Add more + sanity check. + (mips_elf_calculate_relocation): Create dynamic relocation for + symbols with weak definition or the ELF_LINK_HASH_DEF_REGULAR + bit is not set. + +2001-08-27 H.J. Lu + + * elf32-mips.c (_bfd_mips_elf_hide_symbol): Add prototype. + (_bfd_mips_elf_copy_indirect_symbol): Likewise. + (_bfd_elf32_mips_grok_prstatus): Likewise. + (_bfd_elf32_mips_grok_psinfo): Likewise. + (_bfd_mips_elf_hide_symbol): Make it static and cast to + `struct mips_elf_link_hash_entry *'. + (_bfd_mips_elf_copy_indirect_symbol): Make it static. + +2001-08-27 Nick Clifton + + * mipsbsd.c: Add missing prototypes. + * hp300hpux.c: Add missing prototypes. + * i386aout.c: Add missing prototypes. + * i386lynx.c: Add missing prototypes. + * i386mach3.c: Add missing prototypes. + * i386msdos.c: Add missing prototypes. + * i386os9k.c: Add missing prototypes. + +2001-08-27 Linus Nordberg + Torbjorn Granlund + Staffan Ulfberg + Alan Modra + + * config.bfd: Add powerpc64 target. Add powerpc64 vectors to + targ64_selvecs for 32 bit powerpc targets. + * Makefile.am (BFD64_BACKENDS): Add elf64-ppc.lo. + (BFD64_BACKENDS_CFILES): Add elf64-ppc.c. + Run "make dep-am". + * Makefile.in: Regenerate. + * configure.in: Add elf64_powerpc vecs. + * configure: Regenerate. + * cpu-powerpc.c: Default to bfd_mach_ppc_620 entry for 64 bit. + * elf.c (prep_headers): EM_PPC64 for 64 bit ppc elf target. + * targets.c: Add bfd_elf64_powerpc_vec and bfd_elf64_powerpcle_vec. + * elf64-ppc.c: New file. + * reloc.c: Add powerpc64 relocs. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2001-08-27 Andreas Schwab + + * elf32-m68k.c (elf32_m68k_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf32_m68k_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf32_m68k_reloc_type_class): New function. + (elf_backend_reloc_type_class): Define. + +2001-08-27 Andreas Jaeger + + * elf64-s390.c (elf_s390_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf_s390_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf_s390_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + + * elf32-s390.c (elf_s390_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf_s390_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf_s390_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + + * elf32-ppc.c (ppc_elf_check_relocs): Set DF_TEXTREL if the reloc + is against read-only section. + (ppc_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (ppc_elf_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + +2001-08-26 Andreas Jaeger + + * elf32-cris.c (cris_elf_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf_cris_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf_cris_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + + * elf32-sh.c (sh_elf_check_relocs): Set DF_TEXTREL if the reloc is + against read-only section. + (elf_backend_reloc_type_class): Define. + (sh_elf_reloc_type_class): New. + (sh_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + + * elf32-arm.h (elf32_arm_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf32_arm_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf32_arm_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + +2001-08-25 Andreas Jaeger + + * oasys.c: Add missing prototypes. + + * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Add unused + attribute for parameter. + * elf.c (_bfd_elf_reloc_type_class): Likewise. + + * versados.c (get_4): Make static. + (get_10): Make static. + Add missing prototypes. + (process_esd): Fix call to versados_new_symbol. + +2001-08-25 Nick Clifton + + * coff-a29k.c: Add missing prototypes. + * coff-apollo.c: Add missing prototypes. + * coff-arm.c: Add missing prototypes. + * coff-i860.c: Add missing prototypes. + * coff-rs6000.c: Add missing prototypes. + * coff-tic80.c: Add missing prototypes. + * elf-m10200.c: Add missing prototypes. + * elf-m10300.c: Add missing prototypes. + * elf32-arm.h: Add missing prototypes. + * elf32-d10v.c: Add missing prototypes. + * elf32-m32r.c: Add missing prototypes. + * elf32-mcore.c: Add missing prototypes. + * elf32-openrisc.c: Add missing prototypes. + * elf32-sh.c: Add missing prototypes. + * elf32-sparc.c: Add missing prototypes. + * elf32-v850.c: Add missing prototypes. + * elfarm-nabi.c: Add missing prototypes. + * elfarm-oabi.c: Add missing prototypes. + +2001-08-25 Thiemo Seufer + + * elf32-mips.c (elf_mips_abi_name): Return the right ABI string for + E_MIPS_ABI_O64 and E_MIPS_ABI_EABI64 + +2001-08-24 H.J. Lu + + * elf.c (_bfd_elf_merge_sections): Fail if not using an ELF + hash structure. + +2001-08-24 Nick Clifton + + * elf-bfd.h (elf_hash_table): Revert definition. + (is_elf_hash_table): New macro. + * elflink.h (elf_link_add_object_symbols): Test + is_elf_hash_table before accessing ELF only fields in hash + structure. + (elf_link_create_dynamic_sections): Fail if not using an ELF + hash structure. + (elf_add_dynamic_entry): Fail if not using an ELF hash + structure. + (elf_link_record_local_dynamic_symbol): Fail if not using an + ELF hash structure. + (size_dynamic_sections): Fail if not using an ELF hash + structure. + (elf_adjust_dynamic_symbol): Fail if not using an ELF + hash structure. + (elf_bfd_final_link): Fail if not using an ELF hash + structure. + +2001-08-24 H.J. Lu + + * elf-bfd.h (elf_hash_table): Return NULL if the linker hash + table is not an ELF linker hash table. + + * elf.c (_bfd_elf_link_hash_table_init): Set the linker hash + table type to bfd_link_elf_hash_table. + + * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_create): Revert + the last change. + + * linker.c (_bfd_link_hash_table_init): Set the linker hash + table type to bfd_link_generic_hash_table. + +2001-08-24 Alexandre Oliva + + * bfd.c (bfd_alt_mach_code): New function. + * bfd-in2.h: Rebuilt. + +2001-08-24 Alexandre Oliva + + * elf-m10300.c (mn10300_elf_relocate_section): Test the right + `type' field in the hash entry when deciding whether to follow a + link. + +2001-08-24 Jakub Jelinek + + * elflink.h (elf_link_sort_cmp1): Sort RELATIVE relocs first, not + last. + (elf_link_sort_relocs): Adjust accordingly. + + * elf64-alpha.c (struct alpha_elf_link_hash_entry): Add reltext flag. + (elf64_alpha_check_relocs): Set it if section this reloc is against + is read-only. Set DF_TEXTREL if a RELATIVE reloc is needed against + read-only section. + (elf64_alpha_calc_dynrel_sizes): Set DF_TEXTREL flag if relocation + is is against read-only section. + (elf64_alpha_size_dynamic_sections): Use DF_TEXTREL flag, don't + check section names. + (elf64_alpha_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + +2001-08-24 Thiemo Seufer + + * linker.c (_bfd_generic_link_add_archive_symbols): Replace alloca() + by bfd_malloc(). + +2001-08-23 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Set DF_TEXTREL if + the reloc is against read-only section. + (elf64_x86_64_size_dynamic_sections): Use DF_TEXTREL flag instead + of looking up section names for DT_TEXTREL. + (elf64_x86_64_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + +2001-08-23 H.J. Lu + + * syms.c (bfd_print_symbol_vandf): Add abfd to arg. + * bfd-in2.h (bfd_print_symbol_vandf): Regenerated. + + * aoutx.h (NAME(aout,print_symbol)): Pass abfd to + bfd_print_symbol_vandf. + * coffgen.c (coff_print_symbol): Likewise. + * elf.c (bfd_elf_print_symbol): Likewise. + * ieee.c (ieee_print_symbol): Likewise. + * nlmcode.h (nlm_print_symbol): Likewise. + * oasys.c (oasys_print_symbol): Likewise. + * pdp11.c (NAME(aout,print_symbol)): Likewise. + * som.c (som_print_symbol): Likewise. + * srec.c (srec_print_symbol): Likewise. + * tekhex.c (tekhex_print_symbol): Likewise. + * versados.c (versados_print_symbol): Likewise. + * vms.c (vms_print_symbol): Likewise. + + * elf.c (_bfd_elf_print_private_bfd_data): Replace fprintf_vma + with bfd_fprintf_vma. + (bfd_elf_print_symbol): Likewise. + * syms.c (bfd_print_symbol_vandf): Likewise. + +2001-08-23 Nick Clifton + + * aoutf1.h (sunos_write_object_contents): Silence compile time + warning. + * libaout.h (N_SET_DYNAMIC): Silence compile time warning. + + * bout.c: Add missing function prototypes. Fix formatting. + * coff-z8k.c: Add missing function prototypes. Fix formatting. + * coff-w65.c: Add missing function prototypes. Fix formatting. + * coff-h8500.c: Add missing function prototypes. Fix formatting. + * coff-h8300.c: Add missing function prototypes. Fix formatting. + * coff-tic54x.c: Add missing function prototypes. Fix formatting. + * coff-tic30.c: Add missing function prototypes. Fix formatting. + * coff-m68k.c: Add missing function prototypes. Fix formatting. + * coff-rs6000.c: Add missing function prototypes. Fix formatting. + * coff-sh.c: Add missing function prototypes. Fix formatting. + +2001-08-23 Jakub Jelinek + + * elf-bfd.h (enum elf_reloc_type_class): New. + (struct elf_backend_data): Add elf_backend_reloc_type_class. + (_bfd_elf_reloc_type_class): New. + * elfxx-target.h (elf_backend_reloc_type_class): Define. + (elfNN_bed): Add elf_backend_reloc_type_class. + * elf.c (_bfd_elf_reloc_type_class): New. + * elf32-i386.c (elf_i386_check_relocs): Set DF_TEXTREL if the reloc + is against read-only section. + (elf_i386_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf_i386_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + * elf32-sparc.c (elf32_sparc_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (elf32_sparc_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (elf32_sparc_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + * elf64-sparc.c (sparc64_elf_check_relocs): Set DF_TEXTREL if the + reloc is against read-only section. + (sparc64_elf_size_dynamic_sections): Use DF_TEXTREL flag instead of + looking up section names for DT_TEXTREL. + (sparc64_elf_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add reltext field. + (elfNN_ia64_hash_table_create): Clear ia64_info. + (get_reloc_section): Set DF_TEXTREL if the reloc is against read-only + section. + (elfNN_ia64_size_dynamic_sections): Use ia64_info->reltext flag + instead of looking up section names for DT_TEXTREL. + (elfNN_ia64_reloc_type_class): New. + (elf_backend_reloc_type_class): Define. + * elflink.h (size_dynamic_sections): Add spare DT_NULL tags. + (struct elf_link_sort_rela): New. + (elf_link_sort_cmp1, elf_link_sort_cmp2, elf_link_sort_relocs): New. + (elf_bfd_final_link): Call elf_link_sort_relocs. + Convert one spare DT_NULL into DT_RELCOUNT resp. DT_RELACOUNT if + necessary. + +2001-08-23 Nick Clifton + + * configure.in (x86-bsdi): No corefile support. + * configure: Regenerate. + +2001-08-22 Nick Clifton + + * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add missing + comma. + +2001-08-21 Mark Elbrecht + + * coff-go32.c: Make DWARF2 sections use an alignment of 0. Set + the alignment of dwarf2 linkonce sections to 0. + * coff-sto32.c: Likewise. + +2001-08-20 Andreas Jaeger + + * coff-sparc.c: Add missing prototypes. + * elf32-s390.c: Likewise. + * elf32-i960.c: Likewise. + * aout-target.h: Likewise. + +2001-08-20 H.J. Lu + + * elf-bfd.h (elf_obj_tdata): Add num_section_syms. + (elf_num_section_syms): New for num_section_syms. + + * elf.c (elf_map_symbols): Set num_section_syms. + (_bfd_elf_symbol_from_bfd_symbol): Check num_section_syms for + the section symbol index. + +2001-08-20 Nick Clifton + + * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_create): Never + select the generic has table creator. All elf backends need elf + specific fields in the hash table. + +2001-08-20 Alan Modra + + * archive.c (offsetof): Remove define. + * elf.c: Likewise. + * oasys.c: Likewise + * sysdep.h (offsetof): Define. + +2001-08-17 Alan Modra + + * bfd.c (bfd_get_gp_size): Return an unsigned int. + (bfd_set_gp_size): Make param unsigned. + * bfd-in2.h: Regenerate. + * elf32-ppc.c (ppc_elf_add_symbol_hook): Use elf_gp_size rather + than calling bfd_get_gp_size. + * elf64-alpha.c (elf64_alpha_add_symbol_hook): Likewise. + * elfxx-ia64.c (elfNN_ia64_add_symbol_hook): Likewise. + +2001-08-17 Alan Modra + + * linker.c (default_fill_link_order): Handle four byte fill value. + +2001-08-17 Alan Modra + + * elf64-sparc.c (sparc64_elf_output_arch_syms): Add missing + prototype. + * nlm32-alpha.c (nlm_alpha_write_external): Fix warning. + + * elf64-mips.c (UNUSED_RELOC): Define. + (mips_elf64_howto_table_rel): Use it. + (mips_elf64_howto_table_rela): Here too. + (mips_elf64_write_relocs): Fix signed/unsigned warning. + + * coffcode.h (coff_write_object_contents): Add ATTRIBUTE_UNUSED to + silence warning. + * coffgen.c (coff_print_symbol): Fix warnings. + (coff_find_nearest_line): Likewise. + * cofflink.c (_bfd_coff_link_input_bfd): Likewise. + * coff-alpha.c (alpha_convert_external_reloc): Likewise. + * format.c (bfd_check_format_matches): Likewise. + (bfd_set_format): Likewise. + * coff-ia64.c: Add missing prototypes. + * elf64-alpha.c (struct alpha_elf_link_hash_entry): Make addend + signed to silence warnings. + (elf64_alpha_relocate_section): Likewise. + (elf64_alpha_find_reloc_at_ofs): Fix warnings. + (elf64_alpha_add_symbol_hook): Likewise. + (elf64_alpha_final_link): Likewise. + (elf64_alpha_relax_section): Remove redundant assign to info.gotent. + (elf64_alpha_merge_gots): Add ATTRIBUTE_UNUSED to unused args. + (elf64_alpha_size_got_sections): Likewise. + * elfxx-ia64.c: Add missing prototypes. + (elfNN_ia64_relocate_section): Fix warning. + (elfNN_ia64_unwind_entry_compare): Make params const. + +2001-08-17 Alan Modra + + * config.bfd (targ64_selvecs): New. + : Use it here instead of ineffectual #ifdef. + + * bfd-in.h (BFD_VERSION): Remove wrong comment. + (BFD_DEFAULT_TARGET_SIZE): New. + (BFD_ARCH_SIZE): Comment. + * configure.in (target_size): New. Set instead of target64 in + selvecs case statement. Set target64 from it. + (bfd_default_target_size): New. Set from taget_size. AC_SUBST. + * bfd-in2.h: Regenerate. + * configure: Regenerate. + +2001-08-17 Alan Modra + + * bfd.c (enum bfd_error): Add bfd_error_wrong_object_format. + (bfd_errmsgs): Add corresponding message. + * archive.c (bfd_generic_archive_p): Don't release bfd_ardata when + finding an archive that contains different format object files. + Return bfd_error_wrong_object_format for this case. + * format.c: Formatting fixes. s/CONST/const/. + (bfd_check_format_matches): Accept archives that give + bfd_error_wrong_object_format if no full match is found. Tidy + code handling matching_vector. Don't return a pointer to freed + memory in `matching'. Handle ambiguous matches as for partial + archive matches. + * bfd-in2.h: Regenerate. + +2001-08-15 Alan Modra + + * libieee.h (common_header_type): Add last_byte field. + + * ieee.c: Add missing prototypes. Some format fixes. + (struct output_buffer_struct): Move for availability to prototypes. + (ieee_part_after): New function. + (ieee_slurp_debug): Use it here. + (ieee_seek): Pass in ieee_data_struct rather than bfd. Use + ieee_part_after to set last_byte to one past end of current part. + Update callers. + (ieee_pos): Pass in ieee_data_struct rather than bfd. + Update callers. + (parse_expression): Don't go beyond the end of the current part. + (ieee_slurp_external_symbols): Correct type passed to read_2bytes. + (ieee_get_symtab_upper_bound, ieee_get_symtab, + ieee_get_symbol_info, ieee_print_symbol, ieee_new_section_hook, + ieee_get_reloc_upper_bound, ieee_canonicalize_reloc, block, + ieee_set_section_contents, ieee_write_object_contents, + ieee_make_empty_symbol): Make static. + (ieee_archive_p): Correct comments regarding bfd_read. + (ieee_object_p): Similarly. + (ieee_mkobject): Move it. Clear output_ptr_start, output_ptr, + output_ptr_end, input_ptr_start, input_ptr, input_ptr_end, + input_bfd, output_bfd, output_buffer. + (do_as_repeat): Write out ieee_set_current_pc_enum value as for + do_with_relocs, ie. as a symbol for relocatable files. + (ieee_vec): Add comments showing functions referenced by macros. + +2001-08-14 Nick Clifton + + * aout-tic30.c: Add missing prototypes. Fix formatting. + * aout-ns32k.c: Add missing prototypes. Fix formatting. + * peXXigen.c: Add missining prototypes. Fix formatting. + * aout-adobe.c: Add missining prototypes. Fix formatting. + +2001-08-13 Nick Clifton + + * elf32-v850.c: Add missing function prototypes. + Fix some formatting. + + * cpu-v850.c: Add missing function prototype. + Fix some formatting. + +2001-08-11 Nick Clifton + + * elf-bfd.h (struct elf_backend_data): Add new fields + 'elf_backend_sprintf_vma' and 'elf_backend_fprintf_vma'. + (bfd_elf_sprintf_vma): Rename function prototype to + '_bfd_elf_sprintf_vma'. + (bfd_elf_fprintf_vma): Rename function prototype to + '_bfd_elf_fprintf_vma'. + * bfd.c (bfd_sprintf_vma): Do not invoke bfd_elf_sprintf_vma + directly, instead indirect via the elf_backend_data structure. + (bfd_fprintf_vma): Do not invoke bfd_elf_fprintf_vma directly, + instead indirect via the elf_backend_data structure. + * elf.c (bfd_elf_sprintf_vma): Rename to _bfd_elf_sprintf_vma. + (bfd_elf_fprintf_vma): Rename to _bfd_elf_fprintf_vma. + * elfxx-target.h (elf_backend_sprintf_vma): Initialise if not + already defined. + (elf_backend_fprintf_vma): Initialise if not already defined. + (struct elf_backend_data): Initialise the + elf_backend_sprintf_vma and elf_backend_fprintf_vma fields. + +2001-08-10 Andreas Jaeger + + * elf64-sparc.c: Add missing prototypes. + * elf32-cris.c: Likewise. + * elf32-i370.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-s390.c: Likewise. + +2001-08-10 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_elf_object_p): Make static. + Add prototypes where needed. + +2001-08-10 H.J. Lu + + * bfd.c (bfd_sprintf_vma): Fix a typo in the last change. + (bfd_fprintf_vma): Likewise. + +2001-08-10 H.J. Lu + + * bfd.c (bfd_sprintf_vma): Don't return void. + (bfd_fprintf_vma): Likewise. + +2001-08-10 Andreas Jaeger + + * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes + to build warnings. + * configure: Regenerate. + +2001-08-10 Alan Modra + + * elf.c (bfd_elf_sprintf_vma): Add ATTRIBUTE_UNUSED to quiet + warning if not BFD64. Add braces so emacs auto format works. + (bfd_elf_fprintf_vma): Likewise. + + * libxcoff.h (struct xcoff_backend_data_rec): Constify src param + of _xcoff_swap_ld*. + * coff-rs6000.c (xcoff_swap_ldhdr_in): Modify type of external + param to agree with libxcoff.h. + (xcoff_swap_ldhdr_out): Likewise. + (xcoff_swap_ldsym_in): Likewise. + (xcoff_swap_ldsym_out): Likewise. + (xcoff_swap_ldrel_in): Likewise. + (xcoff_swap_ldrel_out): Likewise. + (xcoff_create_csect_from_smclas): Likewise. + * coff64-rs6000.c: Add missing prototypes. + (xcoff64_swap_ldhdr_in): Modify type of external param to agree + with libxcoff.h. + (xcoff64_swap_ldhdr_out): Likewise. + (xcoff64_swap_ldsym_in): Likewise. + (xcoff64_swap_ldsym_out): Likewise. + (xcoff64_swap_ldrel_in): Likewise. + (xcoff64_swap_ldrel_out): Likewise. + (xcoff64_ppc_relocate_section): Make static. + (xcoff64_slurp_armap): Likewise. + (xcoff64_archive_p): Likewise. + (xcoff64_openr_next_archived_file): Likewise. + (xcoff64_sizeof_headers): Likewise. + (xcoff64_is_lineno_count_overflow): Likewise. + (xcoff64_is_reloc_count_overflow): Likewise. + (xcoff64_loader_symbol_offset): Likewise. + (xcoff64_loader_reloc_offset): Likewise. + * elf64-gen.c: Add missing prototypes. + +2001-08-09 H.J. Lu + + * elf.c (bfd_elf_sprintf_vma): Check ELFCLASS64 only in BFD64. + (bfd_elf_fprintf_vma): Likewise. + +2001-08-09 H.J. Lu + + * bfd-in.h (bfd_elf_sprintf_vma, bfd_elf_fprintf_vma): Moved + to ... + * elf-bfd.h: Here. + * bfd-in2.h: Regenerated. + +2001-08-09 H.J. Lu + + * bfd-in.h (bfd_sprintf_vma): New prototype. + (bfd_fprintf_vma): Likewise. + (bfd_elf_sprintf_vma): Likewise. + (bfd_elf_fprintf_vma): Likewise. + (bfd_printf_vma): New. Defined with bfd_fprintf_vma. + * bfd-in2.h: Regenerated. + + * bfd.c (bfd_sprintf_vma): New. Defined. + (bfd_fprintf_vma): Likewise. + + * elf.c (bfd_elf_sprintf_vma): New. Defined. + (bfd_elf_fprintf_vma): Likewise. + +2001-08-09 Alan Modra + + * coff-rs6000.c: Add missing prototypes. + (xcoff_ppc_relocate_section, xcoff_is_lineno_count_overflow, + xcoff_is_reloc_count_overflow, xcoff_loader_symbol_offset, + xcoff_loader_reloc_offset): Make static. + * dwarf1.c: Add missing prototypes. + * dwarf2.c: Add missing prototypes. + (struct abbrev_info): Move definition. + (struct attr_abbrev, ABBREV_HASH_SIZE, ATTR_ALLOC_CHUNK): Likewise. + * elf.c: Add missing prototypes. + * elf32-gen.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-ppc.c: Likewise. + (ppc_elf_sort_rela): Use PTR instead of "void *". + * elflink.h: Add missing prototypes. Formatting fixes. + * merge.c: Add missing prototypes. + (last4_eq): Use PTR instead of "void *". + (last_eq): Likewise. + * syms.c: Add missing prototypes. + +2001-08-09 Nick Clifton + + * bfd.c: Fix formatting. + * bfd-in2.h: Regenerate. + +2001-08-09 Nick Clifton + + * elf32-arc.c (R_ARC_B22_PCREL): Change 'partial_inplace' to + true (this target uses REL relocations) and 'pcrel_offset' to + false (the PC is implied, not stored in the offset). + +2001-08-08 Alan Modra + + 1999-10-19 Linus Nordberg + * elf-bfd.h (struct elf_backend_data): Add want_got_sym. + * elfxx-target.h (elf_backend_want_got_sym): Define. + (elfNN_bed): Add elf_backend_want_got_sym. + * elflink.c (_bfd_elf_create_got_section): Define + _GLOBAL_OFFSET_TABLE_ only if bed->want_got_sym. + +2001-08-08 Alexandre Oliva + + * dwarf2.c (struct dwarf2_debug): Add sec, sec_info_ptr and syms. + (find_rela_addend): New function. + (parse_comp_unit): Call it to find the abbrev offset addend. + (_bfd_dwarf2_find_nearest_line): Initialize and maintain the new + members of dwarf2_debug as debugging information is read. + +2001-08-07 Nick Clifton + + * coff-sh.c (sh_coff_reloc_type_lookup): Provide for sh-coff + targets as well as sh-pe. + +2001-08-03 Ben Harris + + * elf32-arm.h (elf32_arm_final_link_relocate): Include offset of + reloc from start of section when computing value for R_ARM_REL32 + reloc. + +2001-08-03 Alan Modra + + From H.J. Lu + * elf32-i386.c (allocate_plt_and_got_and_discard_relocs): Don't + keep relocs for undefined syms if there are no dynamic sections in + executable. + * elf32-hppa.c (allocate_plt_and_got_and_discard_relocs): Likewise. + +2001-08-02 Paul Sokolovsky + + * cofflink.c (coff_link_check_ar_symbols): also search for + __imp__symbol as well as _symbol. + * linker.c (_bfd_generic_link_add_archive_symbols): also + search for __imp__symbol as well as _symbol. + +2001-08-01 Adam Nemet + + * elf.c (elf_sort_sections): Return zero only as the last step. + +2001-08-01 Nick Clifton + + * config.bfd (arm-vxworks): Change name of define from VXWORKS to + ARM_COFF_BUGFIX. + (arm-epoc-pe): Define ARM_COFF_BUGFIX. + coff-arm.c (coff_arm_relocate_section): Replace VXWORKS with + ARM_COFF_BUGFIX. + +2001-07-30 Rainer Orth + + * libecoff.h (_bfd_ecoff_styp_to_sec_flags): Changed return type + to match corresponding bfd_coff_backend data member. + +2001-07-24 Alan Modra + + * Makefile.am: Update dependencies with "make dep-am". + * Makefile.in: Regenerate + +2001-07-15 H.J. Lu + + * Makefile.am (po/SRC-POTFILES.in): Use tmp.src instead of tmp. + (po/BLD-POTFILES.in): Use tmp.bld instead of tmp. + * Makefile.in: Regenerate. + +2001-07-11 H.J. Lu + + * elf64-alpha.c (elf64_alpha_check_relocs): Set the ALLOC|LOAD + flags when creating the reloc section if the ALLOC flag in the + source section is set. + +2001-07-11 Steve Ellcey + + * reloc.c (bfd_reloc_code_type): Add IA64 relocs + BFD_RELOC_IA64_LTOFF_FPTR32MSB and BFD_RELOC_IA64_LTOFF_FPTR32LSB + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elfxx-ia64.c (ia64_howto_table): Define how to handle + new relocations. + (elfNN_ia64_reloc_type_lookup): Handle new relocations. + (elfNN_ia64_check_relocs): Likewise. + (elfNN_ia64_install_value): Likewise. + (elfNN_ia64_relocate_section): Likewise. + +2001-07-11 Jakub Jelinek + + * elf32-sparc.c (_bfd_sparc_elf_howto_table): Remove support for + R_SPARC_UA64. + (elf32_sparc_check_relocs): Likewise. + Only create .rela section for alloced sections in shared libraries. + (elf32_sparc_relocate_section): Likewise. + Remove redundant check. + Optimize unaligned reloc usage. + * elf64-sparc.c (sparc64_elf_relocate_section): Remove redundant + check. + +2001-07-11 H.J. Lu + + * elf64-alpha.c (elf64_alpha_check_relocs): Only use the same + ALLOC|LOAD flags as the source section for debugging sections + when creating the reloc section. + +2001-07-05 Jim Wilson + + * linker.c (_bfd_generic_link_add_one_symbol, case BIG): Use + the section of the bigger symbol. + + * syms.c (bfd_is_local_label): Return false if BSF_SECTION_SYM. + +2001-07-05 Nick Clifton + + * peicode.h (coff_swap_scnhdr_in): For sections containing + uninitialised data, only set their size to s_paddr if this does + not reset their size to zero. MS's latest compilers will set + s_paddr to zero. + +2001-07-04 H.J. Lu + + * bfd/elf32-mips.c (_bfd_mips_elf_final_write_processing): + Handle bfd_mach_mips4400, bfd_mach_mips4600 and + bfd_mach_mips5000. + +2001-07-03 Mark Elbrecht + + * bfd.c (bfd_get_sign_extend_vma): Support DJGPP COFF targets. + + * cofflink.c (_bfd_coff_link_input_bfd): Skip section symbols from + sections being discarded. + +2001-06-30 Alan Modra + + * elfcore.h (elf_core_file_p): Call bfd_section_from_phdr directly + instead of _bfd_elfcore_section_from_phdr. + * elf-bfd.h (_bfd_elfcore_section_from_phdr): Remove. + * elf.c (_bfd_elfcore_section_from_phdr): Remove. + (_bfd_elfcore_make_pseudosection): Expedite tail-call. + (elfcore_grok_prstatus): Likewise. + (elfcore_grok_lwpstatus): Likewise. + (bfd_get_elf_phdr_upper_bound): Likewise. + (elfcore_make_note_pseudosection): Formatting. + (_bfd_elfcore_strndup): Formatting. + * elf32-mips.c (mips_elf_sym_is_global): Formatting. + (_bfd_elf32_mips_grok_prstatus): Expedite tail-call. + +2001-06-29 Daniel Jacobowitz + + * elf-bfd.h: Add prototypes for _bfd_elfcore_make_pseudosection + and _bfd_elfcore_strndup. + (struct elf_backend_data): Add elf_backend_grok_prstatus + and elf_backend_grok_psinfo. + * elf.c (_bfd_elfcore_make_pseudosection): New function. + (elfcore_grok_prstatus): Use it. + (elfcore_make_note_pseudosection): Likewise. + (elfcore_strndup): Rename to... + (_bfd_elfcore_strndup): Here, and make global. + (elfcore_grok_psinfo): Use _bfd_elfcore_strndup. + (elfcore_grok_note): Call elf_backend_grok_prstatus + and elf_backend_grok_psinfo if available. + * elf32-mips.c (_bfd_elf32_mips_grok_prstatus): New function. + (_bfd_elf32_mips_grok_psinfo): New function. + (elf_backend_grok_prstatus): Define. + (elf_backend_grok_psinfo): Define. + * elfxx-target.h (elf_backend_grok_prstatus): Default to NULL. + (elf_backend_grok_psinfo): Likewise. + (elfNN_bed): Include elf_backend_grok_prstatus and + elf_backend_grok_psinfo. + +2001-06-29 H.J. Lu + + * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Check if + hplink->sgot is NULL before filling GOT. Check if hplink->splt + is NULL before filling PLT. + +2001-06-29 Alan Modra + + * elflink.h (elf_link_output_extsym): Revert 1999-04-10. + +2001-06-27 Alan Modra + + * elf32-hppa.c (elf32_hppa_check_relocs): Don't make syms dynamic + here.. + (elf32_hppa_adjust_dynamic_symbol): ..nor here.. + (allocate_plt_and_got_and_discard_relocs): .. instead do so here + after gc has run. + + * elf32-hppa.c (RELATIVE_DYNAMIC_RELOCS): Delete. + (IS_ABSOLUTE_RELOC): Define. + (elf32_hppa_link_hash_entry): Always include reloc_entries field. + (hppa_link_hash_newfunc): Always init it. + (elf32_hppa_check_relocs): Mark symbols as ELF_LINK_NON_GOT_REF to + create COPY relocs only when the reloc is in a read-only section. + Instead, allocate space for a dynamic reloc to reference the + library symbol directly. Keep track of space we allocate using + relocs_entries. + (hppa_discard_copies): Delete, and move code to.. + (allocate_plt_and_got): ..here. Rename to + allocate_plt_and_got_and_discard_relocs. Remove unneeded dynamic + relocs for non-shared link. + (elf32_hppa_size_dynamic_sections): Update calls to above. + (elf32_hppa_relocate_section): Write out the dynamic relocs used + in lieu of COPY relocs. + + * elf32-i386.c (elf_i386_check_relocs): Don't make syms dynamic + here.. + (elf_i386_adjust_dynamic_symbol): ..nor here.. + (allocate_plt_and_got_and_discard_relocs): .. instead do so here + after gc has run. + (elf_i386_size_dynamic_sections): Fix a comment. + (elf_i386_relocate_section ): Rearrange code + involved in writing reloc out. + +2001-06-25 Alan Modra + + * elf32-i386.c (elf_i386_check_relocs ): + Ensure syms are dynamic if we might be emitting a reloc. + (allocate_plt_and_got_and_discard_relocs): Don't discard relocs + for undefweak or undefined syms.. + (elf_i386_relocate_section ): .. and emit. + + * elf32-i386.c (allocate_plt_and_got_and_discard_relocs): Discard + relocs without ELF_LINK_HASH_DEF_DYNAMIC set. + (elf_i386_relocate_section ): Remove + redundant bfd_link_hash_defined, bfd_link_hash_defweak test. + +2001-06-24 H.J. Lu + + * cpu-i960.c (scan_960_mach): Don't modify const char *. Use + strncasecmp/strcasecmp instead of strncmp/strcmp. + +2001-06-23 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section ): + Check ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined + in the regular object file and treat the weak definition as + the normal one. + +2001-06-23 Alan Modra + + * elf32-i386.c (elf_i386_relocate_section ): Tighten + unresolved_reloc test to exclude cases where we use "relocation" + before setting it to point into the .got. Reinstate fudge for + unresolved relocs in debugging sections. + + * elf32-i386.c (elf_i386_relocate_section): Replace ugly + complicated tests for unresolvable relocs with a simple direct + scheme using "unresolved_reloc" var. + + * elf32-i386.c (struct elf_i386_pcrel_relocs_copied): Rename to + elf_i386_dyn_relocs. Update comment. + (struct elf_i386_link_hash_entry): Rename pcrel_relocs_copied to + dyn_relocs. + (elf_i386_adjust_dynamic_symbol): Remove a BFD_ASSERT, change + others to aborts. + (allocate_plt_and_got_and_discard_relocs): Replace BFD_ASSERT with + abort. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_finish_dynamic_symbol): Likewise. + (elf_i386_finish_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. Tidy R_386_GOT32 and error + handling code. + + Avoid creating COPY relocs if possible. + * elf32-i386.c (elf_i386_check_relocs): Tweak condition under + which .got created. Mark symbols used by R_386_32 and R_386_PC32 + relocs as ELF_LINK_NON_GOT_REF to create COPY relocs only when the + reloc is in a read-only section. Instead, allocate space for a + dynamic reloc to reference the library symbol directly. Keep + track of space we allocate using pcrel_relocs_copied. + (discard_copies): Delete, and move code to .. + (allocate_plt_and_got): ..here. Rename to + allocate_plt_and_got_and_discard_relocs. Remove unneeded dynamic + relocs for non-shared link. + (elf_i386_size_dynamic_sections): Update calls to above functions. + (elf_i386_relocate_section): Write out the dynamic relocs. Add + more ugly logic to avoid "unresolvable relocation" error. Use + htab shortcut in place of elf_hash_table macro. + (elf_i386_finish_dynamic_sections): Allow that dynamic .got may + not always be created now. + +2001-06-20 Bo Thorsen + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix linking of + shared libraries. + +2001-06-18 Thiemo Seufer + + * configure.host (mips64-*-linux): Reformat. + +2001-06-21 Alan Modra + + * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Always + allocate local .got space. Use shortcuts from hash table for .got + and .plt rather than comparing section names. + (elf32_hppa_check_relocs): Use local_plt_refcounts var rather than + adjusting index into local_got_refcounts to document what we are + really doing. + (elf32_hppa_relocate_section): Similarly for local_plt_offsets. + Tidy .got and .plt error checking. + +2001-06-20 Catherine Moore + + * elf-bfd.h (struct elf_backend_data): + elf_backend_emit_relocs: New field: Function for emitting + relocs. + elf_backend_count_relocs: New field: Function for determining + the number of relocs to be emitted. + * elfxx-target.h: Provide default (NULL) values for + elf_backend_emit_relocs and elf_backend_count_relocs. + * elflink.h (elf_link_size_reloc_section): Make the hash table + big enough to hold the relocs counted by either reloc_count or + o->reloc_count. + (elf_bfd_final_link) emit_relocs: New boolean, set if relocs + should be emitted, either because of a command line option + stored in the info structure or because the target provides a + special reloc emitting function. + If the target provides a reloc counting function use it, + unless performing a relocatable link or emitting all relocs. + Also set the SEC_RELOC flag on any output section which will + contain relocs. + (elf_link_input_bfd): emit_relocs: New boolean, set if relocs + should be emitted, either because of a command line option + stored in the info structure or because the target provides a + special reloc emitting function. + If the target provides a reloc emitting function, use it, + unless performing a relocatable link or emitting all relocs. + +2001-06-20 H.J. Lu + + * elf32-i386.c (elf_i386_size_dynamic_sections): Always + allocate local .got space. + +2001-06-19 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix creation of + dynamic symbols. + +2001-06-18 Hans-Peter Nilsson + + * elflink.h (struct elf_assign_sym_version_info): Remove member + export_dynamic. All users changed to use info member. + NAME(bfd_elf,size_dynamic_sections)): Remove parameter + export_dynamic, instead use member in parameter info. + * bfd-in.h (bfd_elf32_size_dynamic_sections, + bfd_elf64_size_dynamic_sections): Update prototype. + * bfd-in2.h: Regenerate. + +2001-06-18 H.J. Lu + + * elflink.h (elf_info_failed): Add a new field, verdefs. + (NAME(bfd_elf,size_dynamic_sections): Pass verdefs to + elf_export_symbol. + (elf_export_symbol): Check eif->verdefs to decide if a symbol + should be exported. + +2001-06-17 H.J. Lu + + * elf32-mips.c (mips_elf_link_hash_entry): Add a new field, + readonly_reloc, to record if a relocation in the .rel.dyn + section is against a read-only section. + (mips_elf_link_hash_newfunc): Initialize the readonly_reloc + field to false. + (_bfd_mips_elf_check_relocs): Record if there is a relocation + in the .rel.dyn section against a read-only section by setting + DF_TEXTREL or readonly_reloc. + (_bfd_mips_elf_copy_indirect_symbol): Copy readonly_reloc if + it is true. + (_bfd_mips_elf_adjust_dynamic_symbol): Record DF_TEXTREL if + there is a relocation in the .rel.dyn section against a + read-only section. + (_bfd_mips_elf_size_dynamic_sections): Set DT_TEXTREL if + DF_TEXTREL is set. + +2001-06-12 Nick Clifton + + * coffcode.h (styp_flags_to_sec_flags): Change to a boolean + function. Move flagword result into parameter list. Remove + comment about setting bfd_error_handler to intercept failure + results. + * coffgen.c (make_a_section_from_file): Examine result of + calling bfd_coff_styp_to_sec_flags and pass a failure back to + caller. + * ecoff.h (styp_flags_to_sec_flags): Change to a boolean + function. Move flagword result into parameter list. + * libcoff.h: Regenerate. + * libecoff.h: Regenerate. + +2001-06-13 Nick Clifton + + * aoutx.h (adjust_z_magic): Only pad the tesxt section if the data + section is going to follow it. + +2001-06-12 Catherine Moore + + * elflink.h (elf_gc_propagate_vtable_entries): Replace FILE_ALIGN + with the file_align entry from elf_backend_data. + (elf_gc_smash_unused_vtentry_relocs): Likewise. + (elf_gc_record_vtentry): Likewise. + +2001-06-10 Alan Modra + + * elflink.h: Whitespace changes. + (elf_link_read_relocs_from_section): Use "unsigned int" iterator + rather than "unsigned char". + (elf_link_output_relocs): Likewise. + (elf_link_input_bfd): Likewise. + (elf_reloc_link_order): LIkewise. + * elf.c: s/CONST/const/. Whitespace changes. + * elf32-mips.c: Formatting fix. + + * Makefile.am (SOURCE_HFILES): Include xcoff-target.h, remove xcoff.h. + * Makefile.in: Regenerate. + * po/Make-in: Remove trailing tab. + +2001-06-09 Philip Blundell + + * elf32-arm.h (elf32_arm_plt0_entry): Correct error in last + change. + (elf32_arm_plt_entry): Likewise. + +2001-06-08 H.J. Lu + + * elf.c (swap_out_syms): Keep names for global section symbols. + +2001-06-07 H.J. Lu + + * config.bfd: Put back ecoff for Linux/mips. Firmwares on some + MIPS-based machines need it. + +2001-06-07 H.J. Lu + + * elf32-mips.c (_bfd_mips_elf_object_p): Set the bad symtab + for SGI only. + + * config.bfd: Remove ecoff from Linux/mips. + +2001-06-07 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Add an + assertion. + (elf64_x86_64_check_relocs): Fix VTENTRY relocation; set an + alignment of 8 for .rela sections; handle further relocations. + +2001-06-06 Christian Groessler + + * coff-z8k.c: Fix formatting. + Fix howtos: howto->size was always 1. + +2001-06-05 Thiemo Seufer + + * configure.host (mips64*-*-linux*): Define. + +2001-06-05 Alan Modra + + * elf32-i386.c (elf_i386_discard_copies): Rename to + discard_copies, and use elf_link_hash_entry arg rather than + elf_i386_link_hash_entry. + (elf_i386_link_hash_traverse): Delete. + (elf_i386_size_dynamic_sections): Adjust call to discard_copies. + Tidy sizing of dynamic sections. + (elf_i386_check_relocs ): Reference count + possible .plt entries. + (elf_i386_gc_sweep_hook): Likewise. + (elf_i386_adjust_dynamic_symbol): Discard .plt entries for + everything with plt.refcount <= 0. + + * elf32-i386.c (elf_i386_check_relocs): Don't allocate .got and + .relgot space here. + (elf_i386_gc_sweep_hook): ..and no need to deallocate here.. + (elf_i386_adjust_dynamic_symbol): ..and don't allocate .plt and + .rel.plt here.. + (allocate_plt_and_got): ..instead do it all here. New function. + (elf_i386_size_dynamic_sections): Allocate local .got space and + call allocate_plt_and_got. No need to zap .relgot if not dynamic. + (bfd_elf32_bfd_final_link): Delete. (ie. use regular final link + rather than gc variety). + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (elf_i386_relocate_section): Use it here and correct handling of + R_386_GOT32. Provide section and offset for "unresolvable + relocation" error message. + (elf_i386_finish_dynamic_symbol): Correct handling of R_386_GOT32. + + * elf32-i386.c (struct elf_i386_link_hash_table): Add sgot, + sgotplt, srelgot, splt, srelplt, sdynbss, srelbss fields. + (elf_i386_link_hash_table_create): Init them. + (create_got_section): New function. + (elf_i386_create_dynamic_sections): New function. + (elf_backend_create_dynamic_sections): Set to above. + (elf_i386_check_relocs): Use shortcuts from hash table rather than + calling bfd_get_section_by_name. + (elf_i386_gc_sweep_hook): Likewise. + (elf_i386_adjust_dynamic_symbol): Likewise. + (elf_i386_size_dynamic_sections): Likewise. + (elf_i386_relocate_section): Likewise. + (elf_i386_finish_dynamic_sections): Likewise. + + * elf32-hppa.c (allocate_plt_and_got): Skip indirect and warning syms. + +2001-06-02 H.J. Lu + + * elf32-hppa.c (elf32_hppa_object_p): Check ELFOSABI_LINUX + and ELFOSABI_HPUX. + * elf64-hppa.c (elf64_hppa_object_p): Likewise. + +2001-06-02 H.J. Lu + + * aout-cris.c (MACHTYPE_OK): New. Defined. + +2001-06-02 Hans-Peter Nilsson + + * section.c (_bfd_strip_section_from_output): Handle NULL + output_section. + +2001-06-02 H.J. Lu + + * config.bfd (powerpc-*-aix*, powerpc-*-beos*, rs6000-*-*): Add + rs6000coff64_vec only if BFD64 is defined. + (powerpc64-*-aix*): Enable only if BFD64 is defined. + +2001-06-02 H.J. Lu + + * coff-ia64.c (ia64coff_object_p): Rewrite with + external_PEI_DOS_hdr and external_PEI_IMAGE_hdr. + +2001-06-01 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Add PC8 + relocation, small reformatting. + +2001-05-29 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Handle R_X86_64_64. + (elf64_x86_64_relocate_section): Likewise. + +2001-05-30 Alan Modra + + * elf32-hppa.c (elf32_hppa_check_relocs): Don't NEED_PLT for + millicode. Don't allocate .got and .rela.got space here.. + (elf32_hppa_gc_sweep_hook): ..and no need to deallocate here.. + (elf32_hppa_adjust_dynamic_symbol): ..and don't allocate .plt and + .rela.plt here.. + (hppa_handle_PIC_calls): ..nor here.. + (allocate_plt_and_got): ..instead do it all here. New function. + (elf32_hppa_size_dynamic_sections): Allocate local .got space and + call allocate_plt_and_got. No need to zap .got if not dynamic. + (elf32_hppa_final_link): Call regular bfd_final_link instead of + gc_common_final_link. + (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define. + (elf32_hppa_relocate_section): Use it here. + (elf32_hppa_finish_dynamic_symbol): Remove superfluous test of + dynamic_sections_created. + (hppa_type_of_stub): Don't LONG_BRANCH_VIA_PLT if millicode sym. + +2001-05-28 Andreas Jaeger + + * elf64-x86-64.c (elf64_86_64_size_info): Remove, we can use the + generic version since we want a hashsize of 4. + (elf_backend_size_info): Likewise. + +2001-05-28 Thiemo Seufer + + * elflink.h (elf_link_size_reloc_section): Use bfd_zmalloc instead of + a zeroing loop. + (elf_link_output_relocs): Handle MIPS ELF64 relocations correctly. + (elf_link_input_bfd): Likewise. + (elf_reloc_link_order): Likewise. + (elf_finish_pointer_linker_section): Typo. Handle MIPS ELF64 + relocations correctly. + +2001-05-28 Nicolas Pitre + + * elf32-arm.h: fix PLT generation for big endian ARM + +2001-05-28 Alan Modra + + * elf32-hppa.c (elf32_hppa_relocate_section): Set up .plt entries + for symbols forced local that need plabels. + (elf32_hppa_adjust_dynamic_symbol): Don't allocate space in + .plt.rela for local syms if non-shared. + (hppa_build_one_stub): Mask lsb of plt.offset. + (elf32_hppa_finish_dynamic_symbol): Abort if lsb of plt.offset set. + (clobber_millicode_symbols): Correct comment. + (elf32_hppa_relocate_section): Likewise. + (elf32_hppa_finish_dynamic_symbol): Likewise. + +2001-05-28 Jeff Sturm + + * reloc.c: Add BFD_RELOC_SPARC_UA16 and BFD_RELOC_SPARC_UA64. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + * elf32-sparc.c: Enable BFD_RELOC_SPARC_UA16, BFD_RELOC_SPARC_UA32 + and BFD_RELOC_SPARC_UA64 mapping + * elf64-sparc.c: Likewise. + +2001-05-25 H.J. Lu + + * Makefile.am (BFD32_BACKENDS): Remove coff-pmac.lo. + (BFD32_BACKENDS_CFILES): Remove coff-pmac.c. + (coff-rs6000.lo): Remove the old dependency. + * Makefile.in: Rebuild. + + * configure.in (pmac_xcoff_vec): Replace coff-pmac.lo with + coff-rs6000.lo. + +2001-05-25 H.J. Lu + + * coff-rs6000.c (rs6000coff_vec): Use rs6000coff_core_p, + rs6000coff_core_file_matches_executable_p, + rs6000coff_core_file_failing_command and + rs6000coff_core_file_failing_signal only if AIX_CORE is + defined. + (pmac_xcoff_vec): Likewise. + * coff64-rs6000.c (rs6000coff64_vec): Likewise. + +2001-05-25 Timothy Wall + + * elfxx-ia64.c (allocate_dynrel_entries): Don't allocate an entry + for __GLOB_DATA_PTR on AIX5. Clean up some relocation bugs. + +2001-05-25 H.J. Lu + + * bfd-in2.h: Regenerated. + * libcoff.h: Likewise. + +2001-05-25 Alan Modra + + * elf32-hppa.c (elf32_hppa_relocate_section): Don't allow + undefined millicode syms in shared libs. + (hppa_build_one_stub): Turn BFD_ASSERTs into aborts. + (elf32_hppa_check_relocs): Likewise. + (elf32_hppa_adjust_dynamic_symbol): Likewise. + (elf32_hppa_size_dynamic_sections): Likewise. + (elf32_hppa_relocate_section): Likewise. + (elf32_hppa_finish_dynamic_symbol): Likewise. + (elf32_hppa_finish_dynamic_sections): Likewise. + +2001-05-24 Tom Rix + + * Makefile.am coff-pmac bfd now defined in coff-rs6000.c + xcoff-target.h not used to define rs6000 or ppc bfd. + * Makefile.in same + + * bfd-in.h : (struct lineno_cache_entry) promote element "offset" + to 64 bit. + + * coff-rs6000.c : Many changes for 64 bit support. Move common + 32/64 code to xcofflink.c. Explictly define the rs6000coff_vec + and pmac_xcoff_vec + + * coff64-rs6000.c : Many changes for 64 bit support. 64 bit + linker now supported. Explictly define the rs6000coff64_vec. + + * coffcode.h : (coff_set_arch_mach_hook) xcoff 64 bit support + (coff_print_aux) same + (coff_write_object_contents) same + (coff_slurp_line_table) same + + * coffgen.c : (coff_fix_symbol_name) formatting + (coff_mangle_symbols) xcoff 64 bit support + (coff_write_symbol) same + (coff_write_alien_symbol) same + (coff_write_native_symbol) same + (coff_write_symbols) same + (coff_get_symbol_info) same + (bfd_coff_get_syment) same + (coff_print_symbol) same + + * config.bfd : add powerpc64-*-aix* target + + * libcoff-in.h : formatting + + * libcoff.h : move xcoff extern declarations to libxcoff.h + + * libxcoff.h : New file + + * xcofflink.c : Many changes for xcoff64 support. Move common + structures to include/coff/xcoff.h. Move specific structure to + backends coff-rs6000.c and coff64-rs6000.c. Use new backend + functions, defined in libxcoff.h, to isolate 32/64 dependencies. + + (bfd_xcoff_size_dynamic_sections) : special __rtinit symbol for + aix4.2+ -binitfini. + + (xcoff_build_ldsyms) : handle special __rtinit symbol. + +2001-05-23 Alexandre Oliva + + * elf64-sparc.c (sparc64_elf_slurp_reloc_table): Fix typo + s/ENTIRES/ENTRIES/. + +2001-05-23 Thiemo Seufer + + * reloc.c (bfd_reloc_code_real): Add MIPS ELF64 relocations. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + + * aoutx.h (aout_@var{size}_machine_type): Add MIPS r12k support. + * archures.c (bfd_mach_mips12000): Define. + * cpu-mips.c (arch_info_struct): Add MIPS r12k support. + * elf32-mips.c (_bfd_mips_elf_final_write_processing): Add MIPS r12k + support. + (_bfd_mips_elf_size_dynamic_sections): Use official bfd typedef. + * bfd-in2.h: Regenerate. + * elfxx-target.h: Do not redefine bfd_elfNN_bfd_make_debug_symbol. + +2001-05-23 kaz Kojima + + * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry, + elf_sh_plt_entry_be, elf_sh_plt_entry, elf_sh_pic_plt_entry_be, + elf_sh_pic_plt_entry): New PLT code, that does not use r2, since + that is used by GCC. + +2001-05-23 Nick Clifton + + * elf-bfd.h (NUM_SHDR_ENTRIES): New macro: compute the number + of entries in a structured section. + * elf.c: Use new macro. + * elf32-i386.c: Use new macro. + * elf32-mips.c: Use new macro. + * elf64-alpha.c: Use new macro. + * elf64-sparc.c: Use new macro. + * elfcode.h: Use new macro. + * elflink.h: Use new macro. + +2001-05-23 Nick Clifton + + * bfdint.texi: Replace -oformat with --oformat. + +2001-05-21 Andreas Jaeger + + * dwarf2.c (decode_line_info): Fix error message. + (read_abbrevs): Fix test for offset as suggested by Alan Modra and + adjust error message. + +2001-05-18 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Revert the last + change. + +2001-05-17 Alan Modra + + * elf32-hppa.c (clobber_millicode_symbols): Temporarily set + ELF_LINK_FORCED_LOCAL to suit 2001-04-30 change. + (hppa_build_one_stub): Add an assert to check plt.offset. + +2001-05-17 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the + version definition to basename of the output filename. + +2001-05-17 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Set DT_NEEDED to + basename of the bfd filename. + +2001-05-16 Alan Modra + + * section.c (asection): Add linker_has_input field. + (STD_SECTION): Adjust initialization to suit. + * ecoff.c (bfd_debug_section): Likewise. + * bfd-in2.h: Regenerate. + +2001-05-15 Alexandre Oliva + + * elf-m10300.c (mn10300_elf_relax_section): Don't relax + negative 32-bit operands to 16 operands when the operand is + going to be zero-extended by the modified opcode. + +2001-05-12 Peter Targett + + * cpu-arc.c (arch_info_struct): Add entry 'base' representing old + name for 'arc5' core versions. + (bfd_arc_arch): Make bfd_mach_arc_6 default. + + * elf32-arc.c (arc_elf_object_p): Make E_ARC_MACH_ARC6 default + architecture. + (arc_elf_final_write_processing): Make bfd_mach_arc_6 default. + +2001-05-11 Jakub Jelinek + + * elfxx-ia64.c (is_unwind_section_name): Consider linkonce unwind + sections as well. + (elfNN_ia64_final_write_processing): Map .gnu.linkonce.ia64unw.FOO + to .gnu.linkonce.t.FOO text section. + +2001-05-11 Jakub Jelinek + + * merge.c (struct sec_merge_hash_entry): Add u.entsize and u.suffix + fields, change sec into secinfo. + (struct sec_merge_info): Add chain, remove last fields. + (struct sec_merge_sec_info): Add next, sec, psecinfo fields. + (sec_merge_hash_lookup): If lookup could not use a string only + because it has bad alignment, mark the old string for deletion. + (sec_merge_add): Add secinfo argument. Don't compute entry's + position, instead record the section. + (sec_merge_emit): Update for the sec into secinfo change in + struct sec_merge_hash_entry. + (_bfd_merge_section): Only record the section for merging, defer + putting strings into the hash table. + (cmplengthentry, last4_eq, last_eq, record_section, merge_strings, + _bfd_merge_sections): New functions. + (_bfd_merged_section_offset): Update for the sec_merge_hash_entry + changes. + * libbfd-in.h (_bfd_merge_sections): Add prototype. + (_bfd_nolink_bfd_merge_sections): Define. + * libbfd.h: Likewise. + (bfd_generic_merge_sections): Add prototype. + * targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_merge_sections. + (struct bfd_target): Likewise. + * bfd.c (bfd_merge_sections): Define. + * bfd-in2.h: Rebuilt. + * elf.c (_bfd_elf_merge_sections): New function. + * elf-bfd.h (_bfd_elf_merge_sections): Add prototype. + * elfxx-target.h (bfd_elfNN_bfd_merge_sections): Define. + * reloc.c (bfd_generic_merge_sections): New function. + * vms.c (vms_bfd_merge_sections): New function. + * aout-adobe.c (aout_32_bfd_merge_sections): Define. + * aout-target.h (MY_bfd_merge_sections): Define. + * aout-tic30.c (MY_bfd_merge_sections): Define. + * binary.c (binary_bfd_merge_sections): Define. + * bout.c (b_out_bfd_merge_sections): Define. + * coff-alpha.c (_bfd_ecoff_bfd_merge_sections): Define. + * coffcode.c (coff_bfd_merge_sections): Define. + * coff-mips.c (_bfd_ecoff_bfd_merge_sections): Define. + * i386msdos.c (msdos_bfd_merge_sections): Define. + * i386os9k.c (os9k_bfd_merge_sections): Define. + * ieee.c (ieee_bfd_merge_sections): Define. + * ihex.c (ihex_bfd_merge_sections): Define. + * nlm-target.h (nlm_bfd_merge_sections): Define. + * oasys.c (oasys_bfd_merge_sections): Define. + * ppcboot.c (ppcboot_bfd_merge_sections): Define. + * som.c (som_bfd_merge_sections): Define. + * srec.c (srec_bfd_merge_sections): Define. + * tekhex.c (tekhex_bfd_merge_sections): Define. + * versados.c (versados_bfd_merge_sections): Define. + * xcoff-target.h (_bfd_xcoff_bfd_merge_sections): Define. + +2001-05-11 Nick Clifton + + * dwarf1.c (_bfd_dwarf1_find_nearest_line): Change type of 'addr' + to be unsigned long, in order to match its use. + +2001-05-10 H.J. Lu + + * linker.c (_bfd_generic_link_add_one_symbol): Check loop on + indirect symbols. + +2001-05-09 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Fix a typo. Allocate + versymhdr->sh_size bytes for extversym instead of hdr->sh_size. + Remove the unused veriable `dynver'. + +2001-05-08 Ian Lance Taylor + + * coff-i386.c (coff_i386_reloc): Don't dump core if output_bfd is + NULL or is not COFF. + (coff_i386_rtype_to_howto): Don't dump core if output section + owner is not COFF. + +2001-05-07 Thiemo Seufer + + * ecoff.c (bfd_debug_section): Fix initialization. + * elf.c (_bfd_elf_slurp_version_tables): Change maxidx to unsigned, it + is always a positive integer. Cast away sign mismatch. + * elf32-mips.c: Fix misleading comment and typo. + (_bfd_mips_elf_section_from_bfd_section): Remove unused attribute, use + correct data type. + * elflink.c: Fix typo. + (_bfd_elf_create_dynamic_sections): Remove superfluous initialization. + * ecoffswap.h (ecoff_swap_fdr_in): Cast away sign mismatch. + +2001-05-04 Richard Henderson + + * elf64-alpha.c (SREL16, SREL32, SREL64): Set pcrel_offset true. + +2001-05-04 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Set + EF_ARM_HASENTRY if the start address is set. + +2001-05-03 Nick Clifton + + * targets.c (_bfd_target_vector_entries): Compute value based on + the size of the _bfd_target_vector and not bfd_target_vector. + +2001-05-03 H.J. Lu + + * elfcode.h: Include "libiberty.h". + + * elflink.h (elf_link_add_object_symbols): Set + elf_dt_name (abfd) to basename of the bfd filename. + (NAME(bfd_elf,size_dynamic_sections)): Set vn_file to basename + of the bfd filename. + +2001-05-03 Andreas Jaeger + + * elf64-gen.c (elf_generic_info_to_howto): Add unused attribute. + (elf_generic_info_to_howto_rel): Likewise. + * coff-alpha.c (reloc_nil): Likewise. + (alpha_ecoff_bad_format_hook): Likewise. + (alpha_adjust_reloc_out): Likewise. + (alpha_bfd_reloc_type_lookup): Likewise. + (alpha_convert_external_reloc): Likewise. + * elf64-alpha.c (elf64_alpha_reloc_nil): Likewise. + (elf64_alpha_reloc_bad): Likewise. + (elf64_alpha_reloc_gpdisp): Likewise. + (elf64_alpha_bfd_reloc_type_lookup): Likewise. + (elf64_alpha_info_to_howto): Likewise. + (elf64_alpha_add_symbol_hook): Likewise. + (elf64_alpha_create_got_section): Likewise. + (elf64_alpha_is_local_label_name): Likewise. + (elf64_alpha_merge_ind_symbols): Likewise. + * elf64-mips.c (mips_elf64_reloc_type_lookup): Likewise. + (mips_elf64_get_reloc_upper_bound): Likewise. + * nlm32-alpha.c (nlm_alpha_mangle_relocs): Likewise. + (nlm_alpha_get_public_offset): Likewise. + +2001-05-02 Johan Rydberg + + * elf32-openrisc.c (openrisc_elf_howto_table): Do not complain + about overflow in R_OPENRISC_LO_16_IN_INSN and + R_OPENRISC_HI_16_IN_INSN.Index: bfd/elf32-openrisc.c + +2001-04-30 H.J. Lu + + * elf.c (_bfd_elf_link_hash_hide_symbol): Set dynindx to -1 + only for ELF_LINK_FORCED_LOCAL. + * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise. + * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise. + * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise. + + * elflink.h (elf_fix_symbol_flags): Set ELF_LINK_FORCED_LOCAL + if the symbol has hidden or internal visibility. + +2001-04-30 Alan Modra + + * elf32-hppa.c (final_link_relocate): Branch to .+8 for + calls to undefined weak symbols. + +2001-04-30 Andreas Jaeger , Andreas Schwab + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Correct test for + R_X86_64_GOTPCREL, don't use assignments instead of comparisons. + +2001-04-27 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_sections): Only swap + out handled entries. + (elf64_x86_64_finish_dynamic_symbol): Set up GOT entries. + (elf64_x86_64_relocate_section): Fix GOTPCREL calculation. + (elf64_x86_64_relocate_section): Merge entries for GOTPCREL and + GOT32. + +2001-04-27 Sean McNeil + + * config.bfd: Add arm-vxworks target. + * coff-arm (coff_arm_relocate_section): Add in symbol value to + addend (fro VXworks targets). + +2001-04-26 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Verify if r_symndx is + valid. + +2001-04-25 Frank Ch. Eigler + + * bfd-in.h (bfd_cache_close): Declare newly exported function. + * bfd-in2.h: Regenerated. + +2001-04-24 Jakub Jelinek + + * merge.c (struct sec_merge_hash_entry): Add alignment field. + (struct sec_merge_hash): Remove alignment_power. + (sec_merge_hash_newfunc): Clear alignment. + (sec_merge_hash_lookup): Pass alignment as argument. + Use hashp->root.next, not hashp->next to walk the hash chain. + If a string already in the hashtable does not have required + alignment, create a new hashtable entry. + (sec_merge_init): Remove alignment_power argument. + (sec_merge_add): Add alignment argument. + (sec_merge_emit): Alignment is now a per-entity thing, not per + section. + (_bfd_merge_section): Sanity check even non-SEC_STRINGS sections + for proper alignment. + Pass alignment information to sec_merge_add. + +2001-04-24 Christian Groessler + + * coff-z8k.c (extra_case): added handler for R_DISP7, R_CALLR + and R_REL16 reloc types; accept odd values for R_REL16 type + +2001-04-24 Johan Rydberg + + * cpu-openrisc.c: New file. + * elf32-openrisc.c: Likewise. + + * Makefile.am (ALL_MACHINES): Add cpu-openrisc.lo. + (ALL_MACHINES_CFILES): Add cpu-openrisc.c. + (BFD32_BACKENDS): Add elf32-openrisc.lo. + (BFD32_BACKENDS_CFILES): Add elf32-openrisc.c. + (cpu-openrisc.lo, elf32-openrisc.lo): New rules. + * Makefile.in: Regenerated. + * config.bfd: (openrisc-*-elf): New target. + * configure.in (bfd_elf32_openrisc_vec): New vector. + * configure: Regenerated. + * libbfd.h: Regenerated. + * bfd-in2.h: Regenerated. + * reloc.c: Add OpenRISC relocations. + * targets.c (bfd_elf32_openrisc_vec): Declare. + (bfd_target_vect): Add bfd_elf32_openrisc_vec. + * archures.c (enum bfd_architecture): Add bfd_arch_openrisc. + (bfd_openrisc_arch): Declare. + (bfd_archures_list): Add bfd_openrisc_arch. + * elf.c (prep_headers): Add bfd_arch_openrisc. + +2001-04-23 Bo Thorsen + + * elf64-x86-64.c: Add c++ vtable hack. + Small whitespace and comment changes. + +2001-04-19 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_plt0_entry): Fix instructions. + (elf64_x86_64_plt_entry): Likewise. + (elf64_x86_64_finish_dynamic_sections): Fix PLT0 generation. + (elf64_x86_64_finish_dynamic_symbol): Fix PLT generation. + +2001-04-17 Hans-Peter Nilsson + + * elf32-cris.c: Tweak comments related to dynamic linking. + (cris_elf_relocate_section): When not creating shared object, fill + in the .got table for any symbol not in the dynamic symbol table. + (elf_cris_finish_dynamic_symbol): When not creating shared object, + only emit a .got.rela reloc if the symbol is in the dynamic symbol + table. + (cris_elf_check_relocs): Use variable r_type in all places rather + than the original expression. Add default case in switch for + reloc types. + (elf_cris_size_dynamic_sections): Iterate over + elf_cris_discard_excess_program_dynamics when not creating shared + library. + (elf_cris_discard_excess_dso_dynamics): Renamed from + elf_cris_discard_copies. Correct typo, s/Rel/Rela/. + (elf_cris_discard_excess_program_dynamics): New. + +2001-04-14 Mark Elbrecht + + * coffcode.h (coff_write_object_contents): Use + bfd_coff_swap_filehdr_out instead of coff_swap_filehdr_out. + +2001-04-14 H.J. Lu + + * bfd-in2.h: Regenerate. + +2001-04-14 Jakub Jelinek + + * section.c (STD_SECTION): Add entsize. + +2001-04-13 H.J. Lu + + * section.c (SEC_MERGE): Define new flag for merging. + (SEC_STRINGS): Likewise. + (entsize): New field. + +2001-04-13 Roger Sayle + + * coff-i386.c (TARGET_SYM): SEC_READONLY is an applicable section + flag on pe-i386 targets. + +2001-04-13 Jakub Jelinek + + * libbfd-in.h (_bfd_merge_section): New. + (_bfd_write_merged_section): New. + (_bfd_merged_section_offset): New. + * libbfd.h: Rebuilt. + * linker.c (_bfd_generic_link_output_symbols): Handle + discard_sec_merge. + * aoutx.h (aout_link_write_symbols): Likewise. + * pdp11.c (aout_link_write_symbols): Likewise. + * elflink.h (elf_link_add_object_symbols): Call _bfd_merge_section. + (elf_bfd_final_link): Adjust global symbols pointing into SEC_MERGE + sections. + (elf_link_sec_merge_syms): New. + (elf_link_input_bfd): Call _bfd_merged_section_offset + and _bfd_write_merged_section. + Handle discard_sec_merge. + * elf-bfd.h (struct elf_link_hash_table): Add merge_info + field. + (struct bfd_elf_section_data): Likewise. + * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_MERGE and + SEC_STRINGS section flags and entsize from their ELF counterparts. + (_bfd_elf_link_hash_table_init): Initialize merge_info. + (elf_fake_sections): Set SHF_MERGE, SHF_STRINGS and sh_entsize + from their BFD counterparts. + * merge.c: New file. + * Makefile.am: Add strtab.lo. + * Makefile.in: Rebuilt. + +2001-04-09 Hans-Peter Nilsson + + * elflink.h (elf_fix_symbol_flags): For non-default visibilities, + only hide symbols marked STV_INTERNAL or STV_HIDDEN. + +2001-04-05 Steven J. Hill + + * config.bfd (mips*el*-*-linux-gnu*): Use traditional little + endian MIPS ELF target. + * config.bfd (mips*-*-linux-gnu*): Use traditional big endian + MIPS ELF target. + + * configure.in (bfd_elf64_tradbigmips_vec): New. Traditional + 64bit big endian MIPS ELF target. + (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little + endian MIPS ELF target. + * configure: Regenerated. + + * elf32-mips.c (IRIX_COMPAT): Handle traditional 64bit and + little endian targets. + (mips_elf_sym_is_global): Handle traditional targets. + + * elf64-mips.c (bfd_elf64_tradbigmips_vec): New. Traditional + 64bit big endian MIPS ELF target. + (bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little + endian MIPS ELF target. + + * targets.c: (_bfd_target_vector): Add bfd_elf64_tradbigmips_vec + and bfd_elf64_tradlittlemips_vec. + +2001-04-05 David Mosberger + + * elf32-i386.c (elf_i386_fake_sections): Treat ".reloc" as an + ordinary "progbits" section. + +2001-04-04 Alan Modra + + * elflink.h (elf_fix_symbol_flags): Call elf_backend_hide_symbol + when -Bsymbolic causes a symbol to no longer need a .plt entry. + +2001-04-03 David Mosberger + + * efi-app-ia32.c (ALIGN_SECTIONS_IN_FILE): Deleted. + +2001-03-30 H.J. Lu + + * efi-app-ia32.c (PEI_TARGET_SUBSYSTEM): Rename from ... + (PEI_DEFAULT_TARGET_SUBSYSTEM): This. + +2001-03-26 H.J. Lu + + * elf32-gen.c (elf32_generic_link_add_symbols): New. Check + if there are any relocations for generic ELF. + (bfd_elf32_bfd_link_add_symbols): Defined to + elf32_generic_link_add_symbols. + * elf64-gen.c (elf64_generic_link_add_symbols): New. Check + if there are any relocations for generic ELF. + (bfd_elf64_bfd_link_add_symbols): Defined to + elf64_generic_link_add_symbols. + +2001-03-23 Nick Clifton + + * Makefile.am (BUILD_CFILES): New variable: List of C source + files created in build directory. + (BUILD_HFILES): New variable: List of header files created in + build directory. + (POTFILES): Delete. + (po/POTFILES.in): Replace rule with empty entry. + (po/SRC-POTFILES.in): New rule: Create a list of source files + in the source directory. + (po/BLD-POTFILES.in): New rule: Create a list of source files + in the build directory. + (MOSTLYCLEAN): Do not delete source files created in build + directory. + * Makefile.in: Regenerate. + * configure.in: Insert SRC-POTFILES.in and BLD-POTFILES.in + into po/Makefile. + * configure: Regenerate. + + * po/Make-in: Replace occurrences of POTFILES with SRC-POTFILES + and BLD_POTFILES. + Add .. to the search path when building bfd.pot. + Delete POTFILES when performing distclean. + Add comment describing why distclean is broken in maintainer mode. + * po/POTFILES.in: Delete. + * po/SRC-POTFILES.in: New file. + * po/BLD-POTFILES.in: New file. + * po/bfd.pot: Regenerate. + +2001-03-22 Hans-Peter Nilsson + + * elf32-cris.c: Shlib and PIC support. PCREL tweaks. + (elf_cris_discard_copies, elf_cris_adjust_gotplt_to_got, + elf_cris_try_fold_plt_to_got, elf_cris_link_hash_newfunc, + elf_cris_link_hash_table_create, elf_cris_adjust_dynamic_symbol, + elf_cris_size_dynamic_sections, elf_cris_finish_dynamic_symbol, + elf_cris_finish_dynamic_sections,elf_cris_hide_symbol): New + functions. + (cris_elf_howto_table) : Correct comments. Set pcrel_offset to false. + : + New HOWTO members for new relocs. + (cris_reloc_map): Map new relocs. + (ELF_DYNAMIC_INTERPRETER): Define. + (PLT_ENTRY_SIZE): Define. + (elf_cris_plt0_entry, elf_cris_plt_entry, elf_cris_pic_plt0_entry, + elf_cris_pic_plt_entry): New, PLT templates. + (struct elf_cris_pcrel_relocs_copied, struct + elf_cris_link_hash_entry, struct elf_cris_link_hash_table): New. + (elf_cris_link_hash_traverse, elf_cris_hash_table): Define. + (cris_final_link_relocate): Check that 16-bit GOT relocs have + positive values. Adjust PCREL relocs to be relative to location + after relocation. + (cris_elf_relocate_section): Handle relocations to dynamic + objects. Handle new relocations. Call error handler when seeing + non-PIC relocation for read-only sections while generating shared + object. + (cris_elf_check_relocs): Set reference counts for GOT and PLT + entries. + (bfd_elf32_bfd_link_hash_table_create, + elf_backend_adjust_dynamic_symbol, + elf_backend_size_dynamic_sections, + elf_backend_finish_dynamic_symbol, + elf_backend_finish_dynamic_sections, + elf_backend_create_dynamic_sections, bfd_elf32_bfd_final_link, + elf_backend_hide_symbol, elf_backend_want_got_plt, + elf_backend_plt_readonly, elf_backend_want_plt_sym, + elf_backend_got_header_size, elf_backend_plt_header_size): + Define. + + * reloc.c: (BFD_RELOC_CRIS_COPY, BFD_RELOC_CRIS_GLOB_DAT, + BFD_RELOC_CRIS_JUMP_SLOT, BFD_RELOC_CRIS_RELATIVE, + BFD_RELOC_CRIS_32_GOT, BFD_RELOC_CRIS_16_GOT, + BFD_RELOC_CRIS_32_GOTPLT, BFD_RELOC_CRIS_16_GOTPLT, + BFD_RELOC_CRIS_32_GOTREL, BFD_RELOC_CRIS_32_PLT_GOTREL, + BFD_RELOC_CRIS_32_PLT_PCREL): New relocs. + * bfd-in2.h, libbfd.h: Regenerate. + +2001-03-21 Diego Novillo + + (_bfd_mips_elf_relocate_section): Give a better error message when + a relocation is not recognized. + +2001-03-21 Alan Modra + + * elf32-hppa.c (elf32_hppa_set_gp): Check sec->output_section + non-NULL before attempting to dereference. + +2001-03-20 H.J. Lu + + * configure.in: Remove the redundent AC_ARG_PROGRAM. + * configure: Rebuild. + +2001-03-20 Andreas Schwab + + * elf32-m68k.c (elf_m68k_relocate_section): Don't need the + relocation value when resolving a reference from a debugging + section. + +2001-03-16 Scott Thomason + + * coff64-rs6000.c (xcoff64_swap_sym_out): Fix syntax errors. + (xcoff64_swap_sym_out): Fix syntax errors. + +2001-03-16 Richard Sandiford + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix warning. + +2001-03-15 Alan Modra + + * elf32-hppa.c (elf32_hppa_link_hash_entry): Add maybe_pic_call. + (hppa_link_hash_newfunc): Init it. + (hppa_type_of_stub): Only use non-PIC to PIC call stub if caller + section appears to be non-PIC. + (final_link_relocate): Likewise. + (elf32_hppa_adjust_dynamic_symbol): Set maybe_pic_call for any + possible candidate function, and set pic_call for those that will + only have a .plt entry for the PIC call stub. + (hppa_handle_PIC_calls): Set maybe_pic_call. + +2001-03-12 DJ Delorie + + * elf32-sh.c (sh_elf_relocate_section): Only relocation + R_SH_DIR8WP* relocs if they're against external symbols, else + they're just for relaxing. Validate the reloc values. + +2001-03-12 Stefan Geuken + + * binary.c (bfd_external_binary_architecture): Declare. + (binary_object_p): If bfd_external_binary_architecture is defined, + set the architecture to this string. + +2001-03-11 Philip Blundell + + * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT + entries that could serve as a definition for a weak symbol. + +2001-03-08 Nick Clifton + + * Most files: Update copyright notices using Perl script created + by Kevin Buettner . + +2001-03-07 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Conditionalise + prior patch on ! defined OLD_ARM_ABI. + +2001-03-07 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix handling of + some relocation values. + +2001-03-06 Nick Clifton + + * elf32-arm.h (elf32_arm_final_link_relocate): Clear bit zero + of offset in BLX(1) instruction. + * coff-arm.c (coff_arm_relocate_section): Clear bit zero of + offset in BLX(1) instruction. + Fix formatting. + +2001-03-06 Nick Clifton + + * coff-arm.c (coff_arm_reloc_type_lookup): Add + BFD_RELOC_THUMB_PCREL_BLX. + +2001-03-06 Igor Shevlyakov + + * archures.c (bfd_default_scan): Add Coldfire CPUs. + * bfd-in2.h: Regenerate. + * cpu-m68k.c: Add Coldfire CPUs for arch table. + * ieee.c (ieee_write_processor): Set proper id for + Coldfire CPUs. + +2001-03-01 D.J. Barrow + + * configure.in: Add s390 target. + * configure: Regenerate. + +2001-02-28 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_relocate_section): Add relocation + to addend. + +2001-02-28 Philip Blundell + + * elf32-arm.h: Update mentions of renamed EF_xx constants. + (elf32_arm_print_private_bfd_data): Handle ARM EABI version 2. + +2001-02-27 H.J. Lu + + * aoutx.h (NAME(aout,bfd_free_cached_info)): Return true if + abfd->tdata.aout_data == NULL. + +2001-02-27 Alan Modra + + * elf32-hppa.c: Correct field selector in stub comments. + (clobber_millicode_symbols): Formatting fix. + + * configure.in: Bump version to 2.11.90. + * configure: Regenerate. + * Makefile.am (CFILES): Rename to SOURCE_CFILES. + (CFILES): $SOURCE_CFILES + generated C files. + (POTFILES): Include $HFILES not $SOURCE_HFILES. + Run "make dep-am" + * Makefile.in: Regenerate. + * doc/Makefile.in: This too. + +2001-02-26 Timothy Wall + + * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Remove obsolete + comments. + +2001-02-26 Nick Clifton + + * coffcode.h (styp_to_sec_flags) [COFF_WITH_PE version]: Tidy + up, replacing multiple if statements with a switch. + (handle_COMDAT): New function. + +2001-02-26 H.J. Lu + + * coffcode.h (styp_to_sec_flags) [COFF_WITH_PE version]: Issue + a warning for section flags we do not handle instead of + aborting. + +2001-02-26 Andreas Jaeger + + * elf64-x86-64.c (x86_64_elf_howto_table): Fix order of entries. + +2001-02-22 Timothy Wall + + * config.bfd (targ_cpu): Add vectors for ia64-*-aix* (aka Monterey). + * configure.in: Add objects for elf64_ia64_aix vectors. + * configure: Regenerated. + * configure.host: Recognize ia64-*-aix*. + * elfxx-ia64.c: Add hooks for ELF64 on AIX5. Define new vectors + for AIX. AIX5 requires most relocations to be dynamic (*all* + binaries are somewhat similar to shared libraries). + * targets.c: Add elf64_ia64_aix vectors. + +2001-02-21 David Mosberger + + * cpu-ia64-opc.c (elf64_ia64_operands}: Fix typo: error string for + C8 said "1" instead of "8". Clarify error string for IMM22: + "signed integer" instead of just "integer". + +2001-02-20 Andreas Jaeger + + * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Don't make + PLT entries that could serve as a definition for a weak symbol. + +2001-02-19 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_finish_dynamic_symbol): Don't make PLT + entries that could serve as a definition for a weak symbol. + * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Likewise. + +2001-02-18 David O'Brien + + * configure.in: Recognize FreeBSD/arm, FreeBSD/PowerPC, and treat + FreeBSD/i386-CURRENT differently until I can figure out the needed + corefile changes. + * configure: Regenerate. + * config.bfd: Recognize FreeBSD/x86-64, FreeBSD/ia64, FreeBSD/arm, + FreeBSD/PowerPC, and FreeBSD/sparc64. + +2001-02-18 lars brinkhoff + + * Makefile.am: Add PDP-11 a.out target. + * config.bfd: Likewise. + * configure.in: Likewise. + * targets.c: Likewise. + * archures.c: Likewise. + * bfd-in2.h: Likewise. Add PDP-11 relocations. + * libbfd.h: Add PDP-11 relocations. + * reloc.c: Likewise. + * cpu-pdp11.c: New file. + * pdp11.c: New file. + + * libaout.h (GET_WORD) [ARCH_SIZE==16]: Define. + (GET_SWORD) [ARCH_SIZE==16]: Likewise. + (GET_SWORD) [ARCH_SIZE==16]: Likewise. + (PUT_WORD) [ARCH_SIZE==16]: Likewise. + (GET_MAGIC): New macro. + (PUT_MAGIC): Likewise. + * aout-target.h (MY(object_p)): Use GET_MAGIC to read magic word. + +2001-02-18 Jim Kingdon + + * irix-core.c (irix_core_core_file_p): Set the architecture (GDB + multiarch needs it). + +2001-02-18 H.J. Lu + + * elflink.h (elf_link_input_bfd): Ignore invalid section symbol + index. + +2001-02-18 Kazu Hirata + + * vms-misc.c: Fix formatting. + +2001-02-16 Kazu Hirata + + * vms.c: Fix formatting. + +2001-02-14 H.J. Lu + + * elf.c (elf_find_function): New function. + (_bfd_elf_find_nearest_line): Call elf_find_function () to find + the file name and function name. + +2001-02-14 Nick Clifton + + * ecoff.c (bfd_debug_section): Update to initialise new fields in + asection structure. + + * Makefile.am (BFD32_BACKENDS_CFILES): Remove peigen.c + (BFD64_BACKENDS): Add pepigen.c + Add rules to create peigen.c and pepigen.c from peXXigen.c. + + * Makefile.in: Regenerate. + * configure: Regenerate. + * po/POTFILES.in: Regenerate. + * po/bfd.pot: Regenerate. + +2001-02-14 H.J. Lu + + * libcoff-in.h (pe_tdata): Add members target_subsystem and + force_minimum_alignment. + +2001-02-14 Bo Thorsen + + * elf64-x86-64.c: Small formatting fixes and rearrangements of code. + (elf64_86_64_size_info): Struct added to fix a problem + with the hashtable string entries. + (elf64_x86_64_adjust_dynamic_symbol): Add generation of .got.plt. + (elf64_x86_64_size_dynamic_sections): A FIXME removed. + (elf64_x86_64_size_dynamic_sections): Fix a dynamic entry and + remove the FIXME for this. + (elf64_x86_64_adjust_dynamic_symbol): Fix check for unneeded .plt + section. Also removed the FIXME for it. + (x86_64_elf_howto_table): Use bfd_elf_generic_reloc. + (ELF_DYNAMIC_INTERPRETER): Fix the name of the dynamic linker. + (elf64_x86_64_finish_dynamic_sections): Enable .got.plt writing. + +2001-02-13 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_final_link): Set __gp if required + and not user provided. + +2001-02-13 Kazu Hirata + + * vms.c (vms_print_symbol): Remove unreachable code. + + * rs6000-core.c: Fix formatting. + +2001-02-13 David Mosberger + + * peicode.h (coff_swap_filehdr_out) [COFF_IMAGE_WITH_PE]: Define + as _bfd_XXi_only_swap_filehdr_out. + (pe_mkobject) [PEI_FORCE_MINIMUM_ALIGNMENT]: Set + pe->force_minimum_alignment to TRUE. + (pe_mkobject) [PEI_TARGET_SUBSYSTEM]: Set pe->target_subsystem to + PEI_TARGET_SUBSYSTEM. + (pe_print_private_bfd_data): Call + _bfd_XX_print_private_bfd_data_common() instead of + _bfd_pe_print_private_bfd_data_common(). + (pe_bfd_copy_private_bfd_data): Call + _bfd_XX_bfd_copy_private_bfd_data_common() instead of + _bfd_pe_bfd_copy_private_bfd_data_common(). + (coff_bfd_copy_private_section_data): Define as + _bfd_XX_bfd_copy_private_section_data instead of + _bfd_pe_bfd_copy_private_section_data. + (coff_get_symbol_info): Define as _bfd_XX_get_symbol_info instead + of a _bfd_pe_get_symbol_info. + + * peigen.c: Delete. + + * peXXigen.c: Renamed from peigen.c. + (COFF_WITH_XX): Define this macro (will get expanded into + COFF_WITH_pep or COFF_WITH_pe, depending on whether this is being + compiled as peigen.c or pepigen.c. + [COFF_WITH_pep]: Include "coff/ia64.h" instead of "coff/i386.h" to + define the canonical PEP structures and definitions. + (_bfd_XXi_swap_aouthdr_out): If pe->force_minimum_alignment is in + effect, enforce minimum file and section alignments. If + extra->Subsystem is IMAGE_SUBSYSTEM_UNKNOWN, set it to + pe->target_subsystem (this defaults to IMAGE_SUBSYSTEM_UNKNOWN, + so, by default, this is a no-op). + + * libpei.h: Rename COFF_WITH_PEP to COFF_WITH_pep. + (_bfd_XX_bfd_copy_private_bfd_data_common): Add macros to map + _bfd_XXfoo to _bfd_pepfoo if COFF_WIT_PEP is defined and to + _bfd_pefoo if it's not defined. Use these macros to define + coff swap macros. + + * libcoff.h (pe_tdata): Add members target_subsystem and + force_minimum_alignment. + + * efi-app-ia64.c (COFF_WITH_pep): Rename COFF_WITH_PEP to + COFF_WITH_pep. + (PEI_TARGET_SUBSYSTEM): Rename from PEI_DEFAULT_TARGET_SUBSYSTEM. + + * configure.in (bfd_efi_app_ia64_vec): Use pepigen.lo instead of + peigen.lo. + + * coff-ia64.c: Rename COFF_WITH_PEP to COFF_WITH_pep. + (AOUTSZ): Rename PEP64AOUTSZ and PEP64AOUTHDR to PEPAOUTSZ and + PEPAOUTHDR. + + * Makefile.in (BFD64_BACKENDS): Mention pepigen.lo. + (BFD64_BACKENDS_CFILES): Mention pepigen.c + (peigen.c): Add rule to generate from peXXigen.c. + (pepigen.c): Ditto. + (pepigen.lo): List dependencies for pepigen.lo. + +2001-02-13 Alan Modra + + * elf32-hppa.c (elf32_hppa_set_gp): Handle weak $global$. If + $global$ referenced but not defined, set its value here. + +2001-02-09 Bo Thorsen + + * elf64-x86-64.c (elf64_x86_64_check_relocs): Set .rela.got section + alignment to 3. + (elf64_x86_64_check_relocs): Write R_X86_64_GOTPCREL GOT entry + and relocation. + (elf64_x86_64_relocate_section): Fix formatting. + (elf64_x86_64_relocate_section): Fix addend for relocation of + R_X86_64_(8|16|32|PC8|PC16|PC32). + +2001-02-12 Jan Hubicka + + * elf64-x86-64.c (x86_64_elf_howto): Fix name of R_X86_64_GOTPCREL. + +2001-02-11 H.J. Lu + + * elflink.h (elf_bfd_final_link): Use file_align for SYMTAB + alignment. + +2001-02-11 Maciej W. Rozycki + + * elf32-mips.c (mips_elf_create_dynamic_relocation): Undo patch + from 2000-10-13. Do not add the symbol's value for R_MIPS_REL32 + relocations against dynsym symbols. + + * elf32-mips.c (elf_mips_howto_table): Fix the comment on + the R_MIPS_26 relocation. + (mips_elf_calculate_relocation): Use (p + 4) instead of p for + the R_MIPS_26 relocation. + (mips_elf_perform_relocation): Fix the comment on the R_MIPS16_26 + relocation. + * elf64-mips.c (mips_elf64_howto_table_rel): Fix the comment on + the R_MIPS_26 relocation. + (mips_elf64_howto_table_rela): Likewise. + + * elf32-mips.c (struct mips_elf_link_hash_entry): Added no_fn_stub + member to mark symbols that have non-CALL relocations against + them. + (mips_elf_link_hash_newfunc): Initialize no_fn_stub. + (mips_elf_calculate_relocation): Handle R_MIPS_CALL16 like + R_MIPS_GOT16. + (_bfd_mips_elf_check_relocs): Set no_fn_stub for a symbol if a + non-CALL relocation against it is encountered. + (_bfd_mips_elf_copy_indirect_symbol): Merge no_fn_stub as well. + (_bfd_mips_elf_adjust_dynamic_symbol): Only create a stub if + no_fn_stub is not set. + + * elf32-mips.c (mips_elf_output_extsym): Get the output section + information from the real symbol for indirect ones. + Check no_fn_stub to find out if a symbol has a function stub + indeed. + +2001-02-11 Michael Sokolov + + * Makefile.am (stamp-lib): ranlib the libbfd.a in the build directory. + * Makefile.in: Regenerate. + +2001-02-09 David Mosberger + + * elfxx-ia64.c (is_unwind_section_name): New function. Returns + true if section name is an unwind table section name. + (elfNN_ia64_additional_program_headers): Count each unwind section + separately. + (elfNN_ia64_modify_segment_map): Install one unwind program header + for each unwind separate section. Note: normally the linker + script merges the unwind sections that go into a single segment, + so this still generates at most one unwind program header per + segment. + + * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Accept any section + name for SHT_IA_64_UNWIND, not just .IA_64.unwind. + (elfNN_ia64_fake_sections): Mark sections with names that start + with .IA_64.unwind but not with .IA_64.unwind_info as an IA-64 + unwind section. + + * elfxx-ia64.c (elfNN_ia64_final_write_processing): New function. + Use it to make sh_info in unwind section point to the text section + it applies to. + +2001-02-09 Martin Schwidefsky + + * Makefile.am: Add linux target for S/390. + * archures.c: Likewise. + * bfd-in2.h: Likewise. + * config.bfd: Likewise. + * configure.in: Likewise. + * elf.c: Likewise. + * libbfd.h: Likewise. + * targets.c: Likewise. + * cpu-s390.c: New file. + * elf32-s390.c: New file. + * elf64-s390.c: New file. + +2001-02-09 Nick Clifton + + * peigen.c (_bfd_pe_get_symbol_info): Suppress addition of + ImageBase. This has already been done by coff_swap_hdr_in. + +2001-02-09 Jakub Jelinek + + * elf64-sparc.c (sparc64_elf_copy_private_bfd_data): New function. + +2001-02-09 Jakub Jelinek + + * elf64-sparc.c (sparc64_elf_check_relocs): Don't trust reloc_count. + (sparc64_elf_relocate_section): Likewise. + +2001-02-09 Mark Kettenis + + * elf32-sparc.c (_bfd_sparc_elf_howto_table): Treat R_SPARC_UA32 + similar to R_SPARC_32. + * elf64-sparc.c (sparc64_elf_howto_table): Likewise. + +2001-02-08 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Reserve R_386_PC32 + relocation entries for weak definitions when building DSO with + -Bsymbolic. + +2001-02-08 Richard Henderson + + * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Respect weakness + before visibility. Locally defined protected symbols are not + dynamic. + +2001-02-08 Geoffrey Keating + + * config.bfd: Enable coff64 for rs6000-*. Patch from + . + +2001-02-07 Mark Elbrecht + + * coffgen.c (coff_find_nearest_line): If stabs info is successfully + found, do not attempt to find dwarf2 info before returning. + +2001-02-07 Jakub Jelinek + + * elflink.h (is_global_symbol_definition): Rename to + is_global_data_symbol_definition and have it reject function + symbols. + (elf_link_is_defined_archive_symbol): Use renamed function. + +2001-02-07 Todd Vierling + + * libbfd-in.h (bfd_target_vector): Change extern array to pointer. + * libbfd.h (bfd_target_vector): Likewise. + * targets.c (bfd_target_vector): Rename to _bfd_target_vector and + make static; create pointer reference named bfd_target_vector. + (_bfd_target_vector_entries): Calculate this based on the array + typed _bfd_target_vector. + +2001-02-06 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Only hidden and + internal symbols are not dynamic. + * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise. + +2001-02-06 Nick Clifton + + * Makefile.am (BFD64_BACKENDS_CFILES): Remove elf64-ia64.c, so + that it will not be pulled into the list of files that make up + po/POTFILES.in. + * Makefile.in: Regenerate. + * po/bfd.pot: Regenerate. + +2001-02-06 H.J. Lu + + * peicode.h (coff_swap_filehdr_in): Remove the e_magic + checking. + (pe_bfd_object_p): Rewrite with external_PEI_DOS_hdr and + external_PEI_IMAGE_hdr. + +2001-02-06 Kazu Hirata + + * elf-m10200.c: Fix formatting. + +2001-02-04 Nick Clifton + + * elf32-v850.c (v850_elf_reloc): Do not convert reloc addend to PC + rel, it will be handled later on. + +2001-02-02 Fred Fish + + * Makefile.in: Fix typo. + +2001-02-01 Kazu Hirata + + * elf-m10300.c: Fix formatting. + +2001-01-30 Alan Modra + + * elf64-hppa.c (elf64_hppa_elf_get_symbol_type): New function. + (elf_backend_get_symbol_type): Define. + (elf64_hppa_object_p): Set architecture and machine from elf + header flags. + +2001-01-30 Curtis L. Janssen + + * elf64-alpha.c (elf64_alpha_find_nearest_line): Query dwarf2 + before mdebug. + +2001-01-26 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Return false + for non-default visibility. + * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise, but + delete ugly macro and replace with pretty function. + +2001-01-25 Mark Elbrecht + + * coff-go32.c: Update copyright. + * coff-stgo32.c: Likewise. + * coff-go32.c (COFF_LONG_FILENAMES): Define. + * coff-stgo32.c (COFF_LONG_FILENAMES): Likewise. + * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Remove .bss entry. + * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. + +2001-01-25 Kazu Hirata + + * bfd-in2.h: Rebuild. + * libbfd.h: Likewise. + +2001-01-23 H.J. Lu + + * bfd-in2.h: Rebuild. + +2001-01-23 H.J. Lu + + * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_buf) + is NULL or PRIV(vms_rec) is outside of the buffer. + +2001-01-23 Kazu Hirata + + * coff64-rs6000.c: Fix formatting. + * coff-arm.c: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + * coff-mcore.c: Likewise. + * coff-mips.c: Likewise. + * coff-pmac.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * elf32.c: Likewise. + * elf32-fr30.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-i860.c: Likewise. + * elf32-m32r.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-sparc.c: Likewise. + * elflink.c: Likewise. + * elflink.h: Likewise. + * elf-m10200.c: Likewise. + * elf-m10300.c: Likewise. + * elfxx-ia64.c: Likewise. + + * aoutx.h: Fix formatting. + * bfd.c: Likewise. + * bfd-in2.h: Likewise. + * bfd-in.h: Likewise. + * cpu-i386.c: Likewise. + * cpu-m68hc11.c: Likewise. + * dwarf2.c: Likewise. + * elf64-x86-64.c: Likewise. + * format.c: Likewise. + * freebsd.h: Likewise. + * hash.c: Likewise. + * hp300hpux.c: Likewise. + * hppabsd-core.c: Likewise. + * hpux-core.c: Likewise. + +2001-01-22 Bo Thorsen + + * elf64-x86-64.c: Added PIC support for X86-64. + (elf64_x86_64_link_hash_newfunc): Function added. + (elf64_x86_64_link_hash_table_create): Likewise. + (elf64_x86_64_check_relocs): Likewise. + (elf64_x86_64_gc_mark_hook): Likewise. + (elf64_x86_64_gc_sweep_hook): Likewise. + (elf64_x86_64_adjust_dynamic_symbol): Likewise. + (elf64_x86_64_size_dynamic_sections): Likewise. + (elf64_x86_64_discard_copies): Likewise. + (elf64_x86_64_finish_dynamic_symbol): Likewise. + (elf64_x86_64_finish_dynamic_sections): Likewise. + (elf64_x86_64_relocate_section): Add relocation of PIC sections. + +2001-01-21 Maciej W. Rozycki + + * Makefile.am (install-data-local): Make use of $(DESTDIR). + * Makefile.in: Regenerate. + +2001-01-21 Kazu Hirata + + * coff-a29k.c: Fix formatting. + +2001-01-19 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Report files with bad + relocation section names. + (elf_i386_relocate_section): Report files with bad relocation + section names and return false. + +2001-01-17 Bo Thorsen + + * targets.c: Alphabetize list of xvecs. + +2001-01-14 Alan Modra + + * config.bfd: Add linux target variant for elfxx-hppa. + * configure.in: Recognize bfd_elf32_hppa_linux_vec and + bfd_elf64_hppa_linux_vec. + * configure: Regenerate. + * elf64-hppa.c: Include elf64-target.h again to support linux + target variant. + (elf64_hppa_post_process_headers): Set ELFOSABI_LINUX for linux. + * elf32-hppa.c: Include elf32-target.h again to support linux + target variant. + (elf32_hppa_post_process_headers): New function. + (elf_backend_post_process_headers): Define. + * targets.c (bfd_target_vector): Add bfd_elf64_hppa_linux_vec and + bfd_elf32_hppa_linux_vec. + + * elf32-hppa.c (elf32_hppa_link_hash_table): Add text_segment_base, + and data_segment_base fields. + (elf32_hppa_link_hash_table_create ): Init them. + (elf32_hppa_check_relocs): Update comments. + (hppa_record_segment_addr): New function. + (elf32_hppa_relocate_section): Call it. + (final_link_relocate): Handle R_PARISC_SEGREL32. + (elf32_hppa_final_link): New function. + (bfd_elf32_bfd_final_link): Define to call it. + (hppa_unwind_entry_compare): New function. + * cache.c (bfd_open_file): Create files in write+read mode. + + * elf-hppa.h (elf_hppa_howto_table): Set bitsize value for + SEGREL32 and numerous other relocs. Change duplicate + R_PARISC_NONE relocs to R_PARISC_UNIMPLEMENTED. + + * opncls.c (bfd_fdopenr): Add parens like the comment says around + O_ACCMODE. + + * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Don't create + .plt entries for DT_INIT and DT_FINI. + (elf32_hppa_finish_dynamic_sections): Remove special handling of + DT_INIT and DT_FINI. + + * elf64-hppa.c (elf64_hppa_finish_dynamic_symbol): Use 16-bit + offsets for stub .plt access if wide mode. Check offset in range. + +2001-01-13 Nick Clifton + + * elf32-fr30.c (fr30_elf_howto_table): Remove spurious blank + line. + + * coffcode.h (coff_canonicalize_reloc): Remove spurious blank + line. + +2001-01-12 Alan Modra + + * configure.in ([bfd_elf64_x86_64_vec]): Set target64. + * configure: Regenerate. + +2001-01-11 Peter Targett + + * bfd-in2.h (bfd_architecture): Add bfd_mach_arc_5, + bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8 for ARC variants. + * cpu-arc.c (arch_info_struct): Add entries for variants. + (bfd_arc_arch) Set default to bfd_mach_arc_5. + (arc_get_mach) Don't assume machine names prefixed arc- before + testing. + * elf32-arc.c (arc_elf_object_p): Set machine number based on new + selections. + (arc_elf_final_write_processing) Likewise. + (ELF_MACHINE_CODE) Use EM_ARC. + +2001-01-10 Nick Clifton + + * coff-arm.c (LOCAL_LABEL_PREFIX): Change definition to "". + +2001-01-07 Philip Blundell + + * README: Replace `bug-gnu-utils@gnu.org' with + `bug-binutils@gnu.org'. + +2001-01-04 Kazu Hirata + + * som.c: Fix formatting. + +2001-01-03 Kazu Hirata + + * ecoffswap.h: Fix formatting. + * elf-bfd.h: Likewise. + * elfarm-nabi.c: Likewise. + * elfarm-oabi.c: Likewise. + * elfcode.h: Likewise. + * elfcore.h: Likewise. + * elflink.c: Likewise. + * elflink.h: Likewise. + * elfxx-ia64.c: Likewise. + * elfxx-target.h: Likewise. + * libbfd.c: Likewise + * linker.c: Likewise. + * lynx-core.c: Likewise. + +2001-01-02 Kazu Hirata + + * pc532-mach.c: Fix formatting. + * pe-arm.c: Likewise. + * pe-i386.c: Likewise. + * pe-mips.c: Likewise. + * pe-ppc.c: Likewise. + * pe-sh.c: Likewise. + * pei-mips.c: Likewise. + * pei-sh.c: Likewise. + * peicode.h: Likewise. + * ppcboot.c: Likewise. + * ptrace-core.c: Likewise. + +2001-01-01 Kazu Hirata + + * reloc.c: Fix formatting. + * riscix.c: Likewise. + * rs6000-core.c: Likewise. + * xcoff-target.h: Likewise. + +2000-12-29 Hans-Peter Nilsson + + * elfcode.h (elf_object_p): Also restore the bfd mach field on + error, by calling bfd_default_set_arch_mach with incoming + values. + +2000-12-26 Kazu Hirata + + * vaxnetbsd.c: Fix formatting. + * versados.c: Likewise. + * vms-gsd.c: Likewise. + * vms-hdr.c: Likewise. + * vms-misc.c: Likewise. + +2000-12-25 Alexandre Oliva + + * archive.c (coff_write_armap): Don't write more than symbol_count + `archive_member_file_ptr's. + +2000-12-25 Kazu Hirata + + * vms-tir.c: Fix formatting. + +2000-12-23 Kazu Hirata + + * vms.c: Fix formatting. + * vms.h: Likewise. + +2000-12-21 Santeri Paavolainen + + * vms-hdr.c: Include alloca.h if HAVE_ALLOCA_H is defined. + + * peicode.h (pe_ILF_object_p): Add const to import of TARGET_LITTLE_SYM. + + * elf32-m32r.c (m32r_elf_generic_reloc): Add cast to avoid (void *) + arithmetic. + + * elf32-fr30.c: Add casts to avoid (void *) arithmetic. + + * coffcode.h (styp_to_sec_flags): Add empty statement after label. + +2000-12-21 Richard Sandiford + + * libbfd.c (bfd_get_bits): Added + (bfd_put_bits): Likewise + * bfd-in.h: Declared the above. + * bfd-in2.h: Regenerated. + +2000-12-20 Kazu Hirata + + * targets.c: Fix formatting. + * tekhex.c: Likewise. + * trad-core.c: Likewise. + +2000-12-19 Kazu Hirata + + * sco5-core.c: Fix formatting. + * section.c: Likewise. + * sparclinux.c: Likewise. + * sparclynx.c: Likewise. + * sparcnetbsd.c: Likewise. + * srec.c: Likewise. + * stabs.c: Likewise. + * stab-syms.c: Likewise. + * sunos.c: Likewise. + * syms.c: Likewise. + * sysdep.h: Likewise. + +2000-12-18 Nick Clifton + + * coff-arm.c (EXTRA_S_FLAGS): Only define if not already + defined. + * epoc-pe-arm.c (EXTRA_S_FLAGS): Define. + * epoc-pei-arm.c (EXTRA_S_FLAGS): Define. + +2000-12-18 Nick Clifton + + * vms-misc.c (_bfd_vms_get_record): Add default case to + file_format switch. + +2000-12-15 Miloslav Trmac + + * elfcore.h (elf_core_file_p): Move to the start of the program + headers before attempting to read them. + +2000-12-14 Kazu Hirata + + * peigen.c: Fix formatting. + * som.c: Likewise. + * som.h: Likewise. + +2000-12-13 Kazu Hirata + + * peigen.c: Fix formatting. + +2000-12-12 Jim Wilson + + * elfxx-ia64.c (get_dyn_sym_info): Cast %p argument to void *. + +2000-12-08 Mark Salter + + * binary.c (binary_set_section_contents): Ignore sections + with zero size. + +2000-12-12 Kazu Hirata + + * m68klinux.c: Fix formatting. + * m68knetbsd.c: Likewise. + * mipsbsd.c: Likewise. + * netbsd-core.c: Likewise. + * netbsd.h: Likewise. + * newsos3.c: Likewise. + * nlm32-alpha.c: Likewise. + * nlm32-i386.c: Likewise. + * nlm32-ppc.c: Likewise. + * nlm32-sparc.c: Likewise. + * nlmcode.h: Likewise. + * nlmswap.h: Likewise. + * nlm-target.h: Likewise. + * ns32knetbsd.c: Likewise. + +2000-12-10 Fred Fish + + * elflink.h (elf_link_output_extsym): Don't complain about undefined + symbols in shared objects if allow_shlib_undefined is true. + +2000-12-12 Nick Clifton + + * cpu-sh.c: Fix formattng. + * elf.c: Fix formattng. + * elf32-mips.c: Fix formattng. + * elf32-sh.c: Fix formattng. + * elf64-alpha.c: Fix formattng. + +2000-12-09 Nick Clifton + + * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Pass + dwarf2_find_line_info as last parameter to invocation of + _bfd_dwarf2_find_nearest_line. + * elf32-arm.h (elf32_arm_find_nearest_line): Pass + dwarf2_find_line_info as last parameter to invocation of + _bfd_dwarf2_find_nearest_line. + +2000-12-08 Mark Elbrecht + + * Makefile.am (BFD32_BACKENDS): Move dwarf2.lo from here... + (BFD_LIBS): ...to here. + (BFD32_BACKENDS_CFILES): Move dwarf2.c from here... + (BFD_LIBS_CFILES): ...to here. + * Makefile.in: Regenerate. + * configure.in: Remove dwarf.lo from the elf shell variable. + * configure: Regenerate. + * libcoff-in.h (coff_tdata): Add pointer dwarf2_find_line_info. + * libcoff.h: Regenerate. + * coffgen.c (coff_find_nearest_line): Call + _bfd_dwarf2_find_nearest_line. + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Add parameter. Update + accordingly. + (read_abbrevs): Likewise + (decode_line_info): Likewise. + (parse_comp_unit): Likewise. + (comp_unit_find_nearest_line): Likewise. + * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype. + * libbfd.h: Regenerate. + * elf.c (_bfd_elf_find_nearest_line): Update call. + * elf-bfd.h (elf_obj_tdata): Change dwarf2_find_line_info to type PTR. + * dwarf2.c (concat_filename): Use IS_ABSOLUTE_PATH. + * coffcode.h (STYP_XCOFF_DEBUG, STYP_DEBUG_INFO): New macros. + (sec_to_styp_flags): Use them. Handle DWARF2 sections. + (styp_to_sec_flags): Handle DWARF2 sections. + * elf32-arm.h (elf32_arm_find_nearest_line): Add parameter to call + to _bfd_find_nearest_line. + * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Add parameter to + call to _bfd_find_nearest_line. + +2000-12-08 Kazu Hirata + + * coffgen.c: Fix formatting. + * elf-m10300.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-i960.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-ppc.c: Likewise. + * elf32-sh.c: Likewise. + * elf32-sparc.c: Likewise. + * elf32-v850.c: Likewise. + * elf64-alpha.c: Likewise. + * elf64-hppa.c: Likewise. + * elf64-mips.c: Likewise. + * elf64-sparc.c: Likewise. + +2000-12-07 Kazu Hirata + + * elf32-ppc.c: Fix formatting. + * elf64-x86-64.c: Likewise. + +2000-12-06 Ulf Carlsson + + From Ralf Baechle + + * elf32-mips.c (elf32_mips_merge_private_bfd_data): Always permit + BFDs containing no sections or empty .text, .data or .bss sections + to be merged, regardless of their flags. + +2000-12-06 Kazu Hirata + + * elf32-m32r.c: Fix formatting. + * elf32-m68hc11.c: Likewise. + * elf32-m68hc12.c: Likewise. + * elf32-m68k.c: Likewise. + * elf32-mcore.c: Likewise. + * elf32-pj.c: Likewise. + * elf32-ppc.c: Likewise. + +2000-12-05 Kazu Hirata + + * elf32-fr30.c: Fix formatting. + * elf32-hppa.c: Likewise. + * elf32-i370.c: Likewise. + * elf32-i386.c: Likewise. + * elf32-i860.c: Likewise. + * elf32-i960.c: Likewise. + +2000-12-03 Kazu Hirata + + * elf32-arm.h: Fix formatting. + * elf32-avr.c: Likewise. + * elf32-cris.c: Likewise. + * elf32-d10v.c: Likewise. + * elf32-d30v.c: Likewise. + * elf-hppa.h: Likewise. + * elf-m10200.c: Likewise. + * elf-m10300.c: Likewise. + +2000-12-01 Chris Demetriou + + * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mips32 and + bfd_mach_mips32_4k. Update FIXME comment. + * archures.c (bfd_mach_mips32): New constant. + (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to + the latter, renumber it. + * bfd-in2.h (bfd_mach_mips32): New constant. + (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to + the latter, renumber it. + * cpu-mips.c (I_mips32): New constant. + (I_mips4K, I_mips32_4k): Rename the former to the latter. + (arch_info_struct): Add bfd_mach_mips32 entry, replace + bfd_mach_mips4K entry with bfd_mach_mips32_4k entry. + * elf32-mips.c (elf_mips_isa): Add E_MIPS_ARCH_32 case. + (elf_mips_mach): Likewise. Also, replace E_MIPS_MACH_MIPS32 + with E_MIPS_MACH_MIPS32_4K. + (_bfd_mips_elf_final_write_processing): Replace + bfd_mach_mips4K with bfd_mach_mips32_4k case, add + bfd_mach_mips32 case. + (_bfd_mips_elf_merge_private_bfd_data): Generalize ISA mixing + comparison with support for MIPS32. + (_bfd_mips_elf_print_private_bfd_data): Print ISA name for + MIPS32. + + * aoutx.h (NAME(aout,machine_type)): Add cases for + bfd_mach_mips5 and bfd_mach_mips64. + * archures.c (bfd_mach_mips5, bfd_mach_mips64): New constants. + * bfd-in2.h (bfd_mach_mips5, bfd_mach_mips64): Likewise. + * cpu_mips.c (I_mips5, I_mips64): New definitions. + (arch_info_struct): Add entries for bfd_mach_mips5 and + bfd_mach_mips64. + * elf32-mips.c (elf_mips_isa, elf_mips_mach, + _bfd_mips_elf_print_private_bfd_data): Add cases for + E_MIPS_ARCH_5 and E_MIPS_ARCH_64. + (_bfd_mips_elf_final_write_processing): Add cases for + bfd_mach_mips5 and bfd_mach_mips64. + + * aoutx.h (NAME(aout,machine_type)): Add a + bfd_mach_mips_sb1 case. + * archures.c (bfd_mach_mips_sb1): New constant. + * bfd-in2.h (bfd_mach_mips_sb1): New constant. + * cpu-mips.c (I_sb1): New constant. + (arch_info_struct): Add entry for bfd_mach_mips_sb1. + * elf32-mips.c (elf_mips_mach): Add case for + E_MIPS_MACH_SB1. + (_bfd_mips_elf_final_write_processing): Add case for + bfd_mach_mips_sb1. + +2000-12-01 Joel Sherrill + + * config.bfd (arm-*-rtems*, a29k-*rtems*): New targets. + (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. + (sparc*-*-rtems*): Switched from a.out to ELF. + +2000-11-30 Jan Hubicka + + * Makefile.am (BFD64_BACKENDS): Add elf64-x86-64.lo + BFD64_BACKENDS_CFILES): Add elf64-x86-64.c + (elf64-x86-64.lo): Add dependencies. + * archures.c (DESCRIPTION): Add bfd_mach_x86_64, + bfd_mach_x86_64_intel_syntax. + * elf.c (prep_headers): Use EM_x86_64 for 64bit output. + * config.bfd (x86_64): Add. + * configure.in: Add support for bfd_elf64_x86_64_vec. + * cpu-i386.c (bfd_x86_64_arch_intel_syntax, bfd_x86_64_arch): Add. + (bfd_i386_arch, i8086_ar): Link in. + * elf64-x86-64.c: New file. + * reloc.c (ENUMDOC): Add BFD_RELOC_X86_64*. + * targets.c (bfd_elf64_x86_64_vec): Add. + (bfd_target_vect): Add bfd_elf64_x86_64_vec. + +2000-11-30 Kazu Hirata + + * xcofflink.c: Fix formatting. + +2000-11-28 Kazu Hirata + + * aoutx.h: Fix formatting. + * bfd-in.h: Likewise. + * bfd-in2.h: Likewise. + * cache.c: Likewise. + * cisco-core.c: Likewise. + * coff64-rs6000.c: Likewise. + * coffcode.h: Likewise. + * coffswap.h: Likewise. + * corefile.c: Likewise. + * elf32-mips.c: Likewise. + +2000-11-27 Kazu Hirata + + * aout-adobe.c: Fix formatting. + * coff64-rs6000.c: Likewise. + * coffgen.c: Likewise. + * cofflink.c: Likewise. + +2000-11-27 Philip Blundell + + * libcoff-in.h (coff_tdata): Add `strings_written' flag. + (obj_coff_strings_written): New accessor macro for above. + * libcoff.h: Regenerate. + * cofflink.c (_bfd_coff_final_link): Say that we wrote the + strings. + * coffcode.h (coff_write_object_contents): No need to write out + the string table if it's already been done. + +2000-11-22 Philip Blundell + + * cofflink.c (_bfd_coff_generic_relocate_section): Don't object to + weak undefined symbols. + +2000-11-24 Nick Clifton + + * archures.c (bfd_mach_arm_5TE): Define. + (bfd_mach_arm+XScale): Define. + * bfd-in2.h: Regenerate. + + * coff-arm.c (coff_arm_reloc_type_lookup): Accept + BFD_RELOC_ARM_PCREL_BLX. + + * coffcode.h (coff_set_flags): Set flags for 5t, 5te and + XScale machine numbers. + + * config.bfd (xscale-elf): Add target. + (xscale-coff): Add target. + + * cpu-arm.c: Add xscale machine name. + Add v5t, v5te and XScale machine numbers. + +2000-11-23 Kazu Hirata + + * aix386-core.c: Fix formatting. + +2000-11-22 Jim Wilson + + * coff-ia64.c (howto_table): Use EMPTY_HOWTO. + (in_reloc_p): Add ATTRIBUTE_UNUSED to unused parameters. + * cpu-ia64-opc.c (ins_rsvd, ext_rsvd, ins_const, ext_const): Likewise. + (ins_imms_scaled): Initialize sign_bit at function entry. + (elf64_ia64_operands): Add missing initializers. + * elfxx-ia64.c (elfNN_ia64_reloc, elfNN_ia64_reloc_type_lookup, + elfNN_ia64_info_to_howto, elfNN_ia64_fake_sections, + elfNN_ia64_add_symbol_hook, elfNN_ia64_is_local_label_name, + elfNN_ia64_local_hash_table_init, get_fptr, get_pltoff, + elfNN_ia64_adjust_dynamic_symbol): Add ATTRIBUTE_UNUSED for unused + parameters. + (elfNN_ia64_info_to_howto): Initialize free_relocs, free_contents, + and free_extsyms at function entry. + (elfNN_add_symbol_hook): Add unsigned cast to bfd_get_gp_size result. + (elfNN_ia64_create_dynamic_sections): Delete unused local h. + (get_got): Delete unused local srel. + (elfNN_ia64_check_relocs): Initialize dynrel_type when declared. + (elfNN_ia64_relocate_section): Delete unused local dynindx. + +2000-11-21 Kazu Hirata + + * coff-a29k.c: Fix formatting. + * coff-h8500.c: Likewise. + * coff-i960.c: Likewise. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-stgo32.c: Likewise. + * coff-tic54x.c: Likewise. + * coff-w65.c: Likewise. + * cpu-h8500.c: Likewise. + * cpu-hppa.c: Likewise. + * cpu-ns32k.c: Likewise. + * ecoff.c: Likewise. + * ecofflink.c: Likewise. + +2000-11-21 Nick Clifton + + * elf32-sh.c (sh_elf_reloc_loop): Fix compile time warning, and + remove possibility of infinite loop. + +2000-11-20 Kazu Hirata + + * aix386-core.c: Fix formatting. + * aout-adobe.c: Likewise. + * aout-arm.c: Likewise. + * aout-encap.c: Likewise. + * aout-ns32k.c: Likewise. + * aout-target.h: Likewise. + * aout-tic30.c: Likewise. + * aoutf1.h: Likewise. + * aoutx.h: Likewise. + * archive.c: Likewise. + * bfd-in.h: Likewise. + * bfd-in2.h: Likewise. + * bfd.c: Likewise. + * bout.c: Likewise. + +2000-11-17 H.J. Lu + + * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Don't create + pltoff entries for DT_INIT and DT_FINI. + (elfNN_ia64_final_link): Don't set DT_INIT/FINI entries. + (elfNN_ia64_finish_dynamic_sections): Don't fill in DT_INIT/FINI + entries. + +2000-11-16 Richard Henderson + + * elfxx-ia64.c (elfNN_ia64_check_relocs): Handle IPLT relocs. + (allocate_dynrel_entries): Likewise. + (elfNN_ia64_relocate_section): Likewise. Set REL addends correctly. + (set_pltoff_entry): Likewise. + (ia64_howto_table): Remove R_IA64_SEGBASE, and R_IA64_EPLT[ML]SB + (elfNN_ia64_reloc_type_lookup): Likewise. + (elfNN_ia64_install_value): Likewise. + (elfNN_ia64_relocate_section): Likewise. + * reloc.c (BFD_RELOC_IA64_SEGBASE): Remove. + (BFD_RELOC_IA64_EPLTMSB, BFD_RELOC_IA64_EPLTLSB): Remove. + +2000-11-16 Kazu Hirata + + * cpu-a29k.c: Fix formatting. + * cpu-alpha.c: Likewise. + * cpu-arm.c: Likewise. + * cpu-avr.c: Likewise. + * cpu-d10v.c: Likewise. + * cpu-h8500.c: Likewise. + * cpu-hppa.c: Likewise. + * cpu-i370.c: Likewise. + * cpu-i386.c: Likewise. + * cpu-i960.c: Likewise. + * cpu-ia64-opc.c: Likewise. + * cpu-ia64.c: Likewise. + * cpu-m32r.c: Likewise. + * cpu-m68hc11.c: Likewise. + * cpu-m68hc12.c: Likewise. + * cpu-m68k.c: Likewise. + * cpu-m88k.c: Likewise. + * cpu-mips.c: Likewise. + * cpu-ns32k.c: Likewise. + * cpu-pj.c: Likewise. + * cpu-powerpc.c: Likewise. + * cpu-sh.c: Likewise. + * cpu-sparc.c: Likewise. + * cpu-tic54x.c: Likewise. + * cpu-v850.c: Likewise. + * cpu-vax.c: Likewise. + * cpu-w65.c: Likewise. + * cpu-we32k.c: Likewise. + * cpu-z8k.c: Likewise. + * dwarf1.c: Likewise. + * dwarf2.c: Likewise. + +2000-11-15 Kazu Hirata + + * coff-arm.c: Fix formatting. + * coff-ppc.c: Likewise. + * coff-rs6000.c: Likewise. + * coff-sh.c: Likewise. + * coff-sparc.c: Likewise. + * coff-tic30.c: Likewise. + * coff-tic54x.c: Likewise. + * coff-tic80.c: Likewise. + * coff-w65.c: Likewise. + * coff-we32k.c: Likewise. + * coff-z8k.c: Likewise. + +2000-11-15 Richard Henderson + + * elf64-alpha.c (elf64_alpha_check_relocs): Create the reloc + section with the same ALLOC|LOAD flags as the source section. + +2000-11-14 Jakub Jelinek + + * elf64-alpha.c (elf64_alpha_relax_opt_call): Only check bits used + by STO_ALPHA constants. + +2000-11-14 Kazu Hirata + + * coff-pmac.c: Fix formatting. + * coff-ppc.c: Likewise. + +2000-11-13 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): Also add indirect + symbols for common symbols with the default version. + +2000-11-09 Philip Blundell + + * section.c (STD_SECTION): Set gc_mark flag. + +2000-11-11 Kazu Hirata + + * coff-i960.c: Likewise. + * coff-m68k.c: Likewise. + * coff-m88k.c: Likewise. + * coff-mcore.c: Likewise. + * coff-mips.c: Likewise. + +2000-11-11 Bernd Schmidt + + * elf32-sh.c (sh_elf_relocate_section): Ignore R_SH_NONE relocs. + +2000-11-10 Kazu Hirata + + * coff-h8300.c: Fix formatting. + * coff-h8500.c: Likewise. + * coff-i386.c: Likewise. + * coff-i860.c: Likewise. + * coff-i960.c: Likewise. + * coff-ia64.c: Likewise. + +2000-11-09 Kazu Hirata + + * archive.c: Fix formatting. + * archures.c: Likewise. + +2000-11-07 Richard Henderson + + * elfxx-ia64.c (elf64_ia64_final_link): New local unwind_output_sec. + Set it before bfd_elf64_bfd_final_link call. Use it after the call. + * section.c (bfd_set_section_contents): Call memcpy if + section->contents set and location not equal to contents plus offset. + +2000-11-08 Kazu Hirata + + * bfd-in.h: Fix formatting. + * bfd-in2.h: Likewise. + * bfd.c: Likewise. + * binary.c: Likewise. + * bout.c: Likewise. + * coff-a29k.c: Likewise. + * coff-alpha.c: Likewise. + * coff-apollo.c: Likewise. + * coff-aux.c: Likewise. + +2000-11-07 Kazu Hirata + + * aix386-core.c: Fix formatting. + * aoutf1.h: Likewise. + * aoutx.h: Likewise. + * archures.c: Likewise. + * armnetbsd.c: Likewise. + +2000-11-07 Alan Modra + + * coff-h8300.c (special): Adjust reloc address. + +2000-11-06 Steve Ellcey + + * archures.c (bfd_mach_ia64_elf64, bfd_mach_ia64_elf32): Add defines + to differentiate elf32 and elf64 on ia64. + * bfd-in2.h: Regenerate. + * config.bfd: Add target for "ia64*-*-hpux*". + * configure.in: Add bfd_elf32_ia64_big_vec to selvecs switch. + * configure: Regenerate. + * cpu-ia64.c (bfd_ia64_elf32_arch): Add elf32 arch info structure. + * targets.c: Add bfd_target bfd_elf32_ia64_big_vec. + + * Makefile.am: Make elf32-ia64.c and elf64-ia64.c derived objects + from elfxx-ia64.c. Add depenency rules for making elf32-ia64.lo. + * Makefile.in: Regnerate. + * elf64-ia64.c: Deleted. + * elfxx-ia64.c: New file, paramaterized version of elf64-ia64.c. + +2000-11-06 Kazu Hirata + + * aout-adobe.c: Fix formatting. + * aout-arm.c: Likewise. + * aout-cris.c: Likewise. + * aout-encap.c: Likewise. + * aout-ns32k.c: Likewise. + * aout-target.h: Likewise. + * aout-tic30.c: Likewise. + +2000-11-05 Philip Blundell + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Always permit + BFDs containing no sections to be merged, regardless of their flags. + +2000-11-04 Philip Blundell + + * elf32-arm.h (elf32_arm_relocate_section): Suppress error message + if a relocation for an undefined symbol also results in an + overflow. + +2000-11-06 Christopher Faylor + + * config.bfd: Add support for Sun Chorus. + +2000-11-05 David O'Brien + + * configure.in: Recognize alpha-*-freebsd*. + * configure: Regenerate. + +2000-11-02 Luciano Gemme + + * srec.c (CHUNK): Rename to DEFAULT_CHUNK. + (Chunk): New global variable set by a parameter in objcopy.c. + (S3Forced): New global variable set by a parameter in + objcopy.c. + (srec_set_section_contents): If S3Forced is true, always generate + S3 records. + (srec_write_section): Use 'Chunk' to limit maximum length of S + records. + +2000-11-02 Per Lundberg + + * config.bfd: Add support for i[3456]86-chaosdev-storm-chaos. + * Makefile.in: Regenerate. + * bfd-in2.h: Regenerate. + * po/bfd.pot: Regenerate. + +2000-10-31 Philip Blundell + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Only handle + EF_SOFT_FLOAT if it is defined. + +2000-10-27 Philip Blundell + + * elf32-arm.h (elf32_arm_copy_private_bfd_data): Don't refuse + attempts to mix PIC code with non-PIC, just mark the output as + being position dependent. + (elf32_arm_merge_private_bfd_data): Likewise. Print an error + message for EF_SOFT_FLOAT mismatches. Display diagnostics for + all mismatches, not just the first one. + +2000-10-25 Chris Demetriou + + * ieee.c (ieee_archive_p): Plug one of many possible + memory leaks in error handling. + +2000-10-20 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_merge_private_bfd_data, + elf32_sparc_object_p, elf32_sparc_final_write_processing): + Support v8plusb. + * elf64-sparc.c (sparc64_elf_merge_private_bfd_data, + sparc64_elf_object_p): Support v9b. + * archures.c: Declare v8plusb and v9b machines. + * bfd-in2.h: Ditto. + * cpu-sparc.c: Ditto. + +2000-10-16 Geoffrey Keating + + * elf64-sparc.c (sparc64_elf_relocate_section): Clear the location + of a GOT reloc. + + * elf32-ppc.c (SYMBOL_REFERENCES_LOCAL): New macro. + (SYMBOL_CALLS_LOCAL): New macro. + (ppc_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL. + (ppc_elf_check_relocs): Use SYMBOL_REFERENCES_LOCAL. + (ppc_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL. + (ppc_elf_relocate_section): Use flag variable to determine + whether the relocation refers to a local symbol. + Test whether a PLTREL24 reloc will produce a reloc by looking + to see whether a PLT entry was made. + +2000-10-14 Geoffrey Keating + + * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Don't make PLT + entries that could serve as a definition for a weak symbol. + +2000-10-13 Ulf Carlsson + + From Ralf Baechle + + * elf32-mips.c (mips_elf_create_dynamic_relocation): New argument + local_p. Add symbol value only for non-R_MIPS_REL32 relocations + against local symbols. + (_bfd_mips_elf_finish_dynamic_sections): Undo patch from 2000-10-01. + +2000-10-12 Alan Modra + + * section.c (struct sec): Add kept_section. + (struct bfd_comdat_info): Remove sec, we can use above. + (STD_SECTION): Add initializer. + (bfd_make_section_anyway): Init here too. + + * bfd-in2.h: Regenerate. + + * elflink.h (elf_link_add_object_symbols): Remove unnecessary + zeroing of `flags'. + (elf_link_input_bfd): Set all asection->symbol->value's here, and + fudge values for discarded link-once section symbols. + + * elf64-hppa.c: Include alloca-conf.h + +2000-10-11 Alan Modra + + * elf.c (swap_out_syms): Revert 2000-10-07 changes. + + * ieee.c (ieee_make_empty_symbol): Oops, bfd_zalloc needs another arg. + +2000-10-10 Alan Modra + + * ieee.c (ieee_make_empty_symbol): Use bfd_zalloc, not bfd_zmalloc. + +2000-10-10 Tom Rix + + * section.c (bfd_make_section_anyway): Release newsect ptr when + newsect->symbol fails to alloc. Use bfd_release instead of free. + +2000-10-09 Richard Henderson + + * elflink.h (size_dynamic_sections): Don't create various tags if + .dynstr is excluded from the link. Don't set first dynsym entry + if dynsymcount is zero. + (elf_bfd_final_link): Don't try to swap out dynamic syms if + .dynsym excluded from the link. Don't try to write any dynamic + sections excluded from the link. + + * elf.c (swap_out_syms): Handle global section symbols. + +2000-10-05 DJ Delorie + + * peigen.c (_bfd_pei_swap_scnhdr_out): note extended relocs + * coffcode.h (coff_set_alignment_hook): read extended reloc count + (coff_write_relocs): write extended reloc count + (coff_write_object_contents): account for extended relocs + +2000-10-05 Jim Wilson + + * elf-bfd.h (struct elf_backend_data): Add elf_backend_section_flags + field. + * elf.c (_bfd_elf_make_section_from_shdr): Call the + elf_backend_section_flags function. + * elf64-ia64.c (elf64_ia64_section_from_shdr): Delete flag conversion + code. + (elf64_ia64_section_flags): New function containing flag conversion + code. + (elf_backend_section_flags): Define to elf64_ia64_section_flags. + * elfxx-target.h (elf_backend_section_flags): Define. + (elfNN_bed): Initialize elf_backend_section_flags field. + +2000-10-02 Alan Modra + + * elf32-hppa.c (elf32_hppa_check_relocs): Correct call to + _bfd_elf32_gc_record_vtable. Correct a comment. + +2000-10-01 Ulf Carlsson + + From Ralf Baechle + + * elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Mark gld + produces binaries with got[1] = 0x80000001 to differenciate them + for the dynamic linker from the broken binaries produced by old + versions. + +2000-09-30 Petr Sorfa + + * elf.c (elfcore_grok_pstatus): Check for size of pxstatus_t. + (elfcore_grok_lwpstatus): Check for size of lwpxstatus_t. + * configure.in: Add check for pxstatus_t and lwpxstatus_t. + * configure: Regenerate. + +2000-09-27 Hans-Peter Nilsson + + Define two bfd_targets for absence and presence of leading + underscore on symbols. Make sure to only link same kind. + * elf32-cris.c (cris_elf_object_p, + cris_elf_final_write_processing, cris_elf_print_private_bfd_data, + cris_elf_merge_private_bfd_data): New. + (elf_backend_object_p, elf_backend_final_write_processing, + bfd_elf32_bfd_print_private_bfd_data, + bfd_elf32_bfd_merge_private_bfd_data): Define. + : Include elf32-target.h twice with + different macro settings: + (TARGET_LITTLE_SYM): First as bfd_elf32_cris_vec, then as + bfd_elf32_us_cris_vec. + (TARGET_LITTLE_NAME): First as "elf32-cris", then "elf32-us-cris". + (elf_symbol_leading_char): First as 0, then '_'. + (INCLUDED_TARGET_FILE): Define for second include of elf32-target.h. + * config.bfd (cris-*-*): Add bfd_elf32_us_cris_vec to targ_selvecs. + * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vector. + * configure: Regenerate. + * targets.c: Declare bfd_elf32_us_cris_vec. + * po/bfd.pot: Regenerate. + +2000-09-29 Momchil Velikov + + * elf32-arm.h (arm_add_to_rel): Correctly adjust the addend for + R_ARM_THM_PC22 relocations. + +2000-09-29 NIIBE Yutaka + + * elflink.h (elf_link_add_object_symbols): Don't bfd_release runpath. + +2000-09-29 Momchil Velikov + + * elf.c (elf_fake_sections): Do not mark the section SHT_NOBITS if + is has the SEC_HAS_CONTENTS flag set. + +2000-09-28 Örjan Friberg + Hans-Peter Nilsson + + * aout-cris.c (N_TXTADDR): Define. + +2000-09-28 John David Anglin + + * som.c: Include alloca-conf.h. + * Makefile.am: "make dep-am" + * Makefile.in: Regenerate. + +2000-09-27 Alan Modra + + * elf32-hppa.c (plt_stub): New. + (PLT_STUB_ENTRY): Define. + (elf32_hppa_link_hash_table): Change multi_subspace to packed + boolean. Add need_plt_stub, has_12bit_branch and has_17bit_branch. + (elf32_hppa_link_hash_table_create): Init to suit. + (elf32_hppa_check_relocs): Set has_12bit_branch and + has_17bit_branch as appropriate. + (elf32_hppa_adjust_dynamic_symbol): Set need_plt_stub for + non-local functions. + (elf32_hppa_size_dynamic_sections): Correct setting of reltext. + Add space for plt_stub as needed. + (elf32_hppa_finish_dynamic_symbol): Point .plt entries for global + functions at plt_stub. + (elf32_hppa_finish_dynamic_sections): Write plt_stub. + (elf32_hppa_create_dynamic_sections): Leave .plt executable. + + * elf32-hppa.h (elf32_hppa_size_stubs): Add group_size param. + * elf32-hppa.c (elf32_hppa_size_stubs): Likewise. Use it instead + of fixed size, and if negative, disable handling of input sections + before stub section. Set up default stub group size depending + on detected branch relocs. + (hppa_build_one_stub): Use lrsel and rrsel for import stubs to + ensure different offsets from sym_value aren't rounded to + different 2k blocks. Use lrsel and rrsel for other stubs too for + consistency rather than necessity. + (elf32_hppa_check_relocs): Handle R_PARISC_DIR14F. + (final_link_relocate): Likewise. + (elf32_hppa_relocate_section): Likewise. + + * elf-hppa.h (elf_hppa_howto_table): Add R_PARISC_DIR14F reloc. + (_bfd_elf_hppa_gen_reloc_type): Generate them. + (elf_hppa_final_link_relocate): Handle them. + (elf_hppa_relocate_insn): Likewise. + (_bfd_elf_hppa_gen_reloc_type): Add missing e_ldsel and e_rdsel cases. + +2000-09-26 Hans-Peter Nilsson + + * elfcode.h (elf_object_p): Preserve and clear abfd section + information. Restore at error. + +2000-09-26 Paul Sokolovsky + + * peigen.c (_bfd_pei_swap_aouthdr_in): If some DataDirectory + is empty, make sure that its rva also 0. NT loader dislikes + having otherwise. + +2000-09-26 Steve Ellcey + + * som.c (som_bfd_derive_misc_symbol_info): Make weak symbols + global by default. + +2000-09-21 Alan Modra + + * elf32-hppa.c (elf32_hppa_check_relocs): Fix weak sym handling in + currently unused RELATIVE_DYNAMIC_RELOCS code. + (hppa_discard_copies): Likewise. + (elf32_hppa_size_stubs): Size `input_list' array correctly. Correct + comments. Don't check non-code output sections for stub grouping. + +2000-09-20 Alan Modra + + * section.c (bfd_get_unique_section_name): Return NULL if + bfd_malloc fails. + +2000-09-19 Michael Sokolov + + * elf32-m68k.c (elf_cpu32_plt0_entry): Change the PLT entry 0 + instruction sequence to actually work. + (elf_m68k_finish_dynamic_sections): Change the patch-in offset + accordingly. + +2000-09-18 Alexandre Oliva + + * elf32-sh.c (sh_elf_relocate_section): Use + _bfd_final_link_relocate to apply the relocation against a section + symbol, when doing relocatable links. + +2000-09-18 Alan Modra + + * elf32-hppa.c (elf32_hppa_stub_hash_entry): Rename input_section + to id_sec. + (stub_hash_newfunc): Here too. + (hppa_add_stub): And here. + (elf32_hppa_link_hash_table): Remove stub_section_created, + reloc_section_created, first_init_sec and first_fini_sec. Add + stub_group. + (elf32_hppa_link_hash_table_create): Init to suit. + (hppa_get_stub_entry): Add support for grouping stub sections. + (hppa_add_stub): Likewise. Remove sec_count param and init/fini + section code. Index stub vars by section->id. + (elf32_hppa_size_stubs): Likewise. Remove duplicated function + exit paths. Zap allocation of above removed vars. Refine + link-once test. + + * elf32-hppa.h (elf32_hppa_size_stubs): Add output_bfd param. + * elf32-hppa.c (elf32_hppa_size_stubs): Likewise. + (hppa_get_stub_entry): Pass in pointer to elf32_hppa_link_hash_table + rather than pointer to bfd_link_info. + (hppa_add_stub): Likewise. + (final_link_relocate): Likewise. + +2000-09-17 David Huggins-Daines + + (elf32_hppa_size_stubs): Don't try to build stubs for discarded + link-once sections. + +2000-09-16 Alexandre Oliva + + * elf32-sh.c (ELF_MAXPAGESIZE): Define to 128, to match + ld/emulparams/shelf.sh. + +2000-09-10 Michael Sokolov + + * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): New function. + * bfd-in.h (bfd_m68k_elf32_create_embedded_relocs): Add declaration. + * bfd-in2.h: Regenerate. + +2000-09-15 Kenneth Block + + * elf64-alpha.c (elf64_alpha_relax_with_lituse): ld performs + LITUSE relocations incorrectly if -relax is specified on the ld + command line and the displacement field of the load or store + instruction is non-zero. (Patch by paul.winalski@compaq.com) + +2000-09-15 Alan Modra + + * elf32-hppa.c (hppa_add_stub): Dont set first_init_sec and + first_fini_sec here. + (elf32_hppa_size_stubs): Instead correctly find the first .init + and .fini section here. + +2000-09-15 David Huggins-Daines + + * elf32-hppa.c (clobber_millicode_symbols): New function. + (elf32_hppa_size_dynamic_sections): Call it. + +2000-09-14 Alan Modra + + * elf32-hppa.c (elf32_hppa_link_hash_entry): Make pic_call + packed. Add plabel, plt_abs packed booleans. + (hppa_link_hash_newfunc): Init new fields. + (PLABEL_PLT_ENTRY_SIZE): Define. + (hppa_stub_name): Use size_t len vars. + (hppa_add_stub): Likewise. + (elf32_hppa_build_stubs): Likewise. + (hppa_build_one_stub): Kill some compiler warnings. + (elf32_hppa_check_relocs): Always generate a plt entry for PLABELs + if dynamic linking. Munge the local plt offsets into + local_got_refcounts. Set h->plabel for all global PLABELs. Use + size_t len vars. Add assert for plabel addend. + (elf32_hppa_gc_sweep_hook): Sweep local plt entries too. + (elf32_hppa_hide_symbol): New function. + (elf_backend_hide_symbol): Define. + (elf32_hppa_adjust_dynamic_symbol): Don't throw away plt entries + with h->plabel set. Don't make plt entries to have dynamic syms + when they have been forced local. If plt entry is used by a + plabel, make it PLABEL_PLT_ENTRY_SIZE. + (elf32_hppa_size_dynamic_sections): Set plt_abs for init fns. + Set up .plt offsets for local syms. + (elf32_hppa_relocate_section): Initialise plt entries for local + syms. Leave weak undefined plabels zero. Make global plabel + relocs against function symbol, and leave the addend zero. + Use *ABS* DIR32 relocs instead of SEGREL32 for dynamic got relocs. + (elf32_hppa_finish_dynamic_symbol): Set up IPLT relocs for + non-dynamic syms. Init extra plt for plabels. Use *ABS* DIR32 + relocs instead of SEGREL32 for dynamic got relocs. + (elf32_hppa_finish_dynamic_sections): Reserve one more .got entry. + (elf_backend_got_header_size): Adjust. + (elf32_hppa_set_gp): Calculate an "ideal" LTP. + + * elf32-hppa.c (LONG_BRANCH_VIA_PLT): Define. + (hppa_type_of_stub): Use it instead of #if 0 + (hppa_discard_copies): Use it here too. + (elf32_hppa_size_dynamic_sections): And here. + + * elf32-hppa.c (elf32_hppa_link_hash_table): Remove `offset' field. + (elf32_hppa_link_hash_table_create): And here. + (hppa_build_one_stub): And here. Instead keep track of stub + offset using _raw_size. + (elf32_hppa_size_stubs): Likewise. + (elf32_hppa_build_stubs): Likewise. + (hppa_size_one_stub): Likewise. Resize reloc section too. + + * elf32-hppa.c (hppa_add_stub): Correct first_init_sec and + first_fini_sec handling. Don't search for reloc section or set + hplink->reloc_section_created here. + (elf32_hppa_size_stubs): Instead search for reloc sections, and + set reloc_section_created here. + (hppa_handle_PIC_calls): Set ELF_LINK_HASH_NEEDS_PLT. + (elf32_hppa_size_dynamic_sections): Make a .plt entry for DT_INIT + and DT_FINI. + (elf32_hppa_finish_dynamic_sections): Set DT_INIT and DT_FINI. + + * elf32-hppa.c (hppa_build_one_stub): Replace `elf_hash_table (info)' + with `hplink->root.'. + (elf32_hppa_check_relocs): Likewise. + (elf32_hppa_gc_sweep_hook): Likewise. + (elf32_hppa_adjust_dynamic_symbol): Likewise. + (hppa_handle_PIC_calls): Likewise. + (elf32_hppa_size_dynamic_sections): Likewise. + (elf32_hppa_set_gp): Likewise. + (elf32_hppa_relocate_section): Likewise. + (elf32_hppa_finish_dynamic_symbol): Likewise. + (elf32_hppa_finish_dynamic_sections): Likewise. + + From David Huggins-Daines + * elf32-hppa.c (hppa_type_of_stub): Generate import stubs for + defined weak symbols in shared links. + (final_link_relocate): Calls to defined weak symbols in shared + objects must go via import stubs, as the target might not be known + at link time. + +2000-09-14 Alexandre Oliva + + * elf32-sh.c (sh_elf_howto_table): Moved R_SH_GOT32, R_SH_PLT32, + R_SH_COPY, R_SH_GLOB_DAT, R_SH_JMP_SLOT, R_SH_RELATIVE, + R_SH_GOTOFF, R_SH_GOTPC) to the range from 160 to 167. Replaced + the original entries with EMPTY_HOWTOs, and added new ones to fill + in the gap. + (sh_elf_info_to_howto): Make sure the new gap isn't used. + (sh_elf_relocate_section): Likewise. + +2000-09-13 Anders Norlander + + * cpu-mips.c (arch_info_struct): Add mips:4K + * bfd-in2.h (bfd_mach_mips4K): New define. + * archures.c: Add bfd_mach_mips4K to comment. + * elf32-mips.c (_bfd_mips_elf_final_write_processing): Return + E_MIPS_ARCH_2 for bfd_mach_mips4K. + +2000-09-13 Marco Franzen + + * som.c (som_write_symbol_strings): Do not used fixed buffers, + use size_t as a counter. + (som_write_space_strings): Similarly. + +2000-09-12 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_pc26): New function + and prototype. + (elf32_i860_relocate_section): Invoke new function from here. + +2000-09-11 Michael Sokolov + + * elf.c (_bfd_elf_make_section_from_shdr): Make debug_sec_names + static. + +2000-09-10 Michael Sokolov + + * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): Emit 8 NULs for + target section name instead of dumping core when the target symbol is + undefined. + +2000-09-09 Kazu Hirata + + * riscix.c: Remove DEFUN. + +2000-09-08 Nick Clifton + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Do not + initialise flags in output bfd if the input bfd is the default + architecture with the default flags. + +2000-09-08 Kazu Hirata + + * archive.c: Fix formatting. + * coff-arm.c: Likewise. + * doc/chew.c: Likewise. + +2000-09-08 Alan Modra + + * section.c (bfd_get_unique_section_name): Put a dot before the + numeric suffix. + +2000-09-07 Kazu Hirata + + * doc/chew.c: Remove all uses of DEFUN and DEFUN_VOID. + * elf.c: Fix formatting. + +2000-09-07 Alexandre Oliva + + * config.bfd (sh-*-linux*): Added. + * configure.in (bfd_elf32_shlin_vec, bfd_elf32_shblin_vec): New. + * targets.c: Declare them. + * elf32-sh-lin.c: New file. + * Makefile.am: Compile it. + * elf32-sh.c: Don't override defines from elf32-sh-lin.c. + * configure, Makefile.in: Rebuilt. + +2000-09-06 Geoffrey Keating + + * xcofflink.c (xcoff_link_input_bfd): Include the .tocbss + pseduo-section when determining where the TOC ends. + + * coff-rs6000.c (_bfd_xcoff_swap_aux_out): Use bfd_h_put_16 to + output x_tvndx as it is only two bytes wide. + + * coff-rs6000.c (xcoff_howto_table): A modifiable branch-absolute + reloc is 26 or 32 bits wide. + + * coff-rs6000.c (_bfd_xcoff_rtype2howto): The bitsize is irrelevant + for relocs that don't change anything. Also look at the full + 6 bits of bitsize. + +2000-09-06 Philip Blundell + + * config.bfd (arm*-*-uclinux*): New target. + +2000-09-06 Alexandre Oliva + + * configure: Rebuilt with new libtool.m4. + +2000-09-06 Alan Modra + + * section.c (bfd_get_unique_section_name): Avoid c++ reserved + word for variable name. + * bfd-in2.h: Regenerate. + +2000-09-05 Nick Clifton + + * config.in: Regenerate. + * libbfd.h: Regenerate. + * po/bfd.pot: Regenerate. + * doc/bfdint.texi: Remove CVS date string - it foils compares with + local versions. + +2000-09-05 Steven Johnson + + * cpu-powerpc.c (arch_info_struct): Added MPC860 Family entry. + +2000-09-05 Alan Modra + + Shared library and PIC support. + * elf32-hppa.c (PLT_ENTRY_SIZE): New. + (GOT_ENTRY_SIZE): New. + (ELF_DYNAMIC_INTERPRETER): New. + (STUB_SUFFIX): Define. + (LONG_BRANCH_PIC_IN_SHLIB): Define. + (RELATIVE_DYNAMIC_RELOCS): Define. + (enum elf32_hppa_stub_type): New. + (struct elf32_hppa_stub_hash_entry): Rename offset to + stub_offset. Add a number of new fields. + (struct elf32_hppa_link_hash_entry): New. + (struct elf32_hppa_link_hash_table): Add numerous fields. Remove + global_value. + (elf32_hppa_hash_table): Rename to hppa_link_hash_table. + (elf32_hppa_stub_hash_lookup): Rename to hppa_stub_hash_lookup. + (elf32_hppa_stub_hash_newfunc): Rename to stub_hash_newfunc. Init + new fields. + (hppa_link_hash_newfunc): New function. + (elf32_hppa_link_hash_table_create): Use above function. Init new + fields. + (elf32_hppa_stub_name): Rename to hppa_stub_name. Pass in reloc + instead of addend, and remove sym_name from args. Don't use + symbol name for local syms, instead use sym index. + (elf32_hppa_size_of_stub): Rename to hppa_type_of_stub, and return + stub type rather than size. Pass in hash and handle import stub + case. Also pass in reloc instead of offset so we can calculate + PCREL22F and PCREL12F branches properly. + (elf32_hppa_build_one_stub): Rename to hppa_build_one_stub. Build + import and export stubs too. + (elf32_hppa_size_one_stub): Rename to hppa_size_one_stub. Handle + import and export stub sizing. + (elf32_hppa_check_relocs): New function. + (elf32_hppa_adjust_dynamic_symbol): New function. + (hppa_discard_copies): New function. + (elf32_hppa_size_dynamic_sections): New function. + (elf_backend_size_dynamic_sections): Define. + (elf32_hppa_finish_dynamic_symbol): New function. + (elf_backend_finish_dynamic_symbol): Define. + (elf32_hppa_size_stubs): Stash params in link hash table, and move + some local vars into the link hash table too. For shared links, + trundle over function syms, generating export stubs. Handle + PCREL22F branches. Break out stub creation code from here.. + (hppa_add_stub): .. to here. New function. + (elf32_hppa_final_link): Rename to elf32_hppa_set_gp, and don't + call the bfd linker. Use elf_gp to record global pointer. + Calculate a value from sections if $global$ is missing. + (bfd_elf32_bfd_final_link): Define as _bfd_elf32_gc_common_final_link. + (elf32_hppa_gc_mark_hook): New function. + (elf_backend_gc_mark_hook): Define. + (elf32_hppa_gc_sweep_hook): New function. + (elf_backend_gc_sweep_hook): Define. + (elf32_hppa_bfd_final_link_relocate): Rename to final_link_relocate. + Add rel to args, and remove howto, input_bfd, offset, addend, + sym_name as we can recalculate these locally. Handle calls to + dynamic objects, extra PIC relocs, PCREL22F branches. Change + handling of undefined weak syms. Check that stubs are in range. + Only look for import stubs on PCREL17F and PCREL22F relocs. Add + message on hitting a DPREL21L reloc that needs fixing. Subtract + off PC for PCREL14F. Break out code that does a stub lookup from + here.. + (hppa_get_stub_entry): ..to here. New function. + (elf32_hppa_relocate_insn): Merge into final_link_relocate. + (elf32_hppa_relocate_section): Handle got and plt relocs, dynamic + relocs, etc. etc. + (elf32_hppa_finish_dynamic_sections): New function. + (elf_backend_finish_dynamic_sections): Define. + (elf_backend_final_write_processing) Define. + (hppa_handle_PIC_calls): New function. + (elf32_hppa_build_stubs): Call it. Pass link_info to + hppa_build_one_stub. + (elf32_hppa_create_dynamic_sections): New function + to create .plt and .got then set .plt flags correctly. + (elf_backend_create_dynamic_sections): Define. + (elf32_hppa_object_p): New function. + (elf_backend_object_p): Define. + (elf32_hppa_elf_get_symbol_type): New function. + (elf_backend_get_symbol_type): Define. + (elf_backend_can_gc_sections): Define. + (elf_backend_want_got_plt): Define. + (elf_backend_plt_alignment): Set to 2. + (elf_backend_plt_readonly): Define. + (elf_backend_want_plt_sym): Define. + (elf_backend_got_header_size): Reserve one entry. + + * elf32-hppa.h (elf32_hppa_build_stubs): Don't pass stub bfd. + (elf32_hppa_size_stubs): Pass in multi_subspace. + (elf32_hppa_set_gp): Declare. + + * section.c (SEC_HAS_GOT_REF): Define new flag for asection. + (bfd_get_unique_section_name): New function. + * bfd-in2.h: Regenerate. + + * elf64-hppa.c (elf64_hppa_check_relocs): Handle R_PARISC_PCREL12F. + (elf64_hppa_size_dynamic_sections): Remove the FIXME at bfd_zalloc + comment. + + From David Huggins-Daines + * elf64-hppa.c (elf64_hppa_check_relocs): Fix a warning. + (elf64_hppa_mark_exported_functions): Set dyn_h->st_shndx. + (elf64_hppa_link_output_symbol_hook): Test dyn_h->st_shndx has + been updated in finish_dynamic_symbol before modifying function + symbol. + + * elf-hppa.h (elf_hppa_howto_table): Restructure into groups of + eight entries. Replace NULL with bfd_elf_generic_reloc. Add + R_PARISC_GNU_VTENTRY, R_PARISC_GNU_VTINHERIT and R_PARISC_PCREL12F. + (_bfd_elf_hppa_gen_reloc_type): Handle R_PARISC_GNU_VT*. Add some + comments. Handle format == 12 for R_HPPA_PCREL_CALL. + (elf_hppa_final_link_relocate): Handle R_PARISC_PCREL12F. + (elf_hppa_relocate_insn): Likewise. Reformat some comments. + (elf_hppa_final_write_processing): Expose it for ARCH_SIZE == 32. + + From David Huggins-Daines + * elf-hppa.h (elf_hppa_is_local_label_name): Accept the SysV/ELF + style of local labels as well. + +2000-09-03 Philip Blundell + + * elf32-arm.h (elf32_arm_relocate_section): Don't try to relocate + references to undefined symbols in debugging sections. + +2000-09-02 H.J. Lu + + * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT, + BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE, + BFD_RELOC_SH_GOTPC): Move them from the MIPS section to the SH + section. + +2000-09-02 Jason Eckhardt + + * elf32-i860.c (bfd_elf32_bfd_is_local_label_name): Define macro. + (elf32_i860_is_local_label_name): New function and prototype. + +2000-09-02 Nick Clifton + + * configure.in: Increase version number to 2.10.91. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * po/bfd.pot: Regenerate. + +2000-09-02 Daniel Berlin + + * elf.c (_bfd_elf_make_section_from_shdr): Add + .gnu.linkobce.wi. to the list of debug section names. + +2000-09-02 Nick Clifton + + * dwarf2.c (find_debug_info): New function: Locate a section + containing dwarf2 debug information. + (bfd_dwarf2_find_nearest_line): Find all sections containing + debug information and include them in the stash. + +2000-09-01 Niibe Yutaka , Kaz Kojima , Alexandre Oliva + + * elf32-sh.c (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT, + R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New. + (sh_reloc_map): Add new relocs. + (sh_elf_check_relocs, sh_elf_link_hash_newfunc, + sh_elf_link_hash_table_create, sh_elf_adjust_dynamic_symbol, + sh_elf_size_dynamic_sections, sh_elf_finish_dynamic_symbol, + sh_elf_finishe_dynamic_sections, sh_elf_discard_copies): New + functions. + (ELF_DYNAMIC_INTERPRETER, PLT_ENTRY_SIZE): Define. + (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le, + elf_sh_plt_entry_be, elf_sh_plt_entry_le, + elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le): + New array constants. + (elf_sh_plt0_entry, elf_sh_plt_entry, elf_sh_pic_plt_entry): + New variables. + (elf_sh_sizeof_plt, elf_sh_plt_plt0_offset, + elf_sh_plt0_linker_offset, elf_sh_plt0_gotid_offset, + elf_sh_plt_temp_offset, elf_sh_plt_symbol_offset, + elf_sh_plt_reloc_offset): Define. + (elf_sh_pcrel_relocs_copied, elf_sh_link_hash_entry, + elf_sh_link_hash_table): New structs. + (sh_elf_link_hash_traverse, sh_elf_hash_table): New macros. + (sh_elf_relocate_section, sh_elf_check_relocs): Handle new + relocation types. + (elf_backend_create_dynamic_sections, + bfd_elf32_bfd_link_hash_table_create, + elf_backend_adjust_dynamic_symbol, + elf_backend_size_dynamic_sections, + elf_backend_finish_dynamic_symbol, + elf_backend_finish_dynamic_sections, elf_backend_want_got_plt, + elf_backend_plt_readonly, elf_backend_want_plt_sym, + elf_backend_got_header_size, elf_backend_plt_header_size): + Define. + * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT, + BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE, BFD_RELOC_SH_GOTPC): + New relocs. + * bfd-in2.h, libbfd.h: Rebuilt. + +2000-09-01 Alan Modra + + * elf32-i386.c (elf_i386_finish_dynamic_symbol): Revert 2000-08-27 + change. + +2000-08-31 J"orn Rennecke + + * elf32-sh.c (sh_elf_merge_private_data): If ibfd's elf header flags + not initialized, set them to indicate the SH1 instruction set. + +2000-08-31 Alexandre Oliva + + * acinclude.m4: Include libtool and gettext macros from the + top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-29 Michael Snyder + + * elf.c: Eliminate references to __sparcv9 macro; replace with + autoconf variables HAVE_PSINFO32_T etc. + * configure.in: Auto-configure HAVE_PSINFO_32_T, HAVE_PRPSINFO32_T, + HAVE_PSTATUS32_T, HAVE_PRSTATUS32_T, HAVE_PRSTATUS32_T_PR_WHO. + * config.in: Ditto. + * acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE) define _SYSCALL32 so it can + detect the above typedefs. (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Ditto. + * aclocal.m4: Ditto. + * configure: Regenerate. + +2000-08-27 Alan Modra + + * elf32-i386.c (elf_i386_check_relocs): Keep info on relocs copied + for any shared link, not just shared -Bsymbolic. + (elf_i386_size_dynamic_sections): Call elf_i386_discard_copies on + any shared link, and pass link info to it. + (elf_i386_size_dynamic_sections): Update comment. + (elf_i386_discard_copies): Modify to discard relocs for symbols + that have been forced local. + (elf_i386_finish_dynamic_symbol): Don't copy relocs for symbols + that have been forced local. + +2000-08-24 Denis Chertykov & Nick Clifton + + * elflink.h (elf_link_add_object_symbols): Allow common + symbols to have an alignment of 1 if explicitly requested, and + not overridden by other definitions. + +2000-08-22 Doug Kwan + + * coff-w65.c (CREATE_LITTLE_COFF_TARGET): Fix typo. + * coffcode.h (coff_set_flags): Add detection of w65 architecture. + +2000-08-22 H.J. Lu + + * elf-bfd.h (elf_link_hash_table): Add runpath. + + * bfd-in.h (bfd_elf_get_runpath_list): New prototype. + * bfd-in2.h: Rebuilt. + + * elf.c (_bfd_elf_link_hash_table_init): Initialize the + "runpath" field to NULL. + (bfd_elf_get_runpath_list): New function. + + * elflink.h (elf_link_add_object_symbols): Record DT_RPATH and + DT_RUNPATH entries. + +2000-08-22 Alexandre Oliva + + * elf32-sh.c (sh_elf_relocate_section) [R_SH_IND12W, + R_SH_DIR8WPN, R_SH_DIR8WPZ, R_SH_DIR8WPL]: Handle them + explicitly. Improve validation of r_type. + +2000-08-21 H.J. Lu + + * elf32-i386.c (elf_i386_size_dynamic_sections): Zero out the + dynamic allocated content space. Add a comment to remind us that + one day this ought to be fixed. + * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. + * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise. + * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. + +2000-08-21 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_pc16): Just write the immediate + field with the newly relocated value instead of adding it to the + existing immediate field. + (elf32_i860_relocate_splitn): Likewise. + (elf32_i860_relocate_highadj): Likewise. + +2000-08-16 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_pc16): Implemented function (it + was previously just a stub). + +2000-08-16 Alexandre Oliva + + * elflink.c (_bfd_elf_create_got_section): Don't abort(). + Formatting fixes. + (_bfd_elf_create_dynamic_sections): Likewise. + +2000-08-16 Andrew Macleod + + * elf64-sparc.c (sparc64_elf_relocate_section): Set relocation address + for undefined symbols to be the beginning of the section. + + * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Don't allocate + four extra entries at the beginning of the .rela.plt section. + (sparc64_elf_finish_dynamic_symbol): Adjust the offset in the .rela.plt + section to account for the four reserved entries in the .plt section. + +2000-08-15 Geoffrey Keating + + * xcofflink.c (_bfd_ppc_xcoff_relocate_section): Add ori r0,r0,0 + to the list of NOPs we recognize after a branch-and-link. + Use the ori NOP when one is needed. + + * coff-rs6000.c (_bfd_xcoff_slurp_armap): Finish implementation + for large archives. + +2000-08-14 Jim Wilson + + * elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle + EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP. + (elf64_ia64_print_private_bfd_data): Likewise. Also handle + EF_IA_64_ABSOLUTE. + +2000-08-11 Alexandre Oliva + + * elf32-sh.c (sh_elf_set_mach_from_flags): Make it static. + +2000-08-10 Jason Eckhardt + + * elf32-i860.c (elf32_i860_relocate_section): New function. + (i860_final_link_relocate): New function. + (elf32_i860_relocate_splitn): New function. + (elf32_i860_relocate_pc16): New function. + (elf32_i860_relocate_highadj): New function. + (elf32_i860_howto): Minor adjustments to some relocations. + (elf_info_to_howto_rel): Define. + (elf_backend_relocate_section): Define. + +2000-08-10 Nick Clifton + + * elf32-arm.h: Fix formatting. + +2000-08-10 Bernd Schmidt + + * elf32-sh.c (sh_elf_reloc_loop): Make LAST_SYMBOL_SECTION static. + +2000-08-08 Jason Eckhardt + + * elf32-i860.c (elf32_i860_howto_table): Updated some fields. + +2000-08-07 Kazu Hirata + + * ieee.c (ieee_write_debug_part): Rewrite a comment. + * elf64-ia64.c: Fix a typo. + +2000-08-05 Jason Eckhardt + + * elf32-i860.c (elf32_i860_howto_table): New structure. + (lookup_howto): New function. + (elf32_i860_reloc_type_lookup): New function. + (elf32_i860_info_to_howto_rela): New function. + (elf_code_to_howto_index): New structure. + (elf_info_to_howto): Re-define as elf32_i860_info_to_howto_rela. + (bfd_elf32_bfd_reloc_type_lookup): Re-define as + elf32_i860_reloc_type_lookup. + +2000-08-04 Rodney Brown + + * som.c (struct fixup_format): Constify `format'. + (som_hppa_howto_table): Use SOM_HOWTO macro. + (try_prev_fixup, hppa_som_reloc): Decorate unused parameter. + (som_bfd_reloc_type_lookup): Likewise. + (compare_subspaces): Remove unused `count1', `count2'. + (som_begin_writing): Remove unused `total_reloc_size'. + (som_bfd_derive_misc_symbol_info): Decorate unused parameter. + (som_print_symbol, som_bfd_is_local_label_name): Likewise. + (som_set_reloc_info): Constify `cp'. Remove unused `addend'. + (som_find_nearest_line): Decorate unused parameter(s). + (som_sizeof_headers, som_get_symbol_info, som_write_armap): Likewise. + (som_bfd_link_split_section): Likewise. + +2000-08-03 Nick Clifton + + * section.c: Restore backed out code. + * elf.c: Restore backed out code. + (copy_private_bfd_data): Fix bug preventing stipped dynamic + binaries from working. + * bfd-in2.h: Regenerate. + +2000-08-03 H.J. Lu + + * section.c: Back out the change made by Nick Clifton + on 2000-07-31. It breaks stripping dynamic + binaries. + * bfd-in2.h: Likewise. + * elf.c: Likewise. + +2000-08-03 Alexandre Oliva + + * elf32-sh.c (sh_elf_reloc_loop): Warning removal. + +2000-07-31 Jason Eckhardt + + * reloc.c (BFD_RELOC_860_*): New bfd relocs for i860. + * bfd-in2.h, libbfd.h: Regenerate. + +2000-07-31 Nick Clifton + + * section.c (struct sec): Add new boolean field 'segment_mark'. + (STD_SECTION): Initialise new field to zero. + + * bfd-in2.h: Regenerate. + + * elf.c (copy_private_bfd_data): Reorganise section to segment + mapping to cope with moved sections requiring new segments, + and overlapping segments. + (SEGMENT_END): New macro: Return the end address of a segment. + (IS_CONTAINED_BY_VMA): New macro: Determine if a segment + contains a section by comparing their VMA addresses. + (IS_CONTAINED_BY_LMA): New macro: Determine if a segment + contains a section by comparing their LMA addresses. + (INCLUDE_SECTION_IN_SEGMENT): New macro: Determine if a + section should be included in a segment. + (SEGMENT_AFTER_SEGMENT): New macro: Determine if one segment + follows another in memory. + (SEGMENT_OVERLAPS_SEGMENT): New macro: Determine if two + segments overlap. + +2000-07-22 Jason Eckhardt + + * cpu-i860.c: Added comments. + + * elf32-i860.c (TARGET_LITTLE_SYM): Defined to + bfd_elf32_i860_little_vec. + (TARGET_LITTLE_NAME): Defined to "elf32-i860-little". + (ELF_MAXPAGESIZE): Changed to 4096. + + * targets.c (bfd_elf32_i860_little_vec): Declaration of + new target. + (bfd_target_vector): Added bfd_elf32_i860_little_vec. + + * config.bfd (i860-stardent-sysv4*, i860-stardent-elf*): Added + config for little endian elf32 i860. + (targ_defvec): Define for the new config above + as "bfd_elf32_i860_little_vec". + (targ_selvecs): Define for the new config above + as "bfd_elf32_i860_vec bfd_elf32_i860_little_vec" + + * configure.in (bfd_elf32_i860_little_vec): Added recognition + of new target vec. + + * configure: Regenerated. + +2000-07-27 H.J. Lu + + * elflink.h (elf_merge_symbol): Take one more argument, + dt_needed, to indicate if the symbol comes from a DT_NEEDED + entry. Don't overide the existing weak definition if dt_needed + is true. + (elf_link_add_object_symbols): Pass dt_needed to + elf_merge_symbol (). + +2000-07-27 Nick Clifton + + * elflink.h (elf_link_size_reloc_section): Zeroes the section's + allocated contents. + +2000-07-25 Geoffrey Keating + + * configure.host (*-*-aix*): AIX has 'long long' always. + + * coff-rs6000.c (xcoff_write_one_armap_big): New procedure. + (xcoff_write_armap_big): Write both 32-bit and 64-bit armaps. + (xcoff_write_archive_contents_big): Don't update the offset + of the symbol table, xcoff_write_armap will do it. + +2000-07-23 Ulf Carlsson + + * elf32-mips.c (_bfd_mips_elf_check_relocs): Use abfd instead + of dynobj for SGI_COMPAT checks. + +2000-07-21 Michael Sokolov + + * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): New function. + * bfd-in.h (bfd_m68k_coff_create_embedded_relocs): Add declaration. + * bfd-in2.h: Regenerate. + +2000-07-21 Nick Clifton + + * elf32-mips.c (_bfd_mips_elf_check_relocs): Detect out of + range symbol indices in relocs and issue an error message. + +2000-07-20 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check + info->new_dtags when setting DT_FLAGS_1. It will only be set + by the new linker options. It shouldn't break anything. + +2000-07-20 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set DT_FLAGS_1 + only if info->new_dtags is true. + +2000-07-20 H.J. Lu + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set + DT_RUNPATH and DT_FLAGS only if info->new_dtags is true. + +2000-07-20 Hans-Peter Nilsson + + * Makefile.am (ALL_MACHINES): Add cpu-cris.lo. + (ALL_MACHINES_CFILES): Add cpu-cris.c. + (BFD32_BACKENDS): Add aout-cris.lo and elf32-cris.lo. + (BFD32_BACKENDS_CFILES): Add aout-cris.c and elf32-cris.c. + (cpu-cris.lo, aout-cris.lo, elf32-cris.lo): New rules. + * Makefile.in: Rebuild. + * aclocal.m4: Rebuild. + * aoutx.h (NAME(aout,machine_type)): Add case for bfd_arch_cris. + * archures.c (enum bfd_architecture): Add bfd_arch_cris. + (bfd_cris_arch): Declare. + (bfd_archures_list): Add bfd_cris_arch. + * bfd-in2.h: Rebuild. + * config.bfd: (cris-*-*): New target. + * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vectors. + * configure: Rebuild. + * elf.c (prep_headers): Add bfd_arch_cris. + * libbfd.h: Rebuild. + * libaout.h (enum machine_type): Add M_CRIS. + * reloc.c: Add CRIS relocations. + * targets.c (bfd_elf32_cris_vec, cris_aout_vec): Declare. + (bfd_target_vect): Add bfd_elf32_cris_vec and cris_aout_vec. + * cpu-cris.c, aout-cris.c, elf32-cris.c: New files. + * po/POTFILES.in, po/bfd.pot: Regenerate. + +2000-07-19 H.J. Lu + + * elf32-arm.h (elf32_arm_size_dynamic_sections): Also set + DF_TEXTREL if DT_TEXTREL is set. + * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise. + * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise. + * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise. + * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Likewise. + * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise. + * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise. + * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise. + * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise. + * elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise. + * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise. + + * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also + set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if + DT_RPATH is set. + Set the DT_FLAGS and DT_FLAGS_1 entries if necessary. + +2000-07-19 H.J. Lu + + * bfd-in.h (bfd_elf_set_dt_needed_soname): New. + * bfd-in2.h: Rebuild. + + * elf-bfd.h (elf_obj_tdata): Add dt_soname. + (elf_dt_soname): New. + + * elf.c (bfd_elf_set_dt_needed_soname): New. + + * elflink.h (elf_link_add_object_symbols): Add the DT_NEEDED + entry if the shared object loaded by DT_NEEDED is used to + resolve the reference in a regular object. + +2000-07-19 H.J. Lu + + * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_CONFIG, + DT_DEPAUDIT and DT_AUDIT as strings. + +2000-07-19 Nick Clifton + + * format.c: Fix formatting. + +2000-07-19 H.J. Lu + + * elf.c (_bfd_elf_print_private_bfd_data): Fix DT_CHECKSUM. + +2000-07-19 H.J. Lu + + * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_BIND_NOW, + DT_INIT_ARRAY, DT_FINI_ARRAY, DT_INIT_ARRAYSZ, DT_FINI_ARRAYSZ, + DT_RUNPATH, DT_FLAGS, DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ, + DT_PLTPADSZ, DT_MOVEENT, DT_MOVESZ, DT_FEATURE, DT_POSFLAG_1, + DT_SYMINSZ, DT_SYMINENT, DT_CONFIG, DT_DEPAUDIT, DT_AUDIT, + DT_PLTPAD, DT_MOVETAB, DT_SYMINFO, DT_RELACOUNT, DT_RELCOUNT, + DT_FLAGS_1, DT_USED and DT_CHECKSUM. + +2000-07-18 Andrew Cagney + + * elf.c (bfd_elf_get_sign_extend_vma, bfd_elf_get_arch_size): Move + renamed functions from here... + (assign_section_numbers): Use renamed functions. + (prep_headers): Use renamed functions. + + * bfd.c (bfd_get_sign_extend_vma, bfd_get_arch_size): ...To here. + * bfd-in.h (bfd_get_sign_extend_vma, bfd_get_arch_size): Update. + * bfd-in2.h: Regenerate. + +2000-07-18 Ulf Carlsson + + * elf32-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Add + parenthesis in if statement. + +2000-07-17 Koundinya K + + Enable the support for Traditional MIPS. + * elf32-mips.c (IRIX_COMPAT): Recognize bfd_elf32_tradbigmips_vecand + return ict_none appropriately for traditional mips targets. + (STUB_LW): Change 0x8f998000 to 0x8f998010 for traditional mips. + (STUB_MOVE): Conditionalize for traditonal mips. + (STUB_LI16): Likewise. + (_bfd_mips_elf_modify_segment_map): Conditionalize to avoid making + room for RTPROC header. + (_bfd_mips_elf_modify_segment_map): For a normal mips executable set + the permission for the PT_DYNAMIC as read, write and execute. + (mips_elf_calculate_relocation): Check for the symbol _DYNAMIC_LINKING + for traditonal mips. + (_bfd_mips_elf_create_dynamic_sections): Add the symbol + _DYNAMIC_LINKING for traditonal mips. + (_bfd_mips_elf_create_dynamic_sections): Add the symbol __RLD_MAP + in case of traditonal mips. + (_bfd_mips_elf_adjust_dynamic_symbol): Create a stub only if a PLT + entry is required. For a function if PLT is not required then set the + corresponding hash table entry to 0. + (_bfd_mips_elf_size_dynamic_sections): Add DT_DEBUG entry for + traditonal mips. + (_bfd_mips_elf_finish_dynamic_symbol): for a undefined symbol in a + shared object set the value to 0. + (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol + _DYNAMIC_LINKING for traditonal mips. + (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol __RLD_MAP + for traditonal mips. + +2000-07-15 H.J. Lu + + * aoutx.h (translate_to_native_sym_flags): Handle BSF_LOCAL. + +2000-07-12 Charles Wilson + + * libbfd.c (bfd_seek): fix 'seek beyond EOF' error when writing + out a structure that is BFD_IN_MEMORY. + +2000-07-11 Alan Modra + + * elf64-hppa.c (get_dyn_name): Pass in section pointer instead of + bfd pointer. Print section id instead of bfd pointer for local + syms. Prefix addend with `+' for global syms as well as local. + Correct calculation of name component lengths. + (elf64_hppa_check_relocs): Update call to get_dyn_name. + + From David Huggins-Daines + * elf-hppa.h (elf_hppa_relocate_section): Update calls here too. + * elf64-hppa.c (elf64_hppa_check_relocs): Fix some warnings. + (elf64_hppa_modify_segment_map): Likewise. + +2000-07-11 Andrew Cagney + + * elf.c (bfd_elf_get_sign_extend_vma): Return tendency of VMA + addresses to be "naturally" sign extended. Return -1 if unknown. + * bfd-in.h (bfd_elf_get_sign_extend_vma): Add declaration. + * bfd-in2.h: Regenerate. + +2000-07-11 Andrew Cagney + + * ecoffswap.h (ecoff_get_off, ecoff_put_off): Add ECOFF_SIGNED_32 + and ECOF_SIGNED_64 to list ways to extract an offset. + (ecoff_swap_fdr_in, ecoff_swap_fdr_out, ecoff_swap_pdr_in, + ecoff_swap_pdr_out, ecoff_swap_ext_in, ecoff_swap_ext_out): + Update. + * elf64-mips.c (ECOFF_SIGNED_64): Define instead of ECOFF_64. + * elf32-mips.c (ECOFF_SIGNED_32): Define instead of ECOFF_32. + +2000-07-11 Andrew Cagney + + * elfcode.h (elf_object_p): Use bfd_set_start_address and not + bfd_get_start_address. + (elf_swap_ehdr_in): Sign extend e_entry when applicable. + (elf_swap_ehdr_out): Ditto. + +2000-07-10 Alexander Aganichev + + * archures.c (bfd_default_scan): Add set of bfd_mach_ cases for + compatibility with older binutils. + +2000-07-10 Alan Modra + + * section.c (bfd_make_section_anyway): Start section_id at 0x10. + (STD_SECTION): Avoid negative ids, instead use 0 to 3. + + From Ryan Bradetich + * dwarf1.c (parse_die): Cure signed/unsigned char warnings. + (parse_line_table): Ditto. + (_bfd_dwarf1_find_nearest_line): Ditto. + * syms.c (cmpindexentry): Remove extra `*' from params. + +2000-07-09 Koundinya K + + * elf32-mips.c (sort_dynamic_relocs): New Function. + (_bfd_mips_elf_finish_dynamic_sections): Call sort_dynamic_relocs + via qsort to sort the dynamic relocations in increasing r_symndx + value. + +2000-07-09 Alan Modra + + * elf64-hppa.c (elf64_hppa_dyn_hash_table_init): Add + ATTRIBUTE_UNUSED to unused args. + (get_opd): Likewise. + (get_plt): Likewise. + (get_dlt): Likewise. + (get_stub): Likewise. + (elf64_hppa_adjust_dynamic_symbol): Likewise. + (elf64_hppa_link_output_symbol_hook): Likewise. + (elf64_hppa_check_relocs): Delete unused var. + (elf64_hppa_size_dynamic_sections): Likewise. + (elf64_hppa_finalize_opd): Likewise. + (elf64_hppa_finalize_dynreloc): Likewise. + (elf64_hppa_modify_segment_map): Likewise. + (elf64_hppa_finish_dynamic_sections): Likewise. + + * elf-hppa.h (elf_hppa_final_write_processing): Add + ATTRIBUTE_UNUSED to unused args. + (elf_hppa_final_link_relocate): Likewise. + (elf_hppa_record_segment_addrs): Add paretheses. + (elf_hppa_relocate_section): Constify dyn_name. + + From David Huggins-Daines + * config.bfd: Add hppa*64*-*-linux-gnu 64-bit target, and + rearrange case statement so that it gets preferred to 32-bit ones. + + * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Use + asection->id instead of address of asection structure. + (elf32_hppa_size_stubs): Likewise. + + * elf32-hppa.c (elf32_hppa_size_stubs): Use just one stub section + for .init* and .fini*. + + * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Mask pointers + and addends used in stub names to 32 bits. + (elf32_hppa_size_stubs): Likewise. + + * elf-hppa.h (elf_hppa_final_link_relocate): Don't sum addend + twice for R_PARISC_GPREL64. Use bfd_put_32 for R_PARISC_PCREL32, + not bfd_put_64. Fix minor comment typo and formatting. + + Changes to create multiple linker stubs, positioned immediately + before the section where they are required. + * elf32-hppa.c: Don't include hppa_stubs.h. + (elf32_hppa_stub_hash_entry): Add a pointer to the stub section. + (elf32_hppa_stub_hash_table): Delete. + (elf32_hppa_link_hash_entry): Delete. + (elf32_hppa_link_hash_table): Use plain bfd_hash_table for + stub_hash_table, and store the struct here rather than a pointer. + Delete output_symbol_count. Add offset array. Change + global_value to a bfd_vma. + (elf32_hppa_stub_hash_lookup): Use table instead of table->root. + (elf32_hppa_stub_hash_traverse): Delete. + (elf32_hppa_name_of_stub): Delete. + (elf32_hppa_link_hash_lookup): Delete. + (elf32_hppa_link_hash_traverse): Delete. + (elf32_hppa_stub_hash_table_init): Delete. + (elf32_hppa_size_of_stub): Pass input section and offset rather + than location and calculate location here. Don't pass name as all + stubs are now the same size. + (elf32_hppa_stub_hash_newfunc): Init new fields. + (elf32_hppa_link_hash_table_create): Likewise, and stub_hash_table + too. + (elf32_hppa_bfd_final_link_relocate): Cast enums to int before + comparing against ints. Rewrite stub handling code. + (elf32_hppa_relocate_section): Make r_type and r_symndx unsigned. + Case enums to int before comparing against ints. Remove + bfd_reloc_dangerous case. + (elf32_hppa_build_one_stub): Rewrite. + (elf32_hppa_size_one_stub): New function. + (elf32_hppa_build_stubs): Rewrite. + (elf32_hppa_size_stubs): Pass in linker call-back functions. + Rewrite stub-handling specific code. + + * elf32-hppa.h (elf32_hppa_size_stubs): Update prototype. + + * elf64-hppa.c (elf64_hppa_dyn_hash_entry): Fix a comment typo. + + * hppa_stubs.h: Delete. + * Makefile.am (SOURCE_HFILES): Remove hppa_stubs.h + (elf32-hppa.lo): Remove hppa_stubs.h from dependencies. + * Makefile.in: Regenerate. + + * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle e_nlsel and + e_nlrsel. + + * libhppa.h (hppa_field_adjust): Correct e_nsel case. + + * elf32-hppa.c (elf32_hppa_relocate_section): Mention the offset + and section name for bfd_reloc_notsupported error message. + (elf32_hppa_bfd_final_link_relocate): Print reasons for returning + bfd_reloc_notsupported. + (elf32_hppa_relocate_section): Add ATTRIBUTE_UNUSED to output_bfd. + + * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Handle + undefined weak symbols for all relocs. + (elf32_hppa_size_of_stub): Adjust calculation by 8 since branch + offsets are relative to one past the delay slot. + (elf32_hppa_size_stubs): Account for reloc addend when calculating + branch destination. Put addend into stub name too. + (elf32_hppa_bfd_final_link_relocate): Account for reloc addend and + adjust by 8 when deciding whether a linker stub is needed. Put + addend into stub name as for above. + + * elf32-hppa.c (hppa_elf_relocate_insn): Change signed/unsigned on + various args and vars. + (elf32_hppa_bfd_final_link_relocate): Here too. + (elf32_hppa_size_stubs): Rename index -> indx. Use e_indx for + inner block var to avoid shadowing. + + * elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Make `field' arg + unsigned. + * elf64-hppa.h (_bfd_elf64_hppa_gen_reloc_type): Ditto. + * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Ditto. + (elf_hppa_fake_sections): Rename local var to avoid shadowing. + + * libhppa.h: Change practically all unsigned ints to plain ints. + Remove tests on gcc version. Instead use ATTRIBUTE_UNUSED for + prototypes. + + From Ryan Bradetich + * libhppa.h (hppa_opcode_type): New enum to replace #define's. + * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Modify to + suit above. + From David Huggins-Daines + * elf-hppa.h (elf_hppa_relocate_insn): Update the opcode constants + to the new OP_* ones. + + * elf32-hppa.c (elf32_hppa_size_stubs): Consolidate freeing on + error exit. Bail out earlier on plabel relocs that we aren't + interested in. Don't tell elf32_hppa_stub_hash_lookup to copy + string, and then don't free our copy. + (elf32_hppa_build_one_stub): Make insn unsigned int. + + * libhppa.h (bfd_hppa_insn2fmt): 22 bit branches are only + available with BL, not BE and BLE. + + * elf32-hppa.c (hppa_elf_relocate_insn): Add some more example + code for elf arg relocs. + (elf32_hppa_bfd_final_link_relocate): Replace boolean is_local + argument with elf_link_hash_entry h. Handle undefined weak + symbols. Move $global$ lookup from here... + (elf32_hppa_relocate_section): ...to here. Return correct error + message for non-handled relocs. + (elf32_hppa_size_of_stub): Correctly test branch range. Previous + wrong test was -0x3ffff to +0x40000. + + * elf-hppa.h (elf_hppa_final_link_relocate): R_PARISC_DIR17R, + R_PARISC_DIR17F, and R_PARISC_DIR21L are for absolute branches; + Handle them as such. + (elf_hppa_relocate_insn): Fix a typo. + + * libhppa.h (GET_FIELD, GET_BIT, MASK, CATENATE, ELEVEN): Delete. + (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a, + assemble_17, assemble_21): Delete. + Supply defines for all 64 possible opcodes. + (bfd_hppa_insn2fmt): Add bfd argument, and use to select wide mode + formats. Handle COMICLR. + (hppa_rebuild_insn): Delete bfd argument. Handle formats 10, -11, + -10, -16, 16, 22. + + * elf32-hppa.c (hppa_elf_relocate_insn): Complete rewrite. + (elf32_hppa_bfd_final_link_relocate): Major rewrite. + (elf32_hppa_build_one_stub): Modify hppa_elf_relocate_insn calls + to suit. + (elf32_hppa_size_stubs): Don't free stub_name twice. Read in all + the local syms - did this code get deleted accidentally? Ignore + undefined and undefweak syms. + + * elf-hppa.h (elf_hppa_final_link): Move hppa_info to outermost + block. Use it instead of elf64_hppa_hash_table (info). + (elf_hppa_final_link_relocate): Use hppa_info instead of + elf64_hppa_hash_table (info). + + * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16, + re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn. + (hppa_rebuild_insn): Mask immediate bits here instead. + * elf-hppa.h (elf_hppa_relocate_insn): Mask here too. + +2000-07-08 Alan Modra + + * section.c (struct sec): Add id field. Tidy comment formatting. + (bfd_make_section_anyway): Set id. + (STD_SECTION): Init id too. + Change CONST to const throughout. + * archures.c (bfd_arch_info): Tidy comment. + (bfd_arch_list): Change a CONST to const. + * libbfd-in.h: Tidy comments and replace CONST with const. + * elf-bfd.h: Likewise. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + * libcoff.h: Regenerate. + +2000-07-07 DJ Delorie + + * archive.c (_bfd_write_archive_contents): Add an informative + comment. + +2000-07-06 Kazu Hirata + + * srec.c: Fix formatting. + +2000-06-05 DJ Delorie + + * MAINTAINERS: new + +2000-07-04 Alexandre Oliva + + * coff-arm.c (coff_arm_relocate_section): Do not ignore the symbol + value of PC-relative offsets. + +2000-07-03 Jim Wilson + + * elf64-alpha.c (alpha_elf_size_info): New. + (elf_backend_size_info): Define to alpha_elf_size_info. + * elfcode.h (elf_size_info): Change hash bucket size to 4. + +2000-07-03 Ulf Carlsson + + * elf32-mips.c: Include elf32-target.h again for the traditional + MIPS targets. + +2000-07-03 Marek Michalkiewicz + + * elf32-avr.c (bfd_elf32_bfd_reloc_type_lookup): + Add ATTRIBUTE_UNUSED to unused arguments to avoid warnings. + (avr_info_to_howto_rela): Likewise. + (elf32_avr_gc_mark_hook): Likewise. + (elf32_avr_gc_sweep_hook): Likewise. + (elf32_avr_relocate_section): Likewise. + +2000-07-03 Mark Elbrecht + + * cofflink.c (_bfd_coff_write_global_sym): Turn a weak symbol into + an external symbol for a non-shared, non-relocatable link. + +2000-07-03 Nick Clifton + + * cofflink.c (IS_EXTERNAL): New macro: Return true if the symbol + is an external symbol. + (IS_WEAK_EXTERNAL): New macro: Return true if the symbol is a weak + external symbol. + +2000-07-03 Kazu Hirata + + * reloc16.c: Fix formatting. + +2000-07-01 Koundinya K + + * config.bfd: Change targ_defvec and targ_selvecs for mips*-*-sysv4* + to add a new target for traditional mips i.e + bfd_elf32_tradbigmips_vec and bfd_elf32_tradlittlemips_vec. + * configure.in: Likewise. + * configure: Rebuild. + * targets.c (bfd_elf32_tradbigmips_vec): Declare and put in + bfd_target_vector. + (bfd_elf32_tradlittlemips_vec): Likewise. + * elfxx-target.h: Add macro INCLUDED_TARGET_FILE which is more a test + to see that elfNN_bed does not get redefined even if the target file + is included twice for a chip. See elf32-mips.c. + +2000-07-01 Alan Modra + + * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed + (CLEANFILES): Add DEPA. + * Makefile.in: Regenerate. + +2000-06-30 DJ Delorie + + * peicode.h (coff_swap_filehdr_in): can't use e_magic because we + can't assume the PE header is at 0x80. + +2000-06-29 Mark Elbrecht + + * syms.c (_bfd_stab_section_find_nearest_line): Use IS_ABSOLUTE_PATH. + +2000-06-28 Mark Elbrecht + + * go32stub.h: Update stub. + +2000-06-26 Marek Michalkiewicz + + * archures.c (bfd_mach_avr5): Define. + * bfd-in2.h (bfd_mach_avr5): Define. + * cpu-avr.c (arch_info_struct): Rename bfd_mach_avr4 to + bfd_mach_avr5, add bfd_mach_avr4. Update comments. + (compatible): Update comment. Add missing test. + * elf32-avr.c (avr_final_link_relocate): Support 8K wrap + for avr2 and avr4. Simplify 8K wrap code. + (bfd_elf_avr_final_write_processing): Recognize bfd_mach_avr5. + (elf32_avr_object_p): Recognize E_AVR_MACH_AVR5. + +2000-06-26 Kazu Hirata + + * coff-h8300.c: Fix formatting. + * cpu-h8300.c: Likewise. + +2000-06-24 Alexandre Oliva + + * elf32-arm.h (elf32_arm_final_link_relocate): Print `(local)' + for local symbols whose names are unknown. + +2000-06-22 Alan Modra + + * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we + find one. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2000-06-20 H.J. Lu + + * Makefile.am: Rebuild dependency. + * Makefile.in: Rebuild. + +2000-06-20 Maciej W. Rozycki + + * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): New function. + (elf_backend_copy_indirect_symbol): Map to the new function. + +2000-06-20 Alan Modra + + * archive.c (normalize): Correct pointer comparison when checking + for backslashes. + (bfd_bsd_truncate_arname): Likewise. + (bfd_gnu_truncate_arname): Likewise. + +2000-06-20 Ulf Carlsson + + * elf-bfd.h (struct elf_obj_tdata): Define per BFD Irix 5 virtual + sections elf_{text,data}_{section,symbol}. + * elf32-mips.c: mips_elf_{text,data}_{section,symbol}{,_ptr}: Remove. + (_bfd_mips_elf_hide_symbol): New function. + (elf_backend_hide_symbol): Map to the new function. + (_bfd_mips_elf_add_symbol_hook): Change to use new per BFD + definitions of mips_elf_{text,data}_{section,symbol}. + (mips_elf_local_relocation_p): Try to find the direct symbol + based on new check_forced argument. + (mips_elf_calculate_relocation): Use new version of + mips_elf_local_relocation_p. + (mips_elf_relocate_section): Likewise. + (_bfd_mips_elf_relocate_section): Likewise. + (mips_elf_sort_hash_table): Only assert that have enough GOT + space. + (mips_elf_got16_entry): Match all 32 bits to the existing GOT + entry if the relocation based on the new external argument. + (mips_elf_create_dynamic_relocation): Assert that we have a + section contents allocated where we can swap out the dynamic + relocations. + (mips_elf_calculate_relocation): Find the real hash-table entry + correctly by using h->root.root.type. Only create a dynamic + relocation entry if the symbol is defined in a shared library. + Create an external GOT entry for the GOT16 relocation if the + symbol was forced local. + (_bfd_mips_elf_finish_dynamic_symbol): Don't assert there is a + dynamic index if the symbol was forced local. + +2000-06-20 Maciej W. Rozycki + + * elf32-mips.c: Fix typos in comments. + +2000-06-19 Mark Kettenis + + * rs6000-core.c: Wrap definition of `union VmInfo' within #ifdef + CORE_VERSION_1. + +2000-06-18 Stephane Carrez + + * Makefile.in, bfd-in2.h, libbfd.h, configure: Rebuild. + * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES, BFD32_BACKENDS, + BFD32_BACKENDS_CFILES): Add 68hc12, 68hc11 files. + * configure.in (bfd_elf32_m68hc12_vec): Recognize. + (bfd_elf32_m68hc11_vec): Likewise. + * config.bfd (targ_cpu): Recognize 68hc12 and 68hc11. + Supports 68hc11 & 68hc12 at the same time. + * targets.c (bfd_elf32_m68hc12_vec): Declare and put in + bfd_target_vector. + (bfd_elf32_m68hc11_vec): Likewise. + * elf.c (prep_headers): Recognize bfd_arch_m68hc12 and 68hc11. + * archures.c (bfd_m68hc12_arch): Define and register in global list + (bfd_m68hc11_arch): Likewise. + * reloc.c (BFD_RELOC_M68HC11_HI8, BFD_RELOC_M68HC11_LO8, + BFD_RELOC_M68HC11_3B): Define. + * cpu-m68hc12.c, elf32-m68hc12.c: New files for 68hc12 support. + * cpu-m68hc11.c, elf32-m68hc11.c: New files for 68hc11 support. + +2000-06-18 Ulf Carlsson + + * elf_bfd.h (struct elf_backend_data): Add info argument to + elf_backend_hide_symbol. + (_bfd_elf_link_hash_hide_symbol): Likewise. + * elf.c (_bfd_elf_link_hash_hide_symbol): Likewise. + * elf64-ia64.c (elf64_ia64_hash_hide_symbol): Likewise. + * elflink.h (elf_link_add_object_symbols): Likewise. + (elf_link_assign_sym_version): Likewise. + +2000-06-18 H.J. Lu + + * coff-i386.c (coff_i386_reloc): Don't return in case of + output_bfd == (bfd *) NULL if COFF_WITH_PE is defined. + Compensate PE relocations when linking with non-PE object + files to generate a non-PE executable. + +2000-06-17 Ulf Carlsson + + * elf32-mips.c (mips_elf_calculate_relocation): Explicitly write + GOT entries if we're doing a static link or -Bsymbolic link. + +2000-06-15 Ulf Carlsson + + * elflink.h (elf_link_adjust_relocs): Check for and call backend + specifific swap_reloc_{in,out} and swap_reloca_{in,out} if + available. + (elf_link_output_relocs): Likewise. + (elf_reloc_link_order): Likewise. + +2000-06-16 Nicholas Duffek + + * archures.c (enum bfd_architecture): #define constants for + PowerPc and RS6000 machine numbers. + * bfd-in2.h: Regenerate. + * coffcode.h (coff_set_arch_mach_hook): #ifdef XCOFF64, set arch + to bfd_arch_powerpc instead of bfd_arch_rs6000. Refer to PowerPc + and RS6000 machine numbers using #defined constants from + archures.c. + * cpu-powerpc.c (arch_info_struct): Refer to PowerPc and RS6000 + machine numbers using #defined constants from archures.c. Add + entries for EC603e, 630, A35, RS64II, RS64III, 7400. Specify + 64-bit words in 620 entry. + * cpu-rs6000.c (arch_info_struct): Create with entries for RS1, + RSC, and RS2. + (bfd_rs6000_arch): Change default machine to 0 (bfd_mach_rs6k). + +2000-06-16 Nicholas Duffek + + * coffcode.h (coff_mkobject_hook): Set xcoff_tdata.xcoff64. + * libcoff-in.h (struct xcoff_tdata): Define xcoff64 field. + * libcoff.h (struct xcoff_tdata): Define xcoff64 field. + +2000-06-16 Nicholas Duffek + + * bfd-in.h (bfd_family_coff): Define. + * bfd-in2.h: Regenerate. + * coffgen.c (coff_count_linenumbers, coff_symbol_from, + coff_find_nearest_line): Check COFFness using bfd_family_coff() + instead of bfd_target_coff_flavour. + * cofflink.c (_bfd_coff_final_link): Likewise. + * cpu-ns32k.c (do_ns32k_reloc): Don't strcmp() target name to + exclude XCOFF files. + * reloc.c (bfd_perform_relocation, bfd_install_relocation): + Likewise. + * targets.c (enum bfd_flavour): Add bfd_target_xcoff_flavour. + * xcoff-target.h (TARGET_SYM): Use bfd_target_xcoff_flavour. + * xcofflink.c (XCOFF_XVECP): Delete. + (bfd_xcoff_link_record_set, bfd_xcoff_import_symbol, + bfd_xcoff_export_symbol, bfd_xcoff_link_count_reloc, + bfd_xcoff_record_link_assignment, + bfd_xcoff_size_dynamic_sections): Replace XCOFF_XVECP() with + check for bfd_target_xcoff_flavour. + +2000-06-16 Nicholas Duffek + + * rs6000-core.c: Support 64-bit core files, support pre-4.3 core + files on AIX 4.3. + (read_hdr): New function. + (rs6000coff_core_p): Store mstsave or __context64 struct instead + of trying to extract individual registers. Set abfd->arch_info + to match the architecture that created the core file. + (rs6000coff_get_section_contents): Delete. + * xcoff-target.h (rs6000coff_get_section_contents): Delete. + +2000-06-14 H.J. Lu + + * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_rec) + is NULL. + +2000-06-13 H.J. Lu + + * configure: Regenerate. + +2000-06-13 J"orn Rennecke + + * peicode.h (pe_ILF_object_p): Use TARGET_LITTLE_SYM instead of + armpei_little_vec. + +2000-06-08 David O'Brien + + * configure.in (VERSION): Update to show this is the CVS mainline. + +2000-06-07 Alan Modra + + * elf32-d10v.c: Include elf/d10v.h + (enum reloc_type): Delete. + * elf32-d30v.c: Include elf/d30v.h + (enum reloc_type): Delete. + + * Makefile.am: Run "make dep-am" to regenerate dependencies. + * Makefile.in: Regenerate. + + * elf32-i386.c (elf_howto_table): Remove EMPTY_HOWTOs. + (elf32_i386_vtinherit_howto, elf32_i386_vtentry_howto): Delete and + move HOWTOs into elf_howto_table. + (R_386_standard, R_386_ext_offset): Define. + (R_386_ext, R_386_vt_offset, R_386_vt): Define. + (elf_i386_reloc_type_lookup): Modify calculation of index into + elf_howto_table since we've removed the padding. + (elf_i386_info_to_howto_rel): Likewise. + (elf_i386_relocate_section): Likewise. + +2000-06-06 Michael Snyder + + * elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t. + +2000-06-05 H.J. Lu + + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag + an error when seeing an undefined symbol with hidden/internal + attribute. It is handled in *_relocate_section (). + +2000-06-05 H.J. Lu + + * elflink.h (elf_fix_symbol_flags): Follow the link for the + indirect symbol for the ELF_LINK_NON_ELF bit. + (elf_link_output_extsym): Don't output the indirect symbol even + if the ELF_LINK_NON_ELF bit is set. + +2000-06-01 J.T. Conklin + + * config.bfd (i[3456]86-*-netbsdelf*): New target. + (i[3456]86-*-netbsdaout*): New target. + (i[3456]86-*-netbsd*): Add bfd_elf32_i386_vec to targ_selvecs. + (i[3456]86-*-openbsd*): Likewise. + +2000-05-30 Andrew Cagney + + * trad-core.c: From hpux-core.c, include or + when possible. + +2000-05-31 Ulrich Drepper + + * elf.c (_bfd_elf_slurp_version_tables): Correct reading of version + definitions. We must not assume they are sorted in the file + according to their index numbers. + +2000-05-31 Alan Modra + + * elf-hppa.h: (elf_hppa_final_link_relocate): Use e_rsel field + selector for R_PARISC_PCREL17R. R_PARISC_DIR17R and + R_PARISC_DIR17F are for absolute branches; Handle them as such. + +2000-05-30 Nick Clifton + + * cpu-i960.c (scan_960_mach): Accept 80960KA, 80960KB, + 80960CA, 80960MC as valid machine names. + +2000-05-30 H.J. Lu + + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the + visibility bits if the symbol is undefined. Correctly handle + weak undefined symbols with hidden and internal attributes. + + * elflink.h (elf_link_add_object_symbols): Always turn the + symbol into local if it has the hidden or internal attribute. + +2000-05-29 Philip Blundell + + * ppcboot.c: Add packed attribute if compiling with GCC. + +2000-05-29 Anatoly Vorobey + + * elf.c (_bfd_elf_link_hash_table_init): Initialize dynlocal. + +2000-05-26 Michael Snyder + + * elf.c (elfcore_grok_prstatus, elfcore_grok_pstatus, + elfcore_grok_psinfo): Add code to allow debugging a 32-bit + corefile on a 64-bit (Sparc Solaris) host. Also clean up + a few old comments. + +2000-05-26 Alan Modra + + * Makefile.am: Update dependencies with "make dep-am" + * Makefile.in: Regenerate. + + * sysdep.h (gettext, dgettext, dcgettext, textdomain, + bindtextdomain): Replace defines with those from intl/libgettext.h + to quieten gcc warnings. + +2000-05-26 Eli Zaretskii + + * aoutx.h (find_nearest_line): Use IS_ABSOLUTE_PATH. + + * archive.c (normalize, bfd_bsd_truncate_arname, + bfd_gnu_truncate_arname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support + file names with backslashes. + + * cache.c (bfd_open_file) [__MSDOS__]: Don't unlink the file + before opening it. + + * sysdep.h: Include filenames.h. + +2000-05-26 Alan Modra + + * opncls.c (bfd_close_all_done): Mask file perms with 0777 not 0x777. + +2000-05-26 Jakub Jelinek + + * elf64-sparc.c (sparc64_elf_relax_section): New. + (sparc64_elf_relocate_section): Optimize tail call into branch always + if possible. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + (elf32_sparc_relax_section): New. + +2000-05-26 Jakub Jelinek + + * elf64-sparc.c: Add ATTRIBUTE_UNUSED to unused function parameters. + Remove unusued variables. + (sparc64_elf_relocate_section): Change r_symndx type to unsigned long. + (sparc64_elf_merge_private_bfd_data): Fix shared library case from + previous fix, so that shared libs really don't influence targets + extension mask and memory model. + +2000-05-23 H.J. Lu + + * elf64-alpha.c (elf64_alpha_relocate_section): Check + h->root.other not h->other. + * elf32-mips.c (mips_elf_calculate_relocation): Likewise. + + * elf32-ppc.c (ppc_elf_relocate_section): Fix a typo. + +2000-05-23 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Don't allow the + undefined symbol with the non-default visibility attributes. + * elf-hppa.h (elf_hppa_relocate_section): Likewise. + * elf32-arm.h (elf32_arm_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-mips.c (mips_elf_calculate_relocation): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-ia64.c (elf64_ia64_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + +2000-05-22 Richard Henderson + + * elf64-ia64.c (ia64_howto_table): Add PCREL60B, PCREL21BI, + PCREL22, PCREL64I. Zero size of special relocs. + (elf64_ia64_reloc_type_lookup): Likewise. + (USE_BRL, oor_brl, oor_ip): New. + (elf64_ia64_relax_section): New. + (elf64_ia64_check_relocs): Handle PCREL60B, PCREL22, PCREL64I. + (elf64_ia64_install_value): Likewise, plus PCREL21BI. + (elf64_ia64_relocate_section): Likewise. + (bfd_elf64_bfd_relax_section): New. + * reloc.c (BFD_RELOC_IA64_PCREL21BI): New. + (BFD_RELOC_IA64_{PCREL22,PCREL60B,PCREL64I}): New. + * bfd-in2.h, libbfd.h: Regenerate. + +2000-05-22 Nick Clifton + + * configure.in : Add peigen.lo to MIPS PE targets. + * configure: Regenerate. + +2000-05-22 Momchil Velikov + + * libbfd.c (_bfd_generic_verify_endian_match): Compare endianess + only if it is known for both input and output bfds. Separate + error message strings as in some languages, it may be necessary + to change more than one place in the string to change between + 'big' and 'little'. + + * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove inline + endianess checks, call _bfd_generic_verify_endian_match() instead. + + * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise. + + * elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise. + + * elf32-arm.h (elf32_arm_merge_private_bfd_data): Likewise. Verify + endianess before checking bfd flavours. + +2000-05-22 H.J. Lu + + * elflink.h (elf_link_output_extsym): Clear the visibility + field for symbols not defined locally. + +2000-05-18 Alan Modra + + * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16, + re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn. + (hppa_rebuild_insn): Mask immediate bits here instead. + * elf-hppa.h (elf_hppa_relocate_insn): Mask here too. + +2000-05-18 Momchil Velikov + + * elflink.h (elf_bfd_final_link, elf_link_input_bfd): When emiting + relocs for an executable, ensure that they are virtual addresses. + +2000-05-18 Jeffrey A Law (law@cygnus.com) + + * config.bfd (hppa*64*-*-hpux11*): New target triplet. + +2000-05-17 S. Bharadwaj Yadavalli + Rick Gorton + + * elflink.h: Add emitrelocations support: when enabled, relocation + information and relocation sections are put into final output + executables. If the emitrelocations flag is set, do the following: + (elf_bfd_final_link): Emit relocation sections. + (elf_link_input_bfd): Compute relocation section contents. + (elf_gc_sections): Don't clean relocation sections. + +2000-05-16 Catherine Moore + + * som.c (som_decode_symclass): Recognize weak symbols. + +2000-05-16 Szabolcs Szakacsits + + * peigen.c (pe_print_idata): Undo part of 2000-05-12 change that + read idata section only from dataoff. + (pe_print_edata): Correctly check for valid eat_member. + +2000-05-16 J"orn Rennecke + + * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8. + +2000-05-14 Philip Blundell + + * config.bfd (armeb-*-elf, arm*b-*-linux-gnu*): New targets. + +2000-05-12 Alan Modra + + * targets.c (bfd_target_vector): #ifdef BFD64 rs6000coff64_vec + + * peigen.c (pe_print_idata): Look for .idata section and print + info even if data directory has zero entries. Read idata section + starting from dataoff, and adjust all data offsets to suit. Cast + all bfd_vma vars to unsigned long before passing to fprintf. + * peigen.c (pe_print_edata): Similarly, look for .edata section + and print info even if data directory has zero entries. Cast + all bfd_vma vars to unsigned long before passing to fprintf. + + From Szabolcs Szakacsits + * peigen.c (pe_print_idata): Use bfd_section_size rather than data + directory size which may be bogus. + * peigen.c (pe_print_edata): Similarly. + +2000-05-09 Alan Modra + + * elf.c (bfd_section_from_shdr): Don't set use_rela_p if rela + section is empty. + (copy_private_bfd_data): Allow for space possibly taken up by elf + headers when calculating segment physical address from lma. + +2000-05-08 Alan Modra + + * versados.c (versados_scan): Init stringlen and pass_2_done. + + * trad-core.c (trad_unix_core_file_p): Return + bfd_error_wrong_format rather than bfd_error_file_truncated. + + * peigen.c (_bfd_pei_swap_aouthdr_out): Pass ImageBase to + add_data_entry. DataDirectory virtual address is relative. + (pe_print_idata): Account for relative DataDirectory virtual + addresses. Don't trash datasize inside POWERPC_LE_PE code. + (pe_print_edata): Similarly. + + From Szabolcs Szakacsits + * peigen.c (dir_names): Add Delay Import Directory. + (pe_print_idata): Always search for bfd section containing + idata address rather than looking up section name. Print this + section name rather than .idata. + (pe_print_edata): Similarly. Also print some fields as %08lx. + (_bfd_pe_print_private_bfd_data_common): Print Reserved1 field as + Win32Version. + +2000-05-05 Clinton Popetz + + * xcoff.h: Rename to xcoff-target.h + * Makefile.am: Change all instances of xcoff.h to xcoff-target.h + * coff-rs6000.c: Ditto. + * coff64-rs6000.c: Ditto. + * coff-pmac.c: Ditto. + * Makefile.in: Regenerate. + +2000-05-05 Clinton Popetz + + * coffcode.h (coff_set_arch_mach_hook, coff_set_flags): + Change U802TOC64MAGIC to U803XTOCMAGIC. + +2000-05-04 Michael Snyder + + * elf.c (bfd_elf_get_arch_size): New function, return 32 | 64 | -1. + * bfd-in.h: Prototype bfd_elf_get_arch_size. + * bfd-in2.h: Prototype bfd_elf_get_arch_size. + +2000-05-04 Alan Modra + + * libhppa.h (HPPA_R_CONSTANT): Cast argument to bfd_signed_vma. + +2000-05-03 Martin v. Löwis + + * elflink.h (elf_link_add_object_symbols): Reset dynindx for + hidden and internal symbols. + (elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with + visibility. + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not + assign a PLT or GOT entry to symbols with hidden and + internal visibility. + +2000-05-03 Mark Elbrecht + + * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add entry for + the .bss section. + * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise. + +2000-05-02 H.J. Lu + + * elf.c (prep_headers): Use ELFOSABI_NONE instead of + ELFOSABI_SYSV. + +2000-05-02 Alan Modra + + * targets.c (bfd_target_vector): Restore bfd_elf32_hppa_vec. + * Makefile.am (BFD32_BACKENDS): Restore elf32-hppa.lo. Regenerate + dependencies. + * Makefile.in: Regenerate. + +2000-05-01 Jim Wilson + + * Makefile.am (BFD32_BACKENDS): Add efi-app-ia32.lo. + (BFD32_BACKENDS_CFILES): Add efi-app-ia32.c. + (BFD64_BACKENDS): Delete coff-ia64.lo. Add efi-app-ia64.lo. + (BFD64_BACKENDS_CFILES): Delete coff-ia64.c. Add efi-app-ia64.c. + * Makefile.in: Rebuild. + +2000-05-02 Alan Modra + + * config.bfd: Re-enable elf32-hppa. It now compiles, even if it + doesn't work very well. + + * elf-hppa.h (elf_hppa_internal_shdr): Define. + (elf_hppa_fake_sections): hdr is elf_hppa_internal_shdr. + Set hdr->s_type to 1 if ARCH_SIZE == 32. + (_bfd_elf_hppa_gen_reloc_type): Add prototype. + (elf_hppa_info_to_howto): Likewise. + (elf_hppa_info_to_howto_rel): Likewise. + (elf_hppa_reloc_type_lookup): Likewise. + (elf_hppa_is_local_label_name): Likewise. + (elf_hppa_fake_sections): Likewise. + (elf_hppa_final_write_processing): Likewise. + (elf_hppa_howto_table): Fully initialise all entries. + (_bfd_elf_hppa_gen_reloc_type): Add ATTRIBUTE_UNUSED to args. + (elf_hppa_info_to_howto): Likewise. + (elf_hppa_info_to_howto_rel): Likewise. + (elf_hppa_reloc_type_lookup): Likewise. + (elf_hppa_final_write_processing, elf_hppa_add_symbol_hook, + elf_hppa_unmark_useless_dynamic_symbols, + elf_hppa_remark_useless_dynamic_symbols, + elf_hppa_record_segment_addrs, elf_hppa_final_link, + elf_hppa_relocate_section, elf_hppa_final_link_relocate, + elf_hppa_relocate_insn): Compile only if ARCH_SIZE == 64 until + elf32-hppa.c mess is cleaned up. + (elf_hppa_final_link_relocate): Make insn and r_type unsigned + int. Delete r_field. In case R_PARISC_PCREL21L, don't set + r_field then call hppa_field_adjust inline func with variable + r_field arg, instead call hppa_field_adjust with fixed arg. + In case R_PARISC_PCREL22F, don't set r_field. + (elf_hppa_relocate_insn): Change args and return type to unsigned + int. Call re_assemble_* funcs to do the work. + + * elf32-hppa.c (hppa_elf_relocate_insn): Don't assume 32 bit when + sign extending. + + * libhppa.h (HPPA_R_CONSTANT): Don't assume 32 bit when sign + extending. + (sign_extend): Mask first before sign extending. + (low_sign_extend): Rewrite without condition expression. + (ones, dis_assemble_3, dis_assemble_12, dis_assemble_16, + dis_assemble_17, dis_assemble_21, dis_assemble_22): Delete. + (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a, + assemble_17, assemble_21, sign_unext, low_sign_unext): Return + result as function return value rather than through pointer arg. + Accept unsigned int args, and return unsigned int. + (re_assemble_3): New. Combines function of dis_assemble_3 with + re-assembly of opcode and immediate. + (re_assemble_12): Likewise. + (re_assemble_16): Likewise. + (re_assemble_17): Likewise. + (re_assemble_21): Likewise. + (re_assemble_22): Likewise. + (hppa_field_adjust): Rewrite and document, paying attention to + size of types and signed/unsigned issues. + (get_opcode): Shift before masking. + (FDLW): Rename to FLDW. + (bfd_hppa_insn2fmt): Change arg to unsigned int. Delete fmt. + (hppa_rebuild_insn): Change args and return value to unsigned + int. Make use of re_assemble_*. Correct case 11. + + * dep-in.sed: Handle ../opcodes/. + * Makefile.am (SOURCE_HFILES): Add elf-hppa.h, elf32-hppa.h, + elf64-hppa.h, hppa_stubs.h, xcoff.h. + (BFD32_BACKENDS_CFILES): Restore elf32-hppa.c. + Remove elf64-hppa.lo, cpu-ia64.lo, elf64-ia64.lo, elfarm-oabi.lo, + elfarm-nabi.lo dependencies outside of auto-dependency area. + Regenerate dependencies. + * Makefile.in: Regenerate. + + * configure.in (TRAD_HEADER): Test non-null before + AC_DEFINE_UNQUOTED. + * configure: Regenerate. + + * reloc.c: Fix mis-spelling in comment. + +2000-05-01 Alan Modra + + * coff-sh.c (bfd_coff_small_swap_table): Fix Fri Apr 28 change. + * vms.c (vms_openr_next_archived_file): Return NULL. + +2000-04-28 Clinton Popetz + + * coffcode.h Copy changes mistakenly done to libcoff.h in + 4/24/2000 patch. + +2000-04-29 Andreas Jaeger + + * libbfd-in.h: Correctly check GCC version. + * bfd-in.h: Likewise. + * libhppa.h: Likewise. + * libbfd.h: Regenerate. + * bfd-in2.h: Regenerate. + +2000-04-28 Clinton Popetz + + * Makefile.am (BFD64_BACKENDS, BFD64_BACKENDS_CFILES): Add + coffdu-rs6000.{lo,c}. + (coff-pmac.lo, coff-rs6000.lo, coff64-rs6000.lo): Add dependency + on xcoff.h + * Makefile.in: Regenerate. + * xcoff.h: New file. + * coff-pmac.c: Use xcoff.h instead of coff-rs6000.c. + * coff-rs6000.c: Move all declarations and defines that are + common to the xcoff backends into xcoff.h + * coff64-rs6000.c: Ditto, + +2000-04-28 Clinton Popetz + + * coff-mips.c (mips_ecoff_backend_data): Add initialization of + _bfd_coff_force_symnames in strings and + _bfd_coff_debug_string_prefix_length to their default values. + * coff-sh.c: (bfd_coff_small_swap_table): Ditto. + +2000-04-28 Clinton Popetz + + * coff-alpha.c (alpha_ecoff_backend_data): Add initialization of + _bfd_coff_force_symnames in strings and + _bfd_coff_debug_string_prefix_length to their default values. + +2000-04-27 Alan Modra + + * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return if dynobj NULL. + Check local_got_refcounts before dereferencing. + + * elf32-ppc.c (ppc_elf_relocate_section): Check splt != NULL + before deciding we don't need R_PPC_PLT32 relocation. + (ppc_elf_gc_sweep_hook): Check local_got_refcounts before + dereferencing. + + * elflink.h (elf_gc_common_finalize_got_offsets): Fix comment. + + * elf32-i386.c (elf_i386_check_relocs): Reference count .got and + .plt entries. + (elf_i386_gc_sweep_hook): Garbage collect .got and .plt entries. + (elf_i386_adjust_dynamic_symbol): Recognize unused .plt entries. + (elf_i386_relocate_section): Allow for .plt to go missing. + (elf_i386_finish_dynamic_symbol): Use same test to decide if we + can use a relative reloc for got as elf_i386_relocate_section. + (bfd_elf32_bfd_final_link): Define to use gc form of final link. + +2000-04-26 Clinton Popetz + + * config.bfd: Remove extraneous bfd_powerpc_64_arch. + +2000-04-24 Clinton Popetz + + * Makefile.am (coff64-rs6000.lo): New rule. + * Makefile.in: Regenerate. + * coff-rs6000.c (xcoff_mkobject, xcoff_copy_private_bfd_data, + xcoff_is_local_label_name, xcoff_rtype2howto, + xcoff_reloc_type_lookup, xcoff_slurp_armap, xcoff_archive_p, + xcoff_read_ar_hdr, xcoff_openr_next_archived_file, xcoff_write_armap, + xcoff_write_archive_contents): No longer static, and prefix with _bfd_. + (NO_COFF_SYMBOLS): Define. + (xcoff64_swap_sym_in, xcoff64_swap_sym_out, xcoff64_swap_aux_in, + xcoff64_swap_aux_out): New functions; handle xcoff symbol tables + internally. + (MINUS_ONE): New macro. + (xcoff_howto_tabl, xcoff_reloc_type_lookup): Add 64 bit POS + relocation. + (coff_SWAP_sym_in, coff_SWAP_sym_out, coff_SWAP_aux_in, + coff_SWAP_aux_out): Map to the new functions. + * coff64-rs6000.c: New file. + * libcoff.h (bfd_coff_backend_data): Add new fields + _bfd_coff_force_symnames_in_strings and + _bfd_coff_debug_string_prefix_length. + (bfd_coff_force_symnames_in_strings, + bfd_coff_debug_string_prefix_length): New macros for above fields. + * coffcode.h (coff_set_arch_mach_hook): Handle XCOFF64 magic. + Set machine to 620 for XCOFF64. Use bfd_coff_swap_sym_in instead + of using coff_swap_sym_in directly. + (FORCE_SYMNAMES_IN_STRINGS): New macro, defined for XCOFF64. + (coff_set_flags) Set magic for XCOFF64. + (coff_compute_section_file_positions): Add symbol name length to + string section length if bfd_coff_debug_string_prefix_length is + true. + (coff_write_object_contents): Don't do reloc overflow for XCOFF64. + (coff_slurp_line_table): Use bfd_coff_swap_lineno_in instead of + using coff_swap_lineno_in directly. + (bfd_coff_backend_data): Add _bfd_coff_force_symnames_in_strings + and _bfd_coff_debug_string_prefix_length fields. + * coffgen.c (coff_fix_symbol_name, coff_write_symbols): Force + symbol names into strings table when + bfd_coff_force_symnames_in_strings is true. + * coffswap.h (MAX_SCNHDR_NRELOC, MAX_SCNHDR_NLNNO, GET_RELOC_VADDR, + SET_RELOC_VADDR): New macros. + (coff_swap_reloc_in, coff_swap_reloc_out): Use above macros. + (coff_swap_aux_in, coff_swap_aux_out): Remove RS6000COFF_C + code. + (coff_swap_aouthdr_in, coff_swap_aouthdr_out): Handle XCOFF64 + changes within RS6000COFF_C specific code. + (coff_swap_scnhdr_out): Use PUT_SCNHDR_NLNNO, PUT_SCNHDR_NRELOC, + MAX_SCNHDR_NRELOC, and MAX_SCNHDR_NLNNO. + * reloc.c (bfd_perform_relocation, bfd_install_relocation): + Extend existing hack on target name. + * xcofflink.c (XCOFF_XVECP): Extend existing hack on + target name. + * coff-tic54x.c (ticof): Keep up to date with new fields + in bfd_coff_backend_data. + * config.bfd: Add bfd_powerpc_64_arch to targ_arch and define + targ_selvecs to include rs6000coff64_vec for rs6000. + * configure.in: Add rs6000coff64_vec case. + * cpu-powerpc.c: New bfd_arch_info_type. + +2000-04-24 Jeffrey A Law (law@cygnus.com) + + * config.bfd: Only disable elf32-hppa vectors, not all of the + BSD and OSF configuration support. Provide (disabled) clauses + for PA64 support. + * configure.in: Add clause for PA64 support. + * configure: Rebuilt. + + * targets.c (bfd_target_vector): Add bfd_elf64_hppa_vec. + (bfd_elf64_hppa_vec): Declare. + + * Makefile.am (BFD64_BACKENDS): Add elf64-hppa.lo + (BFD64_BACKENDS_CFILES): Add elf64-hppa.c + (elf64-hppa.lo): Add dependencies. + * Makefile.in: Rebuilt. + + * elf64-hppa.c, elf64-hppa.h: New files with PA64 support. + +2000-04-24 Jason Eckhardt + + * libhppa.h (dis_assemble_16): New function. + (pa_arch): Added pa20w element. + +2000-04-24 Ulrich Drepper + + * elf-bfd.h: Add prototypes for bfd_elf32_write_relocs, + bfd_elf32_slurp_reloc_table, bfd_elf64_write_relocs, and + bfd_elf64_slurp_reloc_table. + + * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): New + definitions to get external names. + (elf_write_relocs): Renamed from write_relocs and make global. + (elf_slurp_reloc_table): Make global. + (_bfd_elf,size_info): Use elf_write_relocs instead of write_relocs. + + * archive.c (hpux_uid_gid_encode): New function. + (bfd_ar_hdr_from_filesystem): Use it if HPUX_LARGE_AR_IDS is + defined and the ID is greater than 99999. + (bfd_generic_stat_arch_elt): If HPUX_LARGE_AR_IDS is defined decode + special uid/gid fields into 32 bit values. + +2000-04-21 Matthew Green + + * config.bfd: Add NetBSD/sparc64 support. + +2000-04-21 Richard Henderson + David Mosberger + Timothy Wall + Jim Wilson + + * Makefile.am (ALL_MACHINES): Add cpu-ia64.lo. + (ALL_MACHINES_CFILES): Add cpu-ia64.c. + (BFD64_BACKENDS): Add elf64-ia64.lo. + (BFD64_BACKENDS_CFILES): Add elf64-ia64.c. + (cpu-ia64.lo, elf64-ia64.lo): New rules. + * Makefile.in: Rebuild. + * archures.c (enum bfd_architecture): Add bfd_arch_ia64. + (bfd_ia64_arch): Declare. + (bfd_archures_list): Add bfd_ia64_arch. + * bfd-in2.h: Rebuild. + * config.bfd: (ia64*-*-linux-gnu*, ia64*-*-elf*): New targets. + * configure: Rebuild. + * configure.host: (ia64-*-linux*): New host. + * configure.in (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec, + bfd_efi_app_ia64_vec, bfd_efi_app_ia64_vec): New vectors. + * elf.c (prep_headers): Add bfd_arch_ia64. + * libbfd.h: Rebuild. + * reloc.c: Add IA-64 relocations. + * targets.c (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec): + Declare. + (bfd_target_vect): Add bfd_elf64_ia64_little_vec. + * cpu-ia64-opc.c, cpu-ia64.c, elf64-ia64.c: New files. + +2000-04-21 Richard Henderson + + * elf32-d30v.c (bfd_elf_d30v_reloc): Don't modify section + contents when performing a partial link. + (bfd_elf_d30v_reloc_21): Likewise. + +2000-04-20 H.J. Lu + + * elf32-i386.c (elf_i386_relocate_section): Restrict 1998-12-10 + patch to symbols defined by a shared object. + * elf32-ppc.c (ppc_elf_relocate_section): Similarly. + +2000-04-19 Michael Sokolov + + K&R compiler fixes. + * dwarf2.c (concat_filename): Avoid string literal concatenation. + * ieee.c (ieee_get_symtab): Don't initialise union in struct. + +2000-04-11 David Mosberger + + * Makefile.am (BFD64_BACKENDS): Mention coff-ia64.lo. + (BFD64_BACKENDS_CFILES): Mention coff-ia64.c + (coff-ia64.lo): Add dependency. + * Makefile.in: Regenerate. + * coff-ia64.c: New file. + * efi-app-ia32.c: Ditto. + * efi-app-ia64.c: Ditto. + * coffcode.h (coff_set_arch_mach_hook): Handle IA64MAGIC. + (coff_set_flags): Ditto. + (coff_write_object_contents) [IA64]: Set magic number to ZMAGIC. + * config.bfd (i[3456]86-*-linux-gnu*): Mention bfd_efi_app_ia32_vec. + * configure.in (elf): Handle bfd_efi_app_ia32 and bfd_efi_app_ia64_vec. + * configure: Regenerate. + * libpei.h (GET_OPTHDR_IMAGE_BASE): New macro. + (PUT_OPTHDR_IMAGE_BASE): Ditto. + (GET_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto. + (PUT_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto. + (GET_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto. + (PUT_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto. + (GET_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto. + (PUT_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto. + (GET_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto. + (PUT_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto. + (GET_PDATA_ENTRY): Ditto. + * peigen.c (_bfd_pei_swap_aouthdr_in) [COFF_WITH_PEP64]: Don't read + data_start. Use above macros to read fields that are 64 bit wide for + COFF_WITH_PEP64. Don't truncate entry and text_start to 32 bits. + (_bfd_pei_swap_aouthdr_out) [PEI_FORCE_MINIMUM_ALIGNMENT]: Force + FileAlignment and SectionAlignment to minimum alignment if they + are zero. + (_bfd_pei_swap_aouthdr_out) [PEI_DEFAULT_TARGET_SUBSYSTEM]: Set + Subsystem to default PEI_DEFAULT_TARGET_SUBSYSTEM. + (_bfd_pei_swap_aouthdr_out) [COFF_WITH_PEP64]: Don't set data_start. + Use above macros to write fields that are 64 bit wide for + COFF_WITH_PEP64. + (pe_print_pdata): Set PDATA_ROW_SIZE to 3*8 for COFF_WITH_PEP64, + 5*4 otherwise. This should be right for IA-32 and IA-64, but may + be wrong for platforms. Use PDATA_ROW_SIZE instead of hardcoded + value of 20 bytes. Modify printing for COFF_WITH_PEP64 to print + begin address, end address, and unwind info address only. Use + GET_PDATA_ENTRY() to read .pdata entries. Use fprintf_vma() to + print addresses. + (tbl): Add SECTION, REL32, RESERVED1, MIPS_JMPADDR16, DIR64, and + HIGH3ADJ relocation names. + (_bfd_pe_print_private_bfd_data): Print Subsystem name in legible form. + * targets.c: Declare bfd_efi_app_ia32_vec and + bfd_efi_app_ia64_vec. + (bfd_target_vector): Mention bfd_efi_app_ia32_vec and + bfd_efi_app_ia64_vec. + +2000-04-17 Timothy Wall + + * bfd-in2.h: Add prototypes for tic54x load page access. + * bfd-in.h: Regenerate. + * coff-tic54x.c: Add load page functions; allow bfd_arch_unknown + in customized _set_arch_mach function. + * coffcode.h (coff_set_alignment_hook): Set section load page if + the appropriate macro is defined. + (write_object_contents): Read section load page. + +2000-04-13 Alan Modra + + * elf32-hppa.h: Update copyright date. + + * elf32-fr30.c (fr30_elf_i20_reloc): Don't use U suffix. + * elf32-mips.c (_bfd_mips_elf_relocate_section): And here. + + * elf32-d30v.c (MAX32): Don't use LL suffix. + (MIN32): Define in terms of MAX32. + (bfd_elf_d30v_reloc): Make relocation a bfd_signed_vma. + + * coff-a29k.c (SIGN_EXTEND_HWORD): Replace with more concise + expression. + + * peicode.h (pe_ILF_build_a_bfd): Remove UL from hex constants. + +2000-04-12 Alan Modra + + * dep-in.sed: Match space before file name, not after. + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + + * reloc.c (_bfd_relocate_contents): In complain_overflow_bitfield + case, allow address wrap-around stupidly removed 2000-03-17. Sign + extend without an if statement. + +2000-04-11 Alan Modra + + * coff-mips.c (mips_gprel_reloc): Test for 16 bit range using + signed quantites. + * elf32-mips.c (gprel16_with_gp): Likewise. + * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Test range + here using -0x40000, not (int)0xfffc0000. + (elf32_hppa_size_of_stub): Likewise. + +2000-04-11 Timothy Wall + + * coff-tic54x.c: Now builds with all targets. + * Makefile.am: Add coff/tic54x.h to coff-tic54x.o dependencies. + * Makefile.in: Regenerate. + * coffcode.h (coff_set_arch_mach_hook): Eliminate warning on + unitialized variable. + +2000-04-07 Andrew Cagney + + * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add + --enable-build-warnings option. + * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. + * Makefile.in, configure: Re-generate. + +2000-04-07 Nick Clifton + + * reloc.c: Add BFD_RELOC_ARM_PCREL_BLX and + BFD_RELOC_THUMB_PCREL_BLX. + + * elf32-arm.h (elf32_arm_final_link_relocate): Handle + R_ARM_XPC25 and R_ARM_THM_PC22. + + * elfarm-nabi.c (elf32_arm_howto_): Fix definitions of + R_ARM_XPC25 and R_ARM_THM_XPC22. + (elf32_arm_reloc_map): Make BFD_RELOC_{ARM|THUMB}_PCREL_BLX to + R_ARM_[XPC25|THM_XPC22]. + + * elfarm-oabi.c: Define OLD_ARM_ABI and change include from + elf/arm-oabi.h to elf/arm.h + + * Makefile.am: Fix dependency for elfarm-oabi.c + * Makefile.in: Regenerate. + + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2000-04-06 Michael Snyder + + * elfcore.h (elf_core_file_p): preserve value of tdata at entry, + and restore it on failure. Release newly allocated tdata on + failure. + +2000-04-07 Jim Wilson + + * dwarf2.c (struct dwarf2_debug): New field dwarf_line_size. + (decode_line_info): Set it. Report error if unit->line_offset is + equal to or larger than it. + +2000-04-07 Timothy Wall + + * targets.c: Added vecs for tic54x. + * reloc.c: Added relocs for tic54x. + * libbfd.h: Regenerated. + * configure: Add TI COFF vecs for tic54x. + * configure.in: Ditto. + * config.bfd (targ_cpu): Recognize new tic54x target. + * coffcode.h (coff_slurp_symbol_table): Additions for TI COFF handling. + * bfd-in2.h: Add tic54x target and relocations. + * Makefile.am, Makefile.in: Add tic54x target. + * archures.c (bfd_archures_list): Add tic54x target. + * coff-tic54x.c: New. + * cpu-tic54x.c: New. + +2000-04-06 Michael Snyder + + * elfcore.h (elf_core_file_p): call backend_object_p which + thereby gets an opportunity to update the arch/machine type. + +2000-04-06 Timothy Wall + + * coffcode.h (coff_slurp_symbol_table): Handle C_STATLAB storage + class. Handle SEC_CLINK and SEC_BLOCK flags. + * section.c: Add SEC_CLINK and SEC_BLOCK flags. + * bfd-in2.h: Add SEC_CLINK and SEC_BLOCK flags. + +2000-04-06 Nick Clifton + + * elf32-arm.h (elf32_arm_set_private_flags): Only check for + EF_INTERWORK if this is an unknown EABI. + (elf32_arm_merge_private_bfd_data): Check EABI version + numbers. Only check EF_xxx flags if the EABI version number + is unknown. + (elf32_arm_check_private_bfd_data): Only check EF_xxx flags + if the EABI version number is unknown. + (elf32_arm_print_private_bfd_data): Only decode EF_xxx flags + if the EABI version number is unknown. + +2000-04-05 J"orn Rennecke + + * reloc.c (_bfd_relocate_contents): Add BFD_RELOC_SH_LOOP_START and + BFD_RELOC_SH_LOOP_END. + * elf32-sh.c (sh_elf_howto_tab): Change special_func to + sh_elf_ignore_reloc for all entries that sh_elf_reloc used to ignore. + Add entries for R_SH_LOOP_START and R_SH_LOOP_END. + (sh_elf_reloc_loop): New function. + (sh_elf_reloc): No need to test for always-to-be-ignored relocs + any more. + (sh_rel): Add entries for BFD_RELOC_SH_LOOP_{START,END}. + (sh_elf_relocate_section): Handle BFD_RELOC_SH_LOOP_{START,END}. + * bfd-in2.h, libbfd.h: Regenerate. + +2000-04-04 Alan Modra + + * po/bfd.pot: Regenerate. + + * Makefile.am: Remove extraneous mkdep comment. + (MKDEP): Use gcc -MM rather than mkdep. + (DEP): Quote when passing vars to sub-make. Add warning + message to end. + (DEP1): Rewrite for "gcc -MM". + (CLEANFILES): Add DEP2. + Update dependencies. + * Makefile.in: Regenerate. + +2000-04-03 Kevin Buettner + + * configure.in: Added corefile support for AIX 4.3. In particular, + AIX_CORE_DUMPX_CORE will be defined in addition to AIX_CORE when + compiling rs6000-core.c. + * configure: Regenerated. + +2000-04-03 H.J. Lu + + * cache.c (bfd_open_file): Unlink the output file only if + it has non-zero size. + +2000-04-01 Ken Block USG + + * elf64-alpha.c (elf64_alpha_relocate_section): Don't emit + relative relocations for non-loaded sections in shared objects. + (elf64_alpha_check_relocs): Similarly. + +2000-04-03 Hans-Peter Nilsson + + * aoutx.h (NAME(aout,reloc_type_lookup)): Add BFD_RELOC_8 and + BFD_RELOC_16 to switch for extended relocs. + (MY_swap_ext_reloc_in): New. + (MY_swap_ext_reloc_out): New. + (NAME(aout,slurp_reloc_table)): Use MY_swap_ext_reloc_in rather + than NAME(aout,swap_ext_reloc_in) for extended relocs. + (NAME(aout,squirt_out_relocs)): Similarly use + MY_swap_ext_reloc_out. + (aout_link_reloc_link_order): Use MY_put_ext_reloc if defined. + +2000-04-03 Kazu Hirata + + * coff-h8300.c (h8300_reloc16_extra_cases): Add bsr:16 -> bsr:8 to + the R_PCRWORD_B case. + +2000-03-31 Thomas de Lellis + + * srec.c : Set CHUNK size to 16 bytes to prevent download failures + on some targets. + * ihex.c : Ditto. + +2000-03-30 Donald Lindsay + + * elf32-m32r.c (m32r_elf_generic_reloc): new function. All + HOWTO references to bfd_elf_generic_reloc, that have + partial_inplace == true, now use the new function. The function + is based on the recent rewrite of m32r_elf_lo16_reloc(), and + extends its fixes to the R_M32R_{16,24,32} relocs. + The new logic in m32r_elf_lo16_reloc() has been removed, and + it instead calls the new routine to obtain that functionality. + +2000-03-27 Alan Modra + + * elf32-avr.c (elf32_avr_gc_mark_hook, elf32_avr_gc_sweep_hook, + elf32_avr_check_relocs, avr_final_link_relocate, + elf32_avr_relocate_section, bfd_elf_avr_final_write_processing, + elf32_avr_object_p): Add prototypes. + (elf32_avr_gc_mark_hook): Add default for h->root.type. + (bfd_elf_avr_final_write_processing): Make static. + +2000-03-27 Denis Chertykov + + * cpu-avr.c: New file. BFD support routines for AVR architecture. + * archures.c (bfd_architecture): Add AVR architecture. + (bfd_archures_list): Add reference to AVR architecture info. + * elf.c (prep_headers): Handle bfd_arch_avr. + * reloc.c: Add various AVR relocation enums. + * targets.c (bfd_elf32_avr_vec): Declare and add to target vector + list. + * Makefile.am: Add support for AVR elf. + * configure.in: Likewise. + * config.bfd: Likewise. + * Makefile.in: Regenerate. + * configure: This too. + * bfd-in2.h: And this. + * libbfd.h: And this. + +2000-03-24 H.J. Lu + + * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Add prototype. + (elf64_alpha_find_reloc_at_ofs): Likewise. + +2000-03-17 Alan Modra + + * reloc.c (bfd_check_overflow): In case complain_overflow_bitfield, + flag an overflow if the bitfield is outside -2**n to 2**n-1. The + allowable range used to be -2**(n-1) to 2**n-1. + * reloc.c (_bfd_relocate_contents): Same here. Also replace + "boolean overflow" with "bfd_reloc_status_type flag". + +2000-03-14 Doug Evans + + * elf32-m32r.c (m32r_elf_lo16_reloc): Rewrite. + +2000-03-14 Kazu Hirata + + * reloc16.c (bfd_coff_reloc16_relax_section): Count the total number + of shrinks properly, including the last reloc. + +2000-03-13 Kazu Hirata + + * coff-h8300.c (h8300_reloc16_extra_cases): Fix the sanity + check for R_MOVL2. + +2000-03-11 Alan Modra + + * ieee.c (ieee_archive_p): Return bfd_error_wrong_format on + a format mismatch rather than an "error" from bfd_read such as + bfd_error_file_truncated. + +2000-03-10 Geoff Keating + + * elf32-mips.c (_bfd_mips_elf_relocate_section): Do proper + sign-extension and big-endian compensation for + R_MIPS_64 even in ld -r. + +2000-03-10 Geoffrey Keating + + * elf32-mips.c (mips_elf_next_relocation): Rename from + mips_elf_next_lo16_relocation, and generalize to look + for any relocation type. + (elf_mips_howto_table): Make R_MIPS_PC16 pcrel_offset. + (elf_mips_gnu_rel_hi16): Howto for R_MIPS_GNU_REL_HI16. + (elf_mips_gnu_rel_lo16): Howto for R_MIPS_GNU_REL_LO16. + (elf_mips_gnu_rel16_s2): Howto for R_MIPS_GNU_REL16_S2. + (elf_mips_gnu_pcrel64): Howto for R_MIPS_PC64. + (elf_mips_gnu_pcrel32): Howto for R_MIPS_PC32. + (bfd_elf32_bfd_reloc_type_lookup): Add new relocs. + (mips_rtype_to_howto): Likewise. + (mips_elf_calculate_relocation): Handle new relocs. + (_bfd_mips_elf_relocate_section): REL_HI16/REL_LO16 relocs + are paired. The addend for R_MIPS_GNU_REL16_S2 + is shifted right two bits. + +2000-03-10 Alan Modra + + * reloc.c (bfd_perform_relocation): Undo emacs formatting of + comment, and ensure it doesn't happen again. + (bfd_install_relocation): Same here. + (_bfd_relocate_contents): Don't bother assigning unused signmask + shift result. Fix typos in comments. + Remove trailing whitespace throughout file. + +2000-03-07 Doug Evans + + * reloc.c (reloc_howto_struct): Fix partial_inplace comment. + * bfd-in2.h: Rebuild. + +2000-03-06 Nick Clifton + + * peicode.h (struct pe_ILF_vars): Add sym_ptr_table and + sym_ptr_ptr fields. + (SIZEOF_ILF_SYM_PTR_TABLE): Define. + (SIZEOF_ILF_STRINGS): Redefine. + (pe_ILF_make_a_symbol-reloc): New function. Creates a symbol + relative reloc, as opposed to a section relative reloc. + (pe_ILF_make_a_symbol): Set the class of local symbols to C_STAT + not C_LABEL. + Add length of symbol's prefix to string pointer. + Store a pointer to the symbol in the symbol pointer table. + (pe_ILF_build_a_bfd): Do not build .idata$2 or .idata$7. + Initialise the symbol pointer table. + Store the hint in the Hint/Name table. + Make the jump reloc be symbol realtive, not section relative. + Create an import symbol for imported code. + +2000-03-06 Catherine Moore + + * elf.c (swap_out_syms): Check for null type_ptr. + +2000-03-01 Hans-Peter Nilsson + + * aout-target.h (MY(write_object_contents)): Remove unused + and unusable "#if CHOOSE_RELOC_SIZE". + * pc532-mach.c (MY(write_object_contents)): Ditto. + * netbsd.h (MY(write_object_contents)): Ditto. + * hp300hpux.c (MY(write_object_contents)): Ditto. + * freebsd.h (MY(write_object_contents)): Ditto. + * aout-tic30.c (tic30_aout_write_object_contents): Ditto. + +2000-02-29 H.J. Lu + + * peicode.h (jtab): Make it static. + + * coff-sh.c (sh_align_load_span): Declared if COFF_WITH_PE is + defined and COFF_IMAGE_WITH_PE is not defined. + (_bfd_sh_align_load_span): Defined as sh_align_load_span if + COFF_WITH_PE is defined and COFF_IMAGE_WITH_PE is not defined. + +2000-03-01 Nick Clifton + + * coff-arm.c (bfd_arm_process_before_allocation): Make + 'symndx' signed to prevent compile time warning. + + * coff-mcore.c: Remove unused prototype for pe_object_p. + + * coff-sh.c: Add "#ifndef COFF_IMAGE_WITH_PE" around static + functions that are not used when COFF_IMAGE_WITH_PE is + defined. + (struct sh_opcode): Change type of 'flags' field to unsigned + long so that it can hold the USESAS flag. + + * coffcode.h (styp_to_sec_flags): Initialise 'target_name'. + + * elf-m10300.c (mn10300_elf_relax_section): Initialise + 'sym_sec'. + + * elf32-i370.c: Add ATTRIBUTE_UNUSED to unused function + parameters. + Remove unusued variables and code. + (elf_backend_add_symbol_hook): Fix prototype. + + * elf32-m68k.c (elf_m68k_gc_sweep_hook): Initialise 'sgot' and + 'srelgot'. + + * elf32-mcore.c (mcore_elf_relocate_section): Initialise + 'oldinst'. + + * elf32-mips.c: Add ATTRIBUTE_UNUSED to unused function + parameters. + Remove unusued variables and code. + (elf_backend_add_symbol_hook): Fix prototype. + + * elf32-sh.c (sh_elf_set_mach_from_flags): Use 'flags'. + + * elflink.h (elf_bfd_link_add_symbols): Add ATTRIBUTE_UNUSED + to unused function parameter. + + * pe-mips.c: Add ATTRIBUTE_UNUSED to unused function + parameters. + Use EMPTY_HOWTO to initialise empty howto slots. + Remove unused variables. + + * peicode.h (pe_ILF_build_a_bfd): Initialise id6. + +2000-03-01 H.J. Lu + + * aoutx.h (aout_link_input_section_std): Pass "true" to + the undefined_symbol callback. + (aout_link_input_section_ext): Likewise. + * bout.c (get_value): Likewise. + * coff-a29k.c (coff_a29k_relocate_section): Likewise. + * coff-alpha.c (alpha_ecoff_get_relocated_section_conten): + Likewise. + (alpha_relocate_section): Likewise. + * coff-arm.c (coff_arm_relocate_section): Likewise. + * coff-i960.c (coff_i960_relocate_section): Likewise. + * coff-mcore.c (coff_mcore_relocate_section): Likewise. + * coff-mips.c (mips_relocate_section): Likewise. + * coff-ppc.c (coff_ppc_relocate_section): Likewise. + * coff-sh.c (sh_relocate_section): Likewise. + * coff-tic80.c (coff_tic80_relocate_section): Likewise. + * cofflink.c (_bfd_coff_generic_relocate_section): Likewise. + * elf-m10200.c (mn10200_elf_relocate_section): Likewise. + * elf-m10300.c (mn10300_elf_relocate_section): Likewise. + * elf32-d10v.c (elf32_d10v_relocate_section): Likewise. + * elf32-fr30.c (fr30_elf_relocate_section): Likewise. + * elf32-hppa.c (elf32_hppa_relocate_section): Likewise. + * elf32-i370.c (i370_elf_relocate_section): Likewise. + * elf32-m32r.c (m32r_elf_relocate_section): Likewise. + * elf32-mcore.c (mcore_elf_relocate_section): Likewise. + * elf32-sh.c (sh_elf_relocate_section): Likewise. + * elf32-v850.c (v850_elf_relocate_section): Likewise. + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise. + * elflink.h (elf_link_output_extsym): Likewise. + * pe-mips.c (coff_pe_mips_relocate_section): Likewise. + * reloc.c (bfd_generic_get_relocated_section_conten): Likewise. + * reloc16.c (_bfd_ppc_xcoff_relocate_section): Likewise. + + * elf-hppa.h (elf_hppa_relocate_section): Pass "false" to the + undefined_symbol callback when building shared library with + -Bsymbolic and undefined symbols are allowed. Otherwise, pass + "true". + * elf32-arm.h (elf32_arm_relocate_section): Likewise. + * elf32-i386.c (elf_i386_relocate_section): Likewise. + * elf32-m68k.c (elf_m68k_relocate_section): Likewise. + * elf32-mips.c (mips_elf_calculate_relocation): Likewise. + (elf32_mips_get_relocated_section_content): Likewise. + * elf32-ppc.c (ppc_elf_relocate_section): Likewise. + * elf32-sparc.c (elf32_sparc_relocate_section): Likewise. + * elf64-alpha.c (elf64_alpha_relocate_section): Likewise. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + +2000-02-28 Nick Clifton + + * Makefile.am: Add rules to build pe[i]-{sh|mips}.lo objects. + * Makefile.in: Regenerate. + + * configure.in: Add support for mips and sh pe vectors. + * configure: regenerate. + + * config.bfd: Add support for arm-wince, mips-pe and sh-pe + targets. + + * targets.c: Add mips and sh pe vectors. + + * libpei.h (coff_final_link_postscript): Only define if not + already defined. + + * coffcode.h: Add support for WinCE magic numbers. + + * peigen.c (pe_print_reloc): Update comment and rearrange + appending of newline character. + + * peicode.h: Add support for Image Library Format. + (pe_ILF_vars): Structure containing data used by ILF code. + (pe_ILF_make_a_section): New function. Create a section based + on ILF data. + (pe_ILF_make_a_reloc): New function. Create a reloc based on + ILF data. + (pe_ILF_make_a_symbol): New function. Create a symbol based + on ILF data. + (pe_ILF_save_relocs): New function. Store the relocs created + by pe_ILF_make_a_reloc in a section. + (pe_ILF_build_a_bfd): New function. Create a BFD describing + an ILF object. + (pe_ILF_object_p): New function. Return a bfd_target pointer + for an ILF object. + (pe_bfd_object_p): If an ILF object is detected call + pe_ILF_object_p on it. + + * coff-arm.c: Add support for WinCE relocs which are different + from normal ARM COFF relocs. + * pe-arm.c: Unset TARGET_UNDERSCORE for a WinCE target. + + * coff-sh.c: Add support for sh-pe target. + * pe-sh.c: New file. Support code for sh-pe target. + * pei-sh.c: New file. Support code for sh-pe target. + + * pe-mips.c: New file. Support code for mips-pe target. + * pei-mips.c: New file. Support code for mips-pe target. + +2000-02-27 Jakub Jelinek + + * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Don't bump + architecture if the object causing the bump is dynamic. + * elf64-sparc.c (sparc64_elf_merge_private_bfd_data): Likewise, + and also don't it for memory ordering. + (sparc64_elf_write_relocs): Take src_rela out of the loop. + +2000-02-27 Ian Lance Taylor + + * dwarf2.c (read_abbrevs): Use _raw_size directly rather than + calling bfd_get_section_size_before_reloc. + (decode_line_info): Likewise. + (_bfd_dwarf2_find_nearest_line): Likewise. + +2000-02-27 Eli Zaretskii + + * Makefile.am (stamp-lib): Use $(LIBTOOL) --config to get the + name of the libtool directory. + * Makefile.in: Rebuild. + +2000-02-25 Rodney Brown (RodneyBrown@pmsc.com) + + * som.c (SOM_HOWTO): Define. + (som_hppa_howto_table): Use it. + +2000-02-25 Alexandre Oliva + + * config.bfd: Enable 64 bit support for GNU/Linux/sparc. + + * config.bfd: Enable 64 bit support for Solaris7+/sparc. + +2000-02-24 Catherine Moore + + * som.c (som_misc_symbol_info): Add field + secondary_def. + (som_bfd_derive_misc_symbol_info): Initialize + secondary_def. + (som_build_and_write_symbol_table): Keep track + of secondary_def field. + (som_slurp_symbol_table): Set BSF_WEAK symbol flag + if secondary_def field is set. + (som_bfd_ar_write_symbol_stuff): Initialize + secondary_def. + +2000-02-23 Stephane Carrez + + * dwarf2.c (read_address): Read 16-bits addresses. + (parse_comp_unit): Accept addr_size == 2. + +2000-02-23 Alan Modra + + * bfd-in.h: Update copyright date. + +2000-02-23 Linas Vepstas + + * cpu-i370.c: New file. + * elf32-i370.c: New file. + * archures.c (enum bfd_architecture): Add bfd_arch_i370. + (bfd_i370_arch): New. + (bfd_archures_list): Add bfd_i370_arch. + * elf.c (prep_headers): Add bfd_arch_i370. + * Makefile.am: Add support for IBM 370 elf. + * config.bfd: Likewise. + * configure.in: Likewise. + * libbfd.h (bfd_reloc_code_real_names): Likewise. + * reloc.c (bfd_reloc_code_type): Likewise. + * targets.c: Likewise. + + * Makefile.in: Regenerate. + * configure: Regenerate. + * bfd-in2.h: Regenerate. + +2000-02-22 Ian Lance Taylor + + * elf32-i386.c (elf_i386_info_to_howto_rel): Give a warning for + invalid relocation types, and change them to R_386_NONE. + +2000-02-22 H.J. Lu + + * elflink.h (elf_link_add_object_symbols): If a version symbol is + not defined, don't add a second ELF_VER_CHR. + + * elflink.h (elf_bfd_final_link): Call output_extsym for global + symbols converted to local symbols even when stripping all + symbols. + (elf_link_output_extsym): Process global symbols converted to + local symbols even if they are being stripped. + +2000-02-21 Alan Modra + + * archures.c (bfd_octets_per_byte): Return unsigned int. + (bfd_arch_mach_octets_per_byte): Ditto. + * libbfd.c (bfd_read, bfd_seek): Quell signed vs. unsigned + comparison warning. + * section.c (bfd_get_section_size_before_reloc): Quell signed + vs. unsigned comparison warning. + (bfd_get_section_size_after_reloc): Same here. Fix parentheses too. + * trad-core.c (trad_unix_core_file_p): Correct 2000-01-27 + change. What was I thinking? + * bfd-in2.h: Regenerate. + + * elflink.h (elf_gc_sweep): Skip non-elf input bfds. + (elf_gc_sections): Same here. + (elf_gc_common_finalize_got_offsets): And here. + +2000-02-21 Ian Lance Taylor + + ELF HPPA doesn't work at present; remove it until it does. + * config.bfd: Comment out setting targ_defvec to + bfd_elf32_hppa_vec. + * Makefile.am: Rebuild dependencies. + (BFD32_BACKENDS): Remove elf32-hppa.lo. + (BFD32_BACKENDS_CFILES): Remove elf32-hppa.c. + (SOURCE_HFILES): Remove elf32-hppa.h and hppa_stubs.h. + * Makefile.in: Rebuild. + * targets.c (bfd_target_vector): Comment out bfd_elf32_hppa_vec. + +2000-02-18 Geoff Keating + + * coffcode.h (coff_set_arch_mach_hook): Use free(), because there + is no bfd_free(). Revert bfd_free part of previous change. + +2000-02-18 Geoff Keating + + * coffcode.h (coff_set_arch_mach_hook): Don't use variable-size + arrays. + (coff_compute_section_file_positions): Use bfd_free to pair + bfd_malloc. + (coff_write_object_contents): Likewise. + + * coff-rs6000.c (xcoff_howto_table_16): New variable. + (xcoff_rtype2howto): Handle 16-bit variants of 32-bit relocs. + +2000-02-18 Ulrich Drepper + + * coff-rs6000.c (XCOFFARMAGBIG): New macro. + (xcoff_ar_file_hdr_big): New structure. + (SIZEOF_AR_FILE_HDR_BIG): New macro. + (xcoff_ar_hdr_big): New structure. + (SIZEOF_AR_HDR_BIG): New macro. + (xcoff_big_format_p): New macro. + (xcoff_ardata_big): New macro. + (arch_xhdr_big): New macro. + (xcoff_slurp_armap): Handle large archives. + (xcoff_archive_p): Detect large archives. + (xcoff_read_ar_hdr): Handle large archives. + (xcoff_openr_next_archived_file): Handle large archives. + (xcoff_generic_stat_arch_elt): Handle large archives. + (xcoff_write_armap_old): Rename from xcoff_write_armap. + (xcoff_write_armap_big): New function. + (xcoff_write_armap): New function, dispatch to _old or _big. + (xcoff_write_archive_contents_old): Rename from + xcoff_write_archive_contents. + (xcoff_write_archive_contents_big): New function. + (xcoff_write_archive_contents): New function, dispatch to _old or + _big. + +2000-02-18 Richard Henderson + + * elf-bfd.h (struct elf_link_hash_table): Remove copy_indirect + and hide_symbol members. + (elf_link_hash_copy_indirect): Remove. + (elf_link_hash_hide_symbol): Remove. + (struct elf_backend_data): Add elf_backend_copy_indirect_symbol + and elf_backend_hide_symbol. + (_bfd_elf_link_hash_copy_indirect): Declare. + (_bfd_elf_link_hash_hide_symbol): Declare. + * elf.c (_bfd_elf_link_hash_copy_indirect): Remove table argument. + (_bfd_elf_link_hash_hide_symbol): Likewise. + (_bfd_elf_link_hash_table_init): Don't init killed members. + * elflink.h (elf_link_add_object_symbols): Use the bed function + pointers not elf_link_hash_{copy_indirect,hide_symbol}. + (elf_link_assign_sym_version): Likewise. + * elfxx-target.h (elf_backend_copy_indirect_symbol): Default. + (elf_backend_hide_symbol): Likewise. + (elfNN_bed): Update for new members. + +2000-02-17 Kevin Buettner + + * rs6000-core.c (CORE_DATA_SIZE_FIELD, CORE_COMM_FIELD, SAVE_FIELD, + STACK_END_ADDR): Define for new core file format. + (LOADER_OFFSET_FIELD, LOADER_REGION_SIZE, CORE_DUMP): New defines + for handling the vagaries of the various core file structures used + by AIX over the years. + (rs6000coff_core_p, rs6000coff_core_file_matches_executable, + Rs6kCorData): Use above defines to adapt code to use AIX 4.3's + core_dumpx structure. + +2000-02-17 J"orn Rennecke + + * archures.c (bfd_mach_sh2, bfd_mach_sh_dsp): New macros. + (bfd_mach_sh3_dsp): Likewise. + (bfd_mach_sh4): Reinstate. + (bfd_default_scan): Recognize 7410, 7708, 7729 and 7750. + * bfd-in2.h: Regenerate. + * coff-sh.c (struct sh_opcode): flags is no longer short. + (USESAS, USESAS_REG, USESR8, SETSAS, SETSAS_REG): New macros. + (sh_opcode41, sh_opcode42): Integrate as sh_opcode41. + (sh_opcode01, sh_opcode02, sh_opcode40): Add sh-dsp opcodes. + (sh_opcode41, sh_opcode4, sh_opcode80): Likewise. + (sh_opcodes): No longer const. + (sh_dsp_opcodef0, sh_dsp_opcodef): New arrays. + (sh_insn_uses_reg): Check for USESAS and USESR8. + (sh_insn_sets_reg, sh_insns_conflict): Check for SETSAS. + (_bfd_sh_align_load_span): Return early for SH4. + Modify sh_opcodes lookup table for sh-dsp / sh3-dsp. + Take into account that field b of a parallel processing insn + could be mistaken for a separate insn. + * cpu-sh.c (arch_info_struct): New array elements for + sh2, sh-dsp and sh3-dsp. + Reinstate element for sh4. + (SH2_NEXT, SH_DSP_NEXT, SH3_DSP_NEXT): New macros. + (SH4_NEXT): Reinstate. + (SH3_NEXT, SH3E_NEXT): Adjust. + * elf-bfd.h (_sh_elf_set_mach_from_flags): Declare. + * elf32-sh.c (sh_elf_set_private_flags): New function. + (sh_elf_copy_private_data, sh_elf_set_mach_from_flags): Likewise. + (sh_elf_merge_private_data): New function. + (elf_backend_object_p, bfd_elf32_bfd_set_private_bfd_flags): Define. + (bfd_elf32_bfd_copy_private_bfd_data): Define. + (bfd_elf32_bfd_merge_private_bfd_data): Change to + sh_elf_merge_private_data. + +2000-02-13 Richard Henderson + + * elf-bfd.h (struct elf_link_hash_table): Add copy_indirect and + hide_symbol members. + (elf_link_hash_copy_indirect): New. + (elf_link_hash_hide_symbol): New. + * elflink.h (elf_link_add_object_symbols): Break out copy from + indirect new new symbol to elf.c. + (elf_link_assign_sym_version): Break out privatization of + non-exported symbol to elf.c. + * elf.c (_bfd_elf_link_hash_copy_indirect): New. + (_bfd_elf_link_hash_hide_symbol): New. + (_bfd_elf_link_hash_table_init): Init copy_indirect and hide_symbol. + +2000-02-13 Ian Lance Taylor + + * section.c (_bfd_strip_section_from_output): Add info parameter. + If it passed as non-NULL, use it to check whether any input BFD + has an input section which uses this output section. Change all + callers. + * bfd-in2.h: Rebuild. + + * bfd-in.h: Move declarations of bfd_get_elf_phdr_upper_bound and + bfd_get_elf_phdrs in from bfd-in2.h, correcting patch of + 1999-11-29. + * bfd-in2.h: Rebuild. + +2000-02-10 Timothy Wall + + * coffswap.h (coff_swap_sym_in): Add hook SWAP_SYM_IN_POST to + allow final modifications of swapped-in symbol. + (coff_swap_sym_out): Ditto with SWAP_SYM_OUT_POST. + * coffcode.h (coff_write_relocs): Use macro + SECTION_RELATIVE_ABSOLUTE_SYMBOL_P if defined to determine whether + symbol index should be set to -1. + +2000-02-10 Toshiyasu Morita (toshi.morita@sega.com) + + * coff-sh.c (USES1_REG, USES2_REG, SETS1_REG, SETS2_REG, + USESF1_REG, USESF2_REG, SETSF1_REG, SETSF2_REG): New macros. + * (sh_insn_sets_reg, sh_insn_sets_freg): New prototypes. + * (sh_insn_sets_reg, sh_insn_uses_or_sets_reg, sh_insns_sets_freg, + sh_insns_uses_or_sets_freg): New functions. + * (sh_insn_uses_reg, sh_insn_uses_freg): Use new macros. + * (sh_insns_conflict): Use new functions and new macros to + detect conflicts when two instructions both set same integer registers, + both set same fp register, and both set special register. + +2000-02-09 Timothy Wall + + * coffgen.c (coff_real_object_p): Set arch/mach info prior to + swapping in sections, so that the swapping routines have access to + the arch/mach info. + +2000-02-08 Mark Elbrecht + + * coff-go32.c: Update comment. Update copyright. + +2000-01-27 Thomas de Lellis + + * syms.c (bfd_decode_symclass) + Two new class characters were added - 'V' and 'v'. The + meaning of 'W' is now restricted to just weak non-object + symbols. This allows differentiation between, for example, + weak functions vs weak objects. nm for example now dumps: + 'W' = weak global + 'w' = weak unresolved + 'V' = weak global object + 'v' = weak unresolved object + + (bfd_is_undefined_symclass): New function. Return true if the + given symbol class represents and undefined/unresolved symbol. + + (bfd_symbol_info): Use bfd_is_undefined_symclass to check for + unresolved symbols. + + * bfd-in2.h: Add prototype for bfd_is_undefined_symbol(). + + * elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the + STT_ARM_16BIT flag set, but it is not attached to a data object + return STT_ARM_16BIT so that it will be treated as code by the + disassembler. + +2000-01-27 Alan Modra + + * coff-i386.c (i3coff_object_p): Remove prototype. + Update copyright. + + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Add const + to name. Update copyright. + + * trad-core.c (trad_unix_core_file_p): Cast core_regsec + assignment to avoid warning. Update copyright. + +2000-01-24 Robert Lipe (robertl@sco.com) + + * coffcode.h (coff_write_object_contents): Get buff via bfd_malloc + instead of using GNU C extension. + +2000-01-21 Nick Clifton + + * libbfd.c (bfd_read): Do not attempt to get a negativly sized + amount from a bfd_in_memory structure. + (bfd_seek): Do not allow seeks past the end of a bfd_in_memory + structure. + +2000-01-14 Nick Clifton + + * linker.c (default_indirect_link_order): oops - fix incorrectly + applied patch from Tim Wall. + +2000-01-13 Timothy Wall (twall@tiac.net> + + * coffcode.h: Use bfd_coff_xxx instead of the macro XXX (where xxx + = scnhsz, filhsz, relsz, aoutsz, etc) + + * coffswap.h: Ditto. + +2000-01-13 Nick Clifton + + * elf32-arm.h (elf32_thumb_to_arm_stub): Fix offset in branch to + interwork thumb to arm stub. + +2000-01-13 Timothy Wall (twall@tiac.net> + + * archures.c (bfd_octets_per_byte): New function: Return + target byte size. + (bfd_arch_mach_octets_per_byte): New function: Return target + byte size. + + * section.c: Distinguish between octets and bytes for usage of + _cooked_size, _raw_size, and output_offset. Clarify + description of bfd_set_section_contents. + + * bfd-in2.h: Regenerate. + + * coffgen.c: Indicate that the offset parameter is in bytes, not + octets. + + * cofflink.c (bfd_coff_link_input_bfd): Use bfd_octets_per_byte + where appropriate to get the octet offset when calling + bfd_set_section_contents. + (bfd_coff_reloc_link_order): Ditto. + + * linker.c (bfd_generic_reloc_link_order): Ditto. + (_bfd_default_link_order): Ditto. + + * reloc.c (bfd_perform_relocation): Distinguish between octets + and bytes. Use octets when indexing into octet data; use bytes + when calculating target addresses. + (bfd_install_relocation): Ditto. + + * srec.c (srec_write_section): Ditto. + +2000-01-13 Nick Clifton + + * coff-mcore.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Change from + 3 to 2. This allows 4 byte sized sections, which is necessary for + dlltool to build functioning DLLs. + +2000-01-10 Philip Blundell + + * config.bfd (arm*-*-linux-gnu*): Match instead of arm*-*-linux-gnu. + (arm*-*-conix*): New target. + +2000-01-10 Egor Duda + + * config.bfd: Include elf32_i386 vector to target list for cygwin + and mingw. + + * config.in: Undefine HAVE_WIN32_PSTATUS_T. + * configure.in: Test for structure win32_pstatus_t in + + * configure: Regenerate. + + * elf.c (elfcore_grok_win32pstatus): New function: process + win32_pstatus_t notes in elf core file. + (elfcore_grok_note): Detect win32_pstatus notes. + +2000-01-03 Martin v. Loewis + + * elflink.c (_bfd_elf_link_record_dynamic_symbol): Process symbol + visibility. + * elflink.h (elf_link_add_object_symbols): Combine visibilities. + * elf.c (bfd_elf_print_symbol): Interpret st_other as visibility. + +For older changes see ChangeLog-9899 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.11.92.0.12.3/bfd/ChangeLog.linux binutils-2.11.93.0.2/bfd/ChangeLog.linux --- binutils-2.11.92.0.12.3/bfd/ChangeLog.linux Wed Nov 28 22:55:46 2001 +++ binutils-2.11.93.0.2/bfd/ChangeLog.linux Sun Feb 3 11:22:30 2002 @@ -1,14 +1,7 @@ -2001-11-27 H.J. Lu +2001-12-17 H.J. Lu - * elflink.h (elf_bfd_discard_info): Skip if the input bfd isn't - ELF. - -2001-11-26 H.J. Lu - - * elflink.h (elf_add_default_symbol): New. - (elf_link_add_object_symbols): Call elf_add_default_symbol () - to create an indirect symbol from the default for the symbol - with the default version if needed. + * elflink.h (elf_link_check_versioned_symbol): Updated the call + to elf_swap_symbol_in. 2001-10-22 H.J. Lu diff -uprN binutils-2.11.92.0.12.3/bfd/Makefile.am binutils-2.11.93.0.2/bfd/Makefile.am --- binutils-2.11.92.0.12.3/bfd/Makefile.am Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/Makefile.am Sun Feb 3 11:22:30 2002 @@ -25,20 +25,24 @@ BFD_H = bfd.h # for the debugger, so if you are downloading things as S-records you # need two copies of the executable, one to download and one for the # debugger). -BFD_LIBS = \ +BFD32_LIBS = \ archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \ format.lo init.lo libbfd.lo opncls.lo reloc.lo \ section.lo syms.lo targets.lo hash.lo linker.lo \ srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \ merge.lo dwarf2.lo -BFD_LIBS_CFILES = \ +BFD64_LIBS = archive64.lo + +BFD32_LIBS_CFILES = \ archive.c archures.c bfd.c cache.c coffgen.c corefile.c \ format.c init.c libbfd.c opncls.c reloc.c \ section.c syms.c targets.c hash.c linker.c \ srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \ merge.c dwarf2.c +BFD64_LIBS_CFILES = archive64.c + # This list is alphabetized to make it easier to keep in sync # with the decls and initializer in archures.c. ALL_MACHINES = \ @@ -69,6 +73,7 @@ ALL_MACHINES = \ cpu-mcore.lo \ cpu-mips.lo \ cpu-mmix.lo \ + cpu-or32.lo \ cpu-ns32k.lo \ cpu-openrisc.lo \ cpu-pdp11.lo \ @@ -85,6 +90,7 @@ ALL_MACHINES = \ cpu-vax.lo \ cpu-we32k.lo \ cpu-w65.lo \ + cpu-xstormy16.lo \ cpu-z8k.lo ALL_MACHINES_CFILES = \ @@ -115,6 +121,7 @@ ALL_MACHINES_CFILES = \ cpu-mcore.c \ cpu-mips.c \ cpu-mmix.c \ + cpu-or32.c \ cpu-ns32k.c \ cpu-openrisc.c \ cpu-pdp11.c \ @@ -131,6 +138,7 @@ ALL_MACHINES_CFILES = \ cpu-vax.c \ cpu-we32k.c \ cpu-w65.c \ + cpu-xstormy16.c \ cpu-z8k.c # The .o files needed by all of the 32 bit vectors that are configured into @@ -162,6 +170,7 @@ BFD32_BACKENDS = \ coff-m68k.lo \ coff-m88k.lo \ coff-mips.lo \ + coff-or32.lo \ coff-rs6000.lo \ coff-sh.lo \ coff-sparc.lo \ @@ -206,16 +215,20 @@ BFD32_BACKENDS = \ elf32-mcore.lo \ elf32-mips.lo \ elf32-openrisc.lo \ + elf32-or32.lo \ elf32-pj.lo \ elf32-ppc.lo \ elf32-s390.lo \ elf32-sh.lo \ elf32-sh-lin.lo \ + elf32-sh-nbsd.lo \ elf32-sparc.lo \ elf32-v850.lo \ + elf32-xstormy16.lo \ elf32.lo \ elflink.lo \ elf-strtab.lo \ + elf-eh-frame.lo \ epoc-pe-arm.lo \ epoc-pei-arm.lo \ hp300bsd.lo \ @@ -304,6 +317,7 @@ BFD32_BACKENDS_CFILES = \ coff-m68k.c \ coff-m88k.c \ coff-mips.c \ + coff-or32.c \ coff-rs6000.c \ coff-sh.c \ coff-sparc.c \ @@ -347,16 +361,20 @@ BFD32_BACKENDS_CFILES = \ elf32-mcore.c \ elf32-mips.c \ elf32-openrisc.c \ + elf32-or32.c \ elf32-pj.c \ elf32-ppc.c \ elf32-s390.c \ elf32-sh.c \ elf32-sh-lin.c \ + elf32-sh-nbsd.c \ elf32-sparc.c \ elf32-v850.c \ + elf32-xstormy16.c \ elf32.c \ elflink.c \ elf-strtab.c \ + elf-eh-frame.c \ epoc-pe-arm.c \ epoc-pei-arm.c \ hp300bsd.c \ @@ -486,6 +504,7 @@ OPTIONAL_BACKENDS_CFILES = \ WORDSIZE = @wordsize@ ALL_BACKENDS = @all_backends@ BFD_BACKENDS = @bfd_backends@ +BFD_LIBS = @bfd_libs@ BFD_MACHINES = @bfd_machines@ TDEFAULTS = @tdefaults@ @@ -493,7 +512,8 @@ INCLUDES = -D_GNU_SOURCE @HDEFINES@ @COR # C source files that correspond to .o's. SOURCE_CFILES = \ - $(BFD_LIBS_CFILES) \ + $(BFD32_LIBS_CFILES) \ + $(BFD64_LIBS_CFILES) \ $(ALL_MACHINES_CFILES) \ $(BFD32_BACKENDS_CFILES) \ $(BFD64_BACKENDS_CFILES) \ @@ -564,7 +584,7 @@ stamp-ofiles: Makefile ofiles: stamp-ofiles ; @true -libbfd_la_SOURCES = $(BFD_LIBS_CFILES) +libbfd_la_SOURCES = $(BFD32_LIBS_CFILES) $(BFD64_LIBS_CFILES) libbfd_la_DEPENDENCIES = $(OFILES) ofiles libbfd_la_LIBADD = `cat ofiles` @WIN32LIBADD@ libbfd_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@ @@ -637,7 +657,8 @@ pepigen.c : peXXigen.c BFD_H_DEPS= $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h LOCAL_H_DEPS= libbfd.h sysdep.h config.h -$(BFD_LIBS) \ +$(BFD32_LIBS) \ + $(BFD64_LIBS) \ $(ALL_MACHINES) \ $(BFD32_BACKENDS) \ $(BFD64_BACKENDS) \ @@ -713,6 +734,7 @@ stmp-bfd-h: bfd-in3.h BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \ reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c version.h +BFD64_H_FILES = archive64.c LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c cache.c reloc.c archures.c elf.c LIBCOFF_H_FILES = libcoff-in.h coffcode.h @@ -730,7 +752,7 @@ headers: # configured with --enable-maintainer-mode. $(srcdir)/bfd-in2.h: @MAINT@ stmp-bin2-h ; @true -stmp-bin2-h: $(BFD_H_FILES) +stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES) (cd $(docdir); $(MAKE) $(FLAGS_TO_PASS) bfd.h) cp $(docdir)/bfd.h bfd-in2.h-new $(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h @@ -793,7 +815,7 @@ linker.lo: linker.c $(INCDIR)/filenames. genlink.h srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/safe-ctype.h -binary.lo: binary.c $(INCDIR)/safe-ctype.h $(INCDIR)/filenames.h +binary.lo: binary.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/safe-ctype.h @@ -805,6 +827,7 @@ merge.lo: merge.c $(INCDIR)/filenames.h dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h +archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h @@ -833,6 +856,7 @@ cpu-m10300.lo: cpu-m10300.c $(INCDIR)/fi cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filenames.h +cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h cpu-pdp11.lo: cpu-pdp11.c $(INCDIR)/filenames.h @@ -849,6 +873,7 @@ cpu-v850.lo: cpu-v850.c $(INCDIR)/filena cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h +cpu-xstormy16.lo: cpu-xstormy16.c $(INCDIR)/filenames.h cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \ @@ -937,6 +962,9 @@ coff-mips.lo: coff-mips.c $(INCDIR)/file $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \ libcoff.h libecoff.h coffswap.h ecoffswap.h +coff-or32.lo: coff-or32.c $(INCDIR)/filenames.h $(INCDIR)/coff/or32.h \ + $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ + coffcode.h coffswap.h coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/xcoff.h \ $(INCDIR)/coff/rs6000.h libcoff.h libxcoff.h coffcode.h \ @@ -995,7 +1023,7 @@ efi-app-ia32.lo: efi-app-ia32.c $(INCDIR $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h + $(INCDIR)/elf/external.h $(INCDIR)/libiberty.h elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \ @@ -1095,6 +1123,10 @@ elf32-openrisc.lo: elf32-openrisc.c $(IN $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \ elf32-target.h +elf32-or32.lo: elf32-or32.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h \ + $(INCDIR)/libiberty.h elf32-target.h elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \ @@ -1115,6 +1147,10 @@ elf32-sh-lin.lo: elf32-sh-lin.c $(INCDIR $(INCDIR)/elf/internal.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-sh.c \ $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h +elf32-sh-nbsd.lo: elf32-sh-nbsd.c elf32-sh.c $(INCDIR)/filenames.h \ + $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \ + $(INCDIR)/elf/reloc-macros.h elf32-target.h elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \ @@ -1124,6 +1160,11 @@ elf32-v850.lo: elf32-v850.c $(INCDIR)/fi elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/libiberty.h elf32-target.h +elf32-xstormy16.lo: elf32-xstormy16.c $(INCDIR)/filenames.h \ + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xstormy16.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \ + elf32-target.h elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \ @@ -1131,7 +1172,12 @@ elf32.lo: elf32.c elfcode.h $(INCDIR)/fi elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h -elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h +elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h +elf-eh-frame.lo: elf-eh-frame.c $(INCDIR)/filenames.h \ + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \ @@ -1363,7 +1409,7 @@ elf64-mmix.lo: elf64-mmix.c $(INCDIR)/fi elf64-ppc.lo: elf64-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ - elf64-target.h + elf64-ppc.h elf64-target.h elf64-s390.lo: elf64-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h \ diff -uprN binutils-2.11.92.0.12.3/bfd/Makefile.in binutils-2.11.93.0.2/bfd/Makefile.in --- binutils-2.11.92.0.12.3/bfd/Makefile.in Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/Makefile.in Sun Feb 3 11:22:30 2002 @@ -115,6 +115,7 @@ WIN32LIBADD = @WIN32LIBADD@ all_backends = @all_backends@ bfd_backends = @bfd_backends@ bfd_default_target_size = @bfd_default_target_size@ +bfd_libs = @bfd_libs@ bfd_machines = @bfd_machines@ bfd_version = @bfd_version@ bfd_version_date = @bfd_version_date@ @@ -148,7 +149,7 @@ BFD_H = bfd.h # for the debugger, so if you are downloading things as S-records you # need two copies of the executable, one to download and one for the # debugger). -BFD_LIBS = \ +BFD32_LIBS = \ archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \ format.lo init.lo libbfd.lo opncls.lo reloc.lo \ section.lo syms.lo targets.lo hash.lo linker.lo \ @@ -156,7 +157,9 @@ BFD_LIBS = \ merge.lo dwarf2.lo -BFD_LIBS_CFILES = \ +BFD64_LIBS = archive64.lo + +BFD32_LIBS_CFILES = \ archive.c archures.c bfd.c cache.c coffgen.c corefile.c \ format.c init.c libbfd.c opncls.c reloc.c \ section.c syms.c targets.c hash.c linker.c \ @@ -164,6 +167,8 @@ BFD_LIBS_CFILES = \ merge.c dwarf2.c +BFD64_LIBS_CFILES = archive64.c + # This list is alphabetized to make it easier to keep in sync # with the decls and initializer in archures.c. ALL_MACHINES = \ @@ -194,6 +199,7 @@ ALL_MACHINES = \ cpu-mcore.lo \ cpu-mips.lo \ cpu-mmix.lo \ + cpu-or32.lo \ cpu-ns32k.lo \ cpu-openrisc.lo \ cpu-pdp11.lo \ @@ -210,6 +216,7 @@ ALL_MACHINES = \ cpu-vax.lo \ cpu-we32k.lo \ cpu-w65.lo \ + cpu-xstormy16.lo \ cpu-z8k.lo @@ -241,6 +248,7 @@ ALL_MACHINES_CFILES = \ cpu-mcore.c \ cpu-mips.c \ cpu-mmix.c \ + cpu-or32.c \ cpu-ns32k.c \ cpu-openrisc.c \ cpu-pdp11.c \ @@ -257,6 +265,7 @@ ALL_MACHINES_CFILES = \ cpu-vax.c \ cpu-we32k.c \ cpu-w65.c \ + cpu-xstormy16.c \ cpu-z8k.c @@ -289,6 +298,7 @@ BFD32_BACKENDS = \ coff-m68k.lo \ coff-m88k.lo \ coff-mips.lo \ + coff-or32.lo \ coff-rs6000.lo \ coff-sh.lo \ coff-sparc.lo \ @@ -333,16 +343,20 @@ BFD32_BACKENDS = \ elf32-mcore.lo \ elf32-mips.lo \ elf32-openrisc.lo \ + elf32-or32.lo \ elf32-pj.lo \ elf32-ppc.lo \ elf32-s390.lo \ elf32-sh.lo \ elf32-sh-lin.lo \ + elf32-sh-nbsd.lo \ elf32-sparc.lo \ elf32-v850.lo \ + elf32-xstormy16.lo \ elf32.lo \ elflink.lo \ elf-strtab.lo \ + elf-eh-frame.lo \ epoc-pe-arm.lo \ epoc-pei-arm.lo \ hp300bsd.lo \ @@ -432,6 +446,7 @@ BFD32_BACKENDS_CFILES = \ coff-m68k.c \ coff-m88k.c \ coff-mips.c \ + coff-or32.c \ coff-rs6000.c \ coff-sh.c \ coff-sparc.c \ @@ -475,16 +490,20 @@ BFD32_BACKENDS_CFILES = \ elf32-mcore.c \ elf32-mips.c \ elf32-openrisc.c \ + elf32-or32.c \ elf32-pj.c \ elf32-ppc.c \ elf32-s390.c \ elf32-sh.c \ elf32-sh-lin.c \ + elf32-sh-nbsd.c \ elf32-sparc.c \ elf32-v850.c \ + elf32-xstormy16.c \ elf32.c \ elflink.c \ elf-strtab.c \ + elf-eh-frame.c \ epoc-pe-arm.c \ epoc-pei-arm.c \ hp300bsd.c \ @@ -619,6 +638,7 @@ OPTIONAL_BACKENDS_CFILES = \ WORDSIZE = @wordsize@ ALL_BACKENDS = @all_backends@ BFD_BACKENDS = @bfd_backends@ +BFD_LIBS = @bfd_libs@ BFD_MACHINES = @bfd_machines@ TDEFAULTS = @tdefaults@ @@ -626,7 +646,8 @@ INCLUDES = -D_GNU_SOURCE @HDEFINES@ @COR # C source files that correspond to .o's. SOURCE_CFILES = \ - $(BFD_LIBS_CFILES) \ + $(BFD32_LIBS_CFILES) \ + $(BFD64_LIBS_CFILES) \ $(ALL_MACHINES_CFILES) \ $(BFD32_BACKENDS_CFILES) \ $(BFD64_BACKENDS_CFILES) \ @@ -664,7 +685,7 @@ BLD_POTFILES = $(BUILD_CFILES) $(BUILD_H # COREFILE Core file routines for a native configuration OFILES = $(BFD_BACKENDS) $(BFD_MACHINES) @COREFILE@ -libbfd_la_SOURCES = $(BFD_LIBS_CFILES) +libbfd_la_SOURCES = $(BFD32_LIBS_CFILES) $(BFD64_LIBS_CFILES) libbfd_la_DEPENDENCIES = $(OFILES) ofiles libbfd_la_LIBADD = `cat ofiles` @WIN32LIBADD@ libbfd_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@ @@ -683,6 +704,7 @@ LOCAL_H_DEPS = libbfd.h sysdep.h config. BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \ reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c version.h +BFD64_H_FILES = archive64.c LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c cache.c reloc.c archures.c elf.c LIBCOFF_H_FILES = libcoff-in.h coffcode.h @@ -711,7 +733,7 @@ LTLIBRARIES = $(lib_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 \ syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo \ -ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo +ihex.lo stabs.lo stab-syms.lo merge.lo dwarf2.lo archive64.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -724,7 +746,7 @@ configure.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES) OBJECTS = $(libbfd_a_OBJECTS) $(libbfd_la_OBJECTS) @@ -1193,7 +1215,8 @@ pepigen.c : peXXigen.c rm -f pepigen.c sed -e s/XX/pep/g < $(srcdir)/peXXigen.c > pepigen.new mv -f pepigen.new pepigen.c -$(BFD_LIBS) \ +$(BFD32_LIBS) \ + $(BFD64_LIBS) \ $(ALL_MACHINES) \ $(BFD32_BACKENDS) \ $(BFD64_BACKENDS) \ @@ -1281,7 +1304,7 @@ headers: # configured with --enable-maintainer-mode. $(srcdir)/bfd-in2.h: @MAINT@ stmp-bin2-h ; @true -stmp-bin2-h: $(BFD_H_FILES) +stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES) (cd $(docdir); $(MAKE) $(FLAGS_TO_PASS) bfd.h) cp $(docdir)/bfd.h bfd-in2.h-new $(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h @@ -1336,7 +1359,7 @@ linker.lo: linker.c $(INCDIR)/filenames. genlink.h srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/safe-ctype.h -binary.lo: binary.c $(INCDIR)/safe-ctype.h $(INCDIR)/filenames.h +binary.lo: binary.c $(INCDIR)/filenames.h $(INCDIR)/safe-ctype.h tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/safe-ctype.h @@ -1348,6 +1371,7 @@ merge.lo: merge.c $(INCDIR)/filenames.h dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h +archive64.lo: archive64.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h @@ -1376,6 +1400,7 @@ cpu-m10300.lo: cpu-m10300.c $(INCDIR)/fi cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filenames.h +cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h cpu-pdp11.lo: cpu-pdp11.c $(INCDIR)/filenames.h @@ -1392,6 +1417,7 @@ cpu-v850.lo: cpu-v850.c $(INCDIR)/filena cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h +cpu-xstormy16.lo: cpu-xstormy16.c $(INCDIR)/filenames.h cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \ @@ -1480,6 +1506,9 @@ coff-mips.lo: coff-mips.c $(INCDIR)/file $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h $(INCDIR)/coff/external.h \ libcoff.h libecoff.h coffswap.h ecoffswap.h +coff-or32.lo: coff-or32.c $(INCDIR)/filenames.h $(INCDIR)/coff/or32.h \ + $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \ + coffcode.h coffswap.h coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/xcoff.h \ $(INCDIR)/coff/rs6000.h libcoff.h libxcoff.h coffcode.h \ @@ -1538,7 +1567,7 @@ efi-app-ia32.lo: efi-app-ia32.c $(INCDIR $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ - $(INCDIR)/elf/external.h + $(INCDIR)/elf/external.h $(INCDIR)/libiberty.h elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \ @@ -1638,6 +1667,10 @@ elf32-openrisc.lo: elf32-openrisc.c $(IN $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \ elf32-target.h +elf32-or32.lo: elf32-or32.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h \ + $(INCDIR)/libiberty.h elf32-target.h elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \ @@ -1658,6 +1691,10 @@ elf32-sh-lin.lo: elf32-sh-lin.c $(INCDIR $(INCDIR)/elf/internal.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-sh.c \ $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h +elf32-sh-nbsd.lo: elf32-sh-nbsd.c elf32-sh.c $(INCDIR)/filenames.h \ + $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \ + $(INCDIR)/elf/reloc-macros.h elf32-target.h elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \ @@ -1667,6 +1704,11 @@ elf32-v850.lo: elf32-v850.c $(INCDIR)/fi elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/libiberty.h elf32-target.h +elf32-xstormy16.lo: elf32-xstormy16.c $(INCDIR)/filenames.h \ + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/xstormy16.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/libiberty.h \ + elf32-target.h elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h elfcore.h \ @@ -1674,7 +1716,12 @@ elf32.lo: elf32.c elfcode.h $(INCDIR)/fi elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h -elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h $(INCDIR)/hashtab.h +elf-strtab.lo: elf-strtab.c $(INCDIR)/filenames.h elf-bfd.h \ + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/hashtab.h +elf-eh-frame.lo: elf-eh-frame.c $(INCDIR)/filenames.h \ + elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/external.h \ $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \ @@ -1906,7 +1953,7 @@ elf64-mmix.lo: elf64-mmix.c $(INCDIR)/fi elf64-ppc.lo: elf64-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \ - elf64-target.h + elf64-ppc.h elf64-target.h elf64-s390.lo: elf64-s390.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/elf/s390.h $(INCDIR)/elf/reloc-macros.h \ diff -uprN binutils-2.11.92.0.12.3/bfd/aix386-core.c binutils-2.11.93.0.2/bfd/aix386-core.c --- binutils-2.11.92.0.12.3/bfd/aix386-core.c Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/bfd/aix386-core.c Sun Feb 3 11:22:30 2002 @@ -2,7 +2,7 @@ This was based on trad-core.c, which was written by John Gilmore of Cygnus Support. Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1996, 1998, 1999, 2000, - 2001 + 2001, 2002 Free Software Foundation, Inc. Written by Minh Tran-Le . Converted to back end form by Ian Lance Taylor . @@ -108,96 +108,85 @@ aix386_core_file_p (abfd) bfd_set_error (bfd_error_wrong_format); loser: bfd_release (abfd, (char *) mergem); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); return 0; } set_tdata (abfd, &mergem->coredata); core_hdr (abfd) = core; - /* Create the sections. This is raunchy, but bfd_close wants to - reclaim them. */ - amt = sizeof (asection); - core_regsec (abfd) = (asection *) bfd_zalloc (abfd, amt); + /* Create the sections. */ + core_regsec (abfd) = bfd_make_section_anyway (abfd, ".reg"); if (core_regsec (abfd) == NULL) goto loser; - core_reg2sec (abfd) = (asection *) bfd_zalloc (abfd, amt); + core_regsec (abfd)->flags = SEC_HAS_CONTENTS; + core_regsec (abfd)->_raw_size = sizeof (core->cd_regs); + core_regsec (abfd)->vma = (bfd_vma) -1; + + /* We'll access the regs afresh in the core file, like any section. */ + core_regsec (abfd)->filepos = + (file_ptr) offsetof (struct corehdr, cd_regs[0]); + + core_reg2sec (abfd) = bfd_make_section_anyway (abfd, ".reg2"); if (core_reg2sec (abfd) == NULL) /* bfd_release frees everything allocated after it's arg. */ goto loser; + core_reg2sec (abfd)->flags = SEC_HAS_CONTENTS; + core_reg2sec (abfd)->_raw_size = sizeof (core->cd_fpregs); + core_reg2sec (abfd)->vma = (bfd_vma) -1; + core_reg2sec (abfd)->filepos = + (file_ptr) offsetof (struct corehdr, cd_fpregs); + for (i = 0, n = 0; (i < MAX_CORE_SEGS) && (core->cd_segs[i].cs_type); i++) { + const char *sname; + flagword flags; + if (core->cd_segs[i].cs_offset == 0) continue; - core_section (abfd, n) = (asection *) bfd_zalloc (abfd, amt); - if (core_section (abfd, n) == NULL) - goto loser; switch (core->cd_segs[i].cs_type) { case COR_TYPE_DATA: - core_section (abfd, n)->name = ".data"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_LOAD + - SEC_HAS_CONTENTS); + sname = ".data"; + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; break; case COR_TYPE_STACK: - core_section (abfd, n)->name = ".stack"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_LOAD + - SEC_HAS_CONTENTS); + sname = ".stack"; + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; break; case COR_TYPE_LIBDATA: - core_section (abfd, n)->name = ".libdata"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS); + sname = ".libdata"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; break; case COR_TYPE_WRITE: - core_section (abfd, n)->name = ".writeable"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS); + sname = ".writeable"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; break; case COR_TYPE_MSC: - core_section (abfd, n)->name = ".misc"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS); + sname = ".misc"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; break; default: - core_section (abfd, n)->name = ".unknown"; - core_section (abfd, n)->flags = (SEC_ALLOC + SEC_HAS_CONTENTS); + sname = ".unknown"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; break; } + core_section (abfd, n) = bfd_make_section_anyway (abfd, sname); + if (core_section (abfd, n) == NULL) + goto loser; + + core_section (abfd, n)->flags = flags; core_section (abfd, n)->_raw_size = core->cd_segs[i].cs_len; core_section (abfd, n)->vma = core->cd_segs[i].cs_address; core_section (abfd, n)->filepos = core->cd_segs[i].cs_offset; core_section (abfd, n)->alignment_power = 2; - core_section (abfd, n)->next = NULL; - if (n > 0) - core_section (abfd, (n - 1))->next = core_section (abfd, n); - - abfd->section_count = ++n; + n++; } - core_regsec (abfd)->name = ".reg"; - core_reg2sec (abfd)->name = ".reg2"; - - core_regsec (abfd)->flags = SEC_HAS_CONTENTS; - core_reg2sec (abfd)->flags = SEC_HAS_CONTENTS; - - core_regsec (abfd)->_raw_size = sizeof (core->cd_regs); - core_reg2sec (abfd)->_raw_size = sizeof (core->cd_fpregs); - - core_regsec (abfd)->vma = (bfd_vma) -1; - core_reg2sec (abfd)->vma = (bfd_vma) -1; - - /* We'll access the regs afresh in the core file, like any section. */ - core_regsec (abfd)->filepos = - (file_ptr) offsetof (struct corehdr, cd_regs[0]); - core_reg2sec (abfd)->filepos = - (file_ptr) offsetof (struct corehdr, cd_fpregs); - - /* Add the 2 reg fake sections to abfd. */ - abfd->section_count += 2; - abfd->sections = core_regsec (abfd); - core_regsec (abfd)->next = core_reg2sec (abfd); - core_reg2sec (abfd)->next = core_section (abfd, 0); - return abfd->xvec; } diff -uprN binutils-2.11.92.0.12.3/bfd/aoutf1.h binutils-2.11.93.0.2/bfd/aoutf1.h --- binutils-2.11.92.0.12.3/bfd/aoutf1.h Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/bfd/aoutf1.h Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* A.out "format 1" file handling code for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001 + 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -641,6 +641,8 @@ sunos4_core_file_p (abfd) { loser: bfd_release (abfd, (char *) mergem); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); return 0; } @@ -667,31 +669,24 @@ sunos4_core_file_p (abfd) abfd->tdata.sun_core_data = &mergem->suncoredata; abfd->tdata.sun_core_data->hdr = core; - /* create the sections. This is raunchy, but bfd_close wants to reclaim - them */ - amt = sizeof (asection); - core_stacksec (abfd) = (asection *) bfd_zalloc (abfd, amt); + /* Create the sections. */ + core_stacksec (abfd) = bfd_make_section_anyway (abfd, ".stack"); if (core_stacksec (abfd) == NULL) /* bfd_release frees everything allocated after it's arg. */ goto loser; - core_datasec (abfd) = (asection *) bfd_zalloc (abfd, amt); + core_datasec (abfd) = bfd_make_section_anyway (abfd, ".data"); if (core_datasec (abfd) == NULL) goto loser; - core_regsec (abfd) = (asection *) bfd_zalloc (abfd, amt); + core_regsec (abfd) = bfd_make_section_anyway (abfd, ".reg"); if (core_regsec (abfd) == NULL) goto loser; - core_reg2sec (abfd) = (asection *) bfd_zalloc (abfd, amt); + core_reg2sec (abfd) = bfd_make_section_anyway (abfd, ".reg2"); if (core_reg2sec (abfd) == NULL) goto loser; - core_stacksec (abfd)->name = ".stack"; - core_datasec (abfd)->name = ".data"; - core_regsec (abfd)->name = ".reg"; - core_reg2sec (abfd)->name = ".reg2"; - core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; core_regsec (abfd)->flags = SEC_HAS_CONTENTS; @@ -719,13 +714,6 @@ sunos4_core_file_p (abfd) core_regsec (abfd)->alignment_power = 2; core_reg2sec (abfd)->alignment_power = 2; - abfd->sections = core_stacksec (abfd); - core_stacksec (abfd)->next = core_datasec (abfd); - core_datasec (abfd)->next = core_regsec (abfd); - core_regsec (abfd)->next = core_reg2sec (abfd); - - abfd->section_count = 4; - return abfd->xvec; } diff -uprN binutils-2.11.92.0.12.3/bfd/archive.c binutils-2.11.93.0.2/bfd/archive.c --- binutils-2.11.92.0.12.3/bfd/archive.c Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/archive.c Sun Feb 3 11:22:30 2002 @@ -164,6 +164,7 @@ static char *get_extended_arelt_filename const char *name)); static boolean do_slurp_bsd_armap PARAMS ((bfd *abfd)); static boolean do_slurp_coff_armap PARAMS ((bfd *abfd)); +boolean bfd_elf64_archive_slurp_armap PARAMS ((bfd *abfd)); static const char *normalize PARAMS ((bfd *, const char *file)); static struct areltdata *bfd_ar_hdr_from_filesystem PARAMS ((bfd *abfd, const char *, @@ -934,9 +935,13 @@ bfd_slurp_armap (abfd) return do_slurp_coff_armap (abfd); else if (!strncmp (nextname, "/SYM64/ ", 16)) { - /* Irix 6 archive--must be recognized by code in elf64-mips.c. */ + /* 64bit ELF (Irix 6) archive. */ +#ifdef BFD64 + return bfd_elf64_archive_slurp_armap (abfd); +#else bfd_set_error (bfd_error_wrong_format); return false; +#endif } bfd_has_map (abfd) = false; diff -uprN binutils-2.11.92.0.12.3/bfd/archive64.c binutils-2.11.93.0.2/bfd/archive64.c --- binutils-2.11.92.0.12.3/bfd/archive64.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/archive64.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,245 @@ +/* MIPS-specific support for 64-bit ELF + Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Free Software Foundation, Inc. + Ian Lance Taylor, Cygnus Support + Linker support added by Mark Mitchell, CodeSourcery, LLC. + + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* This file supports the 64-bit (MIPS) ELF archives. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "aout/ar.h" + +/* Irix 6 defines a 64bit archive map format, so that they can + have archives more than 4 GB in size. */ + +boolean bfd_elf64_archive_slurp_armap PARAMS ((bfd *)); +boolean bfd_elf64_archive_write_armap + PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); + +/* Read an Irix 6 armap. */ + +boolean +bfd_elf64_archive_slurp_armap (abfd) + bfd *abfd; +{ + struct artdata *ardata = bfd_ardata (abfd); + char nextname[17]; + file_ptr arhdrpos; + bfd_size_type i, parsed_size, nsymz, stringsize, carsym_size, ptrsize; + struct areltdata *mapdata; + bfd_byte int_buf[8]; + char *stringbase; + bfd_byte *raw_armap = NULL; + carsym *carsyms; + bfd_size_type amt; + + ardata->symdefs = NULL; + + /* Get the name of the first element. */ + arhdrpos = bfd_tell (abfd); + i = bfd_bread ((PTR) nextname, (bfd_size_type) 16, abfd); + if (i == 0) + return true; + if (i != 16) + return false; + + if (bfd_seek (abfd, (file_ptr) - 16, SEEK_CUR) != 0) + return false; + + /* Archives with traditional armaps are still permitted. */ + if (strncmp (nextname, "/ ", 16) == 0) + return bfd_slurp_armap (abfd); + + if (strncmp (nextname, "/SYM64/ ", 16) != 0) + { + bfd_has_map (abfd) = false; + return true; + } + + mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd); + if (mapdata == NULL) + return false; + parsed_size = mapdata->parsed_size; + bfd_release (abfd, (PTR) mapdata); + + if (bfd_bread (int_buf, (bfd_size_type) 8, abfd) != 8) + { + if (bfd_get_error () != bfd_error_system_call) + bfd_set_error (bfd_error_malformed_archive); + return false; + } + + nsymz = bfd_getb64 (int_buf); + stringsize = parsed_size - 8 * nsymz - 8; + + carsym_size = nsymz * sizeof (carsym); + ptrsize = 8 * nsymz; + + amt = carsym_size + stringsize + 1; + ardata->symdefs = (carsym *) bfd_zalloc (abfd, amt); + if (ardata->symdefs == NULL) + return false; + carsyms = ardata->symdefs; + stringbase = ((char *) ardata->symdefs) + carsym_size; + + raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize); + if (raw_armap == NULL) + goto release_symdefs; + + if (bfd_bread (raw_armap, ptrsize, abfd) != ptrsize + || bfd_bread (stringbase, stringsize, abfd) != stringsize) + { + if (bfd_get_error () != bfd_error_system_call) + bfd_set_error (bfd_error_malformed_archive); + goto release_raw_armap; + } + + for (i = 0; i < nsymz; i++) + { + carsyms->file_offset = bfd_getb64 (raw_armap + i * 8); + carsyms->name = stringbase; + stringbase += strlen (stringbase) + 1; + ++carsyms; + } + *stringbase = '\0'; + + ardata->symdef_count = nsymz; + ardata->first_file_filepos = bfd_tell (abfd); + /* Pad to an even boundary if you have to. */ + ardata->first_file_filepos += (ardata->first_file_filepos) % 2; + + bfd_has_map (abfd) = true; + bfd_release (abfd, raw_armap); + + return true; + +release_raw_armap: + bfd_release (abfd, raw_armap); +release_symdefs: + bfd_release (abfd, ardata->symdefs); + return false; +} + +/* Write out an Irix 6 armap. The Irix 6 tools are supposed to be + able to handle ordinary ELF armaps, but at least on Irix 6.2 the + linker crashes. */ + +boolean +bfd_elf64_archive_write_armap (arch, elength, map, symbol_count, stridx) + bfd *arch; + unsigned int elength; + struct orl *map; + unsigned int symbol_count; + int stridx; +{ + unsigned int ranlibsize = (symbol_count * 8) + 8; + unsigned int stringsize = stridx; + unsigned int mapsize = stringsize + ranlibsize; + file_ptr archive_member_file_ptr; + bfd *current = arch->archive_head; + unsigned int count; + struct ar_hdr hdr; + unsigned int i; + int padding; + bfd_byte buf[8]; + + padding = BFD_ALIGN (mapsize, 8) - mapsize; + mapsize += padding; + + /* work out where the first object file will go in the archive */ + archive_member_file_ptr = (mapsize + + elength + + sizeof (struct ar_hdr) + + SARMAG); + + memset ((char *) (&hdr), 0, sizeof (struct ar_hdr)); + strcpy (hdr.ar_name, "/SYM64/"); + sprintf (hdr.ar_size, "%-10d", (int) mapsize); + sprintf (hdr.ar_date, "%ld", (long) time (NULL)); + /* This, at least, is what Intel coff sets the values to.: */ + sprintf ((hdr.ar_uid), "%d", 0); + sprintf ((hdr.ar_gid), "%d", 0); + sprintf ((hdr.ar_mode), "%-7o", (unsigned) 0); + strncpy (hdr.ar_fmag, ARFMAG, 2); + + for (i = 0; i < sizeof (struct ar_hdr); i++) + if (((char *) (&hdr))[i] == '\0') + (((char *) (&hdr))[i]) = ' '; + + /* Write the ar header for this item and the number of symbols */ + + if (bfd_bwrite ((PTR) &hdr, (bfd_size_type) sizeof (struct ar_hdr), arch) + != sizeof (struct ar_hdr)) + return false; + + bfd_putb64 ((bfd_vma) symbol_count, buf); + if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8) + return false; + + /* Two passes, first write the file offsets for each symbol - + remembering that each offset is on a two byte boundary. */ + + /* Write out the file offset for the file associated with each + symbol, and remember to keep the offsets padded out. */ + + current = arch->archive_head; + count = 0; + while (current != (bfd *) NULL && count < symbol_count) + { + /* For each symbol which is used defined in this object, write out + the object file's address in the archive */ + + while (map[count].u.abfd == current) + { + bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf); + if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8) + return false; + count++; + } + /* Add size of this archive entry */ + archive_member_file_ptr += (arelt_size (current) + + sizeof (struct ar_hdr)); + /* remember about the even alignment */ + archive_member_file_ptr += archive_member_file_ptr % 2; + current = current->next; + } + + /* now write the strings themselves */ + for (count = 0; count < symbol_count; count++) + { + size_t len = strlen (*map[count].name) + 1; + + if (bfd_bwrite (*map[count].name, (bfd_size_type) len, arch) != len) + return false; + } + + /* The spec says that this should be padded to an 8 byte boundary. + However, the Irix 6.2 tools do not appear to do this. */ + while (padding != 0) + { + if (bfd_bwrite ("", (bfd_size_type) 1, arch) != 1) + return false; + --padding; + } + + return true; +} diff -uprN binutils-2.11.92.0.12.3/bfd/archures.c binutils-2.11.93.0.2/bfd/archures.c --- binutils-2.11.92.0.12.3/bfd/archures.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/archures.c Thu Feb 7 10:21:03 2002 @@ -1,6 +1,6 @@ /* BFD library support routines for architectures. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Hacked by John Gilmore and Steve Chamberlain of Cygnus Support. @@ -69,8 +69,8 @@ DESCRIPTION .enum bfd_architecture .{ -. bfd_arch_unknown, {* File arch not known *} -. bfd_arch_obscure, {* Arch known, not one of these *} +. bfd_arch_unknown, {* File arch not known. *} +. bfd_arch_obscure, {* Arch known, not one of these. *} . bfd_arch_m68k, {* Motorola 68xxx *} .#define bfd_mach_m68000 1 .#define bfd_mach_m68008 2 @@ -92,7 +92,7 @@ DESCRIPTION . available to machines with higher numbers. . The exception is the "ca", which is . incompatible with all other machines except -. "core". *} +. "core". *} . .#define bfd_mach_i960_core 1 .#define bfd_mach_i960_ka_sa 2 @@ -103,6 +103,8 @@ DESCRIPTION .#define bfd_mach_i960_jx 7 .#define bfd_mach_i960_hx 8 . +. bfd_arch_or32, {* OpenRISC 32 *} +. . bfd_arch_a29k, {* AMD 29000 *} . bfd_arch_sparc, {* SPARC *} .#define bfd_mach_sparc 1 @@ -110,12 +112,12 @@ DESCRIPTION .#define bfd_mach_sparc_sparclet 2 .#define bfd_mach_sparc_sparclite 3 .#define bfd_mach_sparc_v8plus 4 -.#define bfd_mach_sparc_v8plusa 5 {* with ultrasparc add'ns *} +.#define bfd_mach_sparc_v8plusa 5 {* with ultrasparc add'ns. *} .#define bfd_mach_sparc_sparclite_le 6 .#define bfd_mach_sparc_v9 7 -.#define bfd_mach_sparc_v9a 8 {* with ultrasparc add'ns *} -.#define bfd_mach_sparc_v8plusb 9 {* with cheetah add'ns *} -.#define bfd_mach_sparc_v9b 10 {* with cheetah add'ns *} +.#define bfd_mach_sparc_v9a 8 {* with ultrasparc add'ns. *} +.#define bfd_mach_sparc_v8plusb 9 {* with cheetah add'ns. *} +.#define bfd_mach_sparc_v9b 10 {* with cheetah add'ns. *} .{* Nonzero if MACH has the v9 instruction set. *} .#define bfd_mach_sparc_v9_p(mach) \ . ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ @@ -163,6 +165,7 @@ DESCRIPTION . bfd_arch_pdp11, {* DEC PDP-11 *} . bfd_arch_powerpc, {* PowerPC *} .#define bfd_mach_ppc 0 +.#define bfd_mach_ppc64 1 .#define bfd_mach_ppc_403 403 .#define bfd_mach_ppc_403gc 4030 .#define bfd_mach_ppc_505 505 @@ -208,7 +211,7 @@ DESCRIPTION .#define bfd_mach_alpha_ev4 0x10 .#define bfd_mach_alpha_ev5 0x20 .#define bfd_mach_alpha_ev6 0x30 -. bfd_arch_arm, {* Advanced Risc Machines ARM *} +. bfd_arch_arm, {* Advanced Risc Machines ARM. *} .#define bfd_mach_arm_2 1 .#define bfd_mach_arm_2a 2 .#define bfd_mach_arm_3 3 @@ -234,7 +237,7 @@ DESCRIPTION .#define bfd_mach_arc_7 2 .#define bfd_mach_arc_8 3 . bfd_arch_m32r, {* Mitsubishi M32R/D *} -.#define bfd_mach_m32r 0 {* backwards compatibility *} +.#define bfd_mach_m32r 0 {* For backwards compatibility. *} .#define bfd_mach_m32rx 'x' . bfd_arch_mn10200, {* Matsushita MN10200 *} . bfd_arch_mn10300, {* Matsushita MN10300 *} @@ -247,7 +250,7 @@ DESCRIPTION .#define bfd_mach_ia64_elf64 0 .#define bfd_mach_ia64_elf32 1 . bfd_arch_pj, -. bfd_arch_avr, {* Atmel AVR microcontrollers *} +. bfd_arch_avr, {* Atmel AVR microcontrollers. *} .#define bfd_mach_avr1 1 .#define bfd_mach_avr2 2 .#define bfd_mach_avr3 3 @@ -258,7 +261,9 @@ DESCRIPTION .#define bfd_mach_s390_esa 0 .#define bfd_mach_s390_esame 1 . bfd_arch_openrisc, {* OpenRISC *} -. bfd_arch_mmix, {* Donald Knuth's educational processor *} +. bfd_arch_mmix, {* Donald Knuth's educational processor. *} +. bfd_arch_xstormy16, +.#define bfd_mach_xstormy16 0 . bfd_arch_last . }; */ @@ -291,16 +296,20 @@ DESCRIPTION . boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); . . const struct bfd_arch_info *next; -.} bfd_arch_info_type; +.} +.bfd_arch_info_type; +. */ extern const bfd_arch_info_type bfd_a29k_arch; extern const bfd_arch_info_type bfd_alpha_arch; extern const bfd_arch_info_type bfd_arc_arch; extern const bfd_arch_info_type bfd_arm_arch; +extern const bfd_arch_info_type bfd_avr_arch; extern const bfd_arch_info_type bfd_cris_arch; extern const bfd_arch_info_type bfd_d10v_arch; extern const bfd_arch_info_type bfd_d30v_arch; +extern const bfd_arch_info_type bfd_fr30_arch; extern const bfd_arch_info_type bfd_h8300_arch; extern const bfd_arch_info_type bfd_h8500_arch; extern const bfd_arch_info_type bfd_hppa_arch; @@ -308,84 +317,88 @@ extern const bfd_arch_info_type bfd_i370 extern const bfd_arch_info_type bfd_i386_arch; extern const bfd_arch_info_type bfd_i860_arch; extern const bfd_arch_info_type bfd_i960_arch; +extern const bfd_arch_info_type bfd_ia64_arch; extern const bfd_arch_info_type bfd_m32r_arch; extern const bfd_arch_info_type bfd_m68hc11_arch; extern const bfd_arch_info_type bfd_m68hc12_arch; extern const bfd_arch_info_type bfd_m68k_arch; extern const bfd_arch_info_type bfd_m88k_arch; +extern const bfd_arch_info_type bfd_mcore_arch; extern const bfd_arch_info_type bfd_mips_arch; +extern const bfd_arch_info_type bfd_mmix_arch; extern const bfd_arch_info_type bfd_mn10200_arch; extern const bfd_arch_info_type bfd_mn10300_arch; +extern const bfd_arch_info_type bfd_ns32k_arch; +extern const bfd_arch_info_type bfd_openrisc_arch; +extern const bfd_arch_info_type bfd_or32_arch; extern const bfd_arch_info_type bfd_pdp11_arch; -extern const bfd_arch_info_type bfd_powerpc_arch; -extern const bfd_arch_info_type bfd_rs6000_arch; extern const bfd_arch_info_type bfd_pj_arch; +extern const bfd_arch_info_type bfd_powerpc_archs[]; +#define bfd_powerpc_arch bfd_powerpc_archs[0] +extern const bfd_arch_info_type bfd_rs6000_arch; +extern const bfd_arch_info_type bfd_s390_arch; extern const bfd_arch_info_type bfd_sh_arch; extern const bfd_arch_info_type bfd_sparc_arch; extern const bfd_arch_info_type bfd_tic30_arch; extern const bfd_arch_info_type bfd_tic54x_arch; extern const bfd_arch_info_type bfd_tic80_arch; +extern const bfd_arch_info_type bfd_v850_arch; extern const bfd_arch_info_type bfd_vax_arch; extern const bfd_arch_info_type bfd_we32k_arch; -extern const bfd_arch_info_type bfd_z8k_arch; -extern const bfd_arch_info_type bfd_ns32k_arch; extern const bfd_arch_info_type bfd_w65_arch; -extern const bfd_arch_info_type bfd_v850_arch; -extern const bfd_arch_info_type bfd_fr30_arch; -extern const bfd_arch_info_type bfd_mcore_arch; -extern const bfd_arch_info_type bfd_avr_arch; -extern const bfd_arch_info_type bfd_ia64_arch; -extern const bfd_arch_info_type bfd_s390_arch; -extern const bfd_arch_info_type bfd_openrisc_arch; -extern const bfd_arch_info_type bfd_mmix_arch; +extern const bfd_arch_info_type bfd_xstormy16_arch; +extern const bfd_arch_info_type bfd_z8k_arch; -static const bfd_arch_info_type * const bfd_archures_list[] = { +static const bfd_arch_info_type * const bfd_archures_list[] = + { #ifdef SELECT_ARCHITECTURES - SELECT_ARCHITECTURES, + SELECT_ARCHITECTURES, #else - &bfd_a29k_arch, - &bfd_alpha_arch, - &bfd_arc_arch, - &bfd_arm_arch, - &bfd_cris_arch, - &bfd_d10v_arch, - &bfd_d30v_arch, - &bfd_h8300_arch, - &bfd_h8500_arch, - &bfd_hppa_arch, - &bfd_i370_arch, - &bfd_i386_arch, - &bfd_i860_arch, - &bfd_i960_arch, - &bfd_m32r_arch, - &bfd_m68hc11_arch, - &bfd_m68hc12_arch, - &bfd_m68k_arch, - &bfd_m88k_arch, - &bfd_mips_arch, - &bfd_mn10200_arch, - &bfd_mn10300_arch, - &bfd_pdp11_arch, - &bfd_powerpc_arch, - &bfd_rs6000_arch, - &bfd_sh_arch, - &bfd_sparc_arch, - &bfd_tic30_arch, - &bfd_tic54x_arch, - &bfd_tic80_arch, - &bfd_vax_arch, - &bfd_we32k_arch, - &bfd_z8k_arch, - &bfd_ns32k_arch, - &bfd_w65_arch, - &bfd_v850_arch, - &bfd_fr30_arch, - &bfd_mcore_arch, - &bfd_avr_arch, - &bfd_ia64_arch, - &bfd_s390_arch, - &bfd_openrisc_arch, - &bfd_mmix_arch, + &bfd_a29k_arch, + &bfd_alpha_arch, + &bfd_arc_arch, + &bfd_arm_arch, + &bfd_avr_arch, + &bfd_cris_arch, + &bfd_d10v_arch, + &bfd_d30v_arch, + &bfd_fr30_arch, + &bfd_h8300_arch, + &bfd_h8500_arch, + &bfd_hppa_arch, + &bfd_i370_arch, + &bfd_i386_arch, + &bfd_i860_arch, + &bfd_i960_arch, + &bfd_ia64_arch, + &bfd_m32r_arch, + &bfd_m68hc11_arch, + &bfd_m68hc12_arch, + &bfd_m68k_arch, + &bfd_m88k_arch, + &bfd_mcore_arch, + &bfd_mips_arch, + &bfd_mmix_arch, + &bfd_mn10200_arch, + &bfd_mn10300_arch, + &bfd_ns32k_arch, + &bfd_openrisc_arch, + &bfd_or32_arch, + &bfd_pdp11_arch, + &bfd_powerpc_arch, + &bfd_rs6000_arch, + &bfd_s390_arch, + &bfd_sh_arch, + &bfd_sparc_arch, + &bfd_tic30_arch, + &bfd_tic54x_arch, + &bfd_tic80_arch, + &bfd_v850_arch, + &bfd_vax_arch, + &bfd_w65_arch, + &bfd_we32k_arch, + &bfd_xstormy16_arch, + &bfd_z8k_arch, #endif 0 }; diff -uprN binutils-2.11.92.0.12.3/bfd/bfd-in.h binutils-2.11.93.0.2/bfd/bfd-in.h --- binutils-2.11.92.0.12.3/bfd/bfd-in.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/bfd-in.h Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* Main header file for the bfd library -- portable access to object files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -71,7 +71,7 @@ extern "C" { #endif #endif -/* forward declaration */ +/* Forward declaration. */ typedef struct _bfd bfd; /* To squelch erroneous compiler warnings ("illegal pointer @@ -88,8 +88,15 @@ typedef struct _bfd bfd; /* Yup, SVR4 has a "typedef enum boolean" in -fnf */ /* It gets worse if the host also defines a true/false enum... -sts */ /* And even worse if your compiler has built-in boolean types... -law */ +/* And even worse if your compiler provides a stdbool.h that conflicts + with these definitions... gcc 2.95 and later do. -drow */ #if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) #define TRUE_FALSE_ALREADY_DEFINED +#else +#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) +#include +#define TRUE_FALSE_ALREADY_DEFINED +#endif #endif #ifdef MPW /* Pre-emptive strike - get the file with the enum. */ @@ -191,15 +198,17 @@ extern void bfd_fprintf_vma PARAMS ((bfd typedef unsigned int flagword; /* 32 bits of flags */ typedef unsigned char bfd_byte; -/** File formats */ +/* File formats. */ -typedef enum bfd_format { - bfd_unknown = 0, /* file format is unknown */ - bfd_object, /* linker/assember/compiler output */ - bfd_archive, /* object archive file */ - bfd_core, /* core dump */ - bfd_type_end} /* marks the end; don't use it! */ - bfd_format; +typedef enum bfd_format +{ + bfd_unknown = 0, /* File format is unknown. */ + bfd_object, /* Linker/assember/compiler output. */ + bfd_archive, /* Object archive file. */ + bfd_core, /* Core dump. */ + bfd_type_end /* Marks the end; don't use it! */ +} +bfd_format; /* Values that may appear in the flags field of a BFD. These also appear in the object_flags field of the bfd_target structure, where @@ -258,7 +267,7 @@ typedef enum bfd_format { memory. If this is set, iostream points to a bfd_in_memory struct. */ #define BFD_IN_MEMORY 0x800 -/* symbols and relocation */ +/* Symbols and relocation. */ /* A count of carsyms (canonical archive symbols). */ typedef unsigned long symindex; @@ -282,33 +291,40 @@ typedef const struct reloc_howto_struct #define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour) /* A canonical archive symbol. */ -/* This is a type pun with struct ranlib on purpose! */ -typedef struct carsym { +/* This is a type pun with struct ranlib on purpose! */ +typedef struct carsym +{ char *name; - file_ptr file_offset; /* look here to find the file */ -} carsym; /* to make these you call a carsymogen */ + file_ptr file_offset; /* Look here to find the file. */ +} +carsym; /* To make these you call a carsymogen. */ /* Used in generating armaps (archive tables of contents). - Perhaps just a forward definition would do? */ -struct orl { /* output ranlib */ - char **name; /* symbol name */ - union { + Perhaps just a forward definition would do? */ +struct orl /* Output ranlib. */ +{ + char **name; /* Symbol name. */ + union + { file_ptr pos; bfd *abfd; - } u; /* bfd* or file position */ - int namidx; /* index into string table */ + } u; /* bfd* or file position. */ + int namidx; /* Index into string table. */ }; -/* Linenumber stuff */ -typedef struct lineno_cache_entry { - unsigned int line_number; /* Linenumber from start of function*/ - union { - struct symbol_cache_entry *sym; /* Function name */ - bfd_vma offset; /* Offset into section */ +/* Linenumber stuff. */ +typedef struct lineno_cache_entry +{ + unsigned int line_number; /* Linenumber from start of function. */ + union + { + struct symbol_cache_entry *sym; /* Function name. */ + bfd_vma offset; /* Offset into section. */ } u; -} alent; +} +alent; -/* object and core file sections */ +/* Object and core file sections. */ #define align_power(addr, align) \ ( ((addr) + ((1<<(align))-1)) & (-1 << (align))) @@ -447,7 +463,7 @@ extern void bfd_hash_traverse PARAMS ((s #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table -/* User program access to BFD facilities */ +/* User program access to BFD facilities. */ /* Direct I/O routines, for programs which know more about the object file than BFD does. Use higher level routines if possible. */ @@ -636,9 +652,9 @@ extern const char *bfd_elf_get_dt_soname extern struct bfd_link_needed_list *bfd_elf_get_runpath_list PARAMS ((bfd *, struct bfd_link_info *)); extern boolean bfd_elf32_discard_info - PARAMS ((struct bfd_link_info *)); + PARAMS ((bfd *, struct bfd_link_info *)); extern boolean bfd_elf64_discard_info - PARAMS ((struct bfd_link_info *)); + PARAMS ((bfd *, struct bfd_link_info *)); /* Return an upper bound on the number of bytes required to store a copy of ABFD's program header table entries. Return -1 if an error @@ -663,6 +679,9 @@ extern int bfd_get_sign_extend_vma PARAM extern boolean bfd_m68k_elf32_create_embedded_relocs PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *, char **)); +extern boolean bfd_mips_elf32_create_embedded_relocs + PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *, + char **)); /* SunOS shared library support routines for the linker. */ @@ -688,7 +707,8 @@ extern boolean bfd_sparclinux_size_dynam struct _bfd_window_internal; typedef struct _bfd_window_internal bfd_window_internal; -typedef struct _bfd_window { +typedef struct _bfd_window +{ /* What the user asked for. */ PTR data; bfd_size_type size; @@ -699,7 +719,8 @@ typedef struct _bfd_window { application; don't want to give the same region back when the application wants two writable copies! */ struct _bfd_window_internal *i; -} bfd_window; +} +bfd_window; extern void bfd_init_window PARAMS ((bfd_window *)); extern void bfd_free_window PARAMS ((bfd_window *)); @@ -724,6 +745,8 @@ extern boolean bfd_xcoff_size_dynamic_se PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *, unsigned long, unsigned long, unsigned long, boolean, int, boolean, boolean, struct sec **)); +extern boolean bfd_xcoff_link_generate_rtinit + PARAMS ((bfd *, const char *, const char *)); /* Externally visible COFF routines. */ diff -uprN binutils-2.11.92.0.12.3/bfd/bfd-in2.h binutils-2.11.93.0.2/bfd/bfd-in2.h --- binutils-2.11.92.0.12.3/bfd/bfd-in2.h Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/bfd-in2.h Thu Feb 7 10:21:03 2002 @@ -6,7 +6,7 @@ /* Main header file for the bfd library -- portable access to object files. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Cygnus Support. @@ -77,7 +77,7 @@ extern "C" { #endif #endif -/* forward declaration */ +/* Forward declaration. */ typedef struct _bfd bfd; /* To squelch erroneous compiler warnings ("illegal pointer @@ -94,8 +94,15 @@ typedef struct _bfd bfd; /* Yup, SVR4 has a "typedef enum boolean" in -fnf */ /* It gets worse if the host also defines a true/false enum... -sts */ /* And even worse if your compiler has built-in boolean types... -law */ +/* And even worse if your compiler provides a stdbool.h that conflicts + with these definitions... gcc 2.95 and later do. -drow */ #if defined (__GNUG__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) #define TRUE_FALSE_ALREADY_DEFINED +#else +#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) +#include +#define TRUE_FALSE_ALREADY_DEFINED +#endif #endif #ifdef MPW /* Pre-emptive strike - get the file with the enum. */ @@ -197,15 +204,17 @@ extern void bfd_fprintf_vma PARAMS ((bfd typedef unsigned int flagword; /* 32 bits of flags */ typedef unsigned char bfd_byte; -/** File formats */ +/* File formats. */ -typedef enum bfd_format { - bfd_unknown = 0, /* file format is unknown */ - bfd_object, /* linker/assember/compiler output */ - bfd_archive, /* object archive file */ - bfd_core, /* core dump */ - bfd_type_end} /* marks the end; don't use it! */ - bfd_format; +typedef enum bfd_format +{ + bfd_unknown = 0, /* File format is unknown. */ + bfd_object, /* Linker/assember/compiler output. */ + bfd_archive, /* Object archive file. */ + bfd_core, /* Core dump. */ + bfd_type_end /* Marks the end; don't use it! */ +} +bfd_format; /* Values that may appear in the flags field of a BFD. These also appear in the object_flags field of the bfd_target structure, where @@ -264,7 +273,7 @@ typedef enum bfd_format { memory. If this is set, iostream points to a bfd_in_memory struct. */ #define BFD_IN_MEMORY 0x800 -/* symbols and relocation */ +/* Symbols and relocation. */ /* A count of carsyms (canonical archive symbols). */ typedef unsigned long symindex; @@ -288,33 +297,40 @@ typedef const struct reloc_howto_struct #define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour) /* A canonical archive symbol. */ -/* This is a type pun with struct ranlib on purpose! */ -typedef struct carsym { +/* This is a type pun with struct ranlib on purpose! */ +typedef struct carsym +{ char *name; - file_ptr file_offset; /* look here to find the file */ -} carsym; /* to make these you call a carsymogen */ + file_ptr file_offset; /* Look here to find the file. */ +} +carsym; /* To make these you call a carsymogen. */ /* Used in generating armaps (archive tables of contents). - Perhaps just a forward definition would do? */ -struct orl { /* output ranlib */ - char **name; /* symbol name */ - union { + Perhaps just a forward definition would do? */ +struct orl /* Output ranlib. */ +{ + char **name; /* Symbol name. */ + union + { file_ptr pos; bfd *abfd; - } u; /* bfd* or file position */ - int namidx; /* index into string table */ + } u; /* bfd* or file position. */ + int namidx; /* Index into string table. */ }; -/* Linenumber stuff */ -typedef struct lineno_cache_entry { - unsigned int line_number; /* Linenumber from start of function*/ - union { - struct symbol_cache_entry *sym; /* Function name */ - bfd_vma offset; /* Offset into section */ +/* Linenumber stuff. */ +typedef struct lineno_cache_entry +{ + unsigned int line_number; /* Linenumber from start of function. */ + union + { + struct symbol_cache_entry *sym; /* Function name. */ + bfd_vma offset; /* Offset into section. */ } u; -} alent; +} +alent; -/* object and core file sections */ +/* Object and core file sections. */ #define align_power(addr, align) \ ( ((addr) + ((1<<(align))-1)) & (-1 << (align))) @@ -453,7 +469,7 @@ extern void bfd_hash_traverse PARAMS ((s #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table -/* User program access to BFD facilities */ +/* User program access to BFD facilities. */ /* Direct I/O routines, for programs which know more about the object file than BFD does. Use higher level routines if possible. */ @@ -642,9 +658,9 @@ extern const char *bfd_elf_get_dt_soname extern struct bfd_link_needed_list *bfd_elf_get_runpath_list PARAMS ((bfd *, struct bfd_link_info *)); extern boolean bfd_elf32_discard_info - PARAMS ((struct bfd_link_info *)); + PARAMS ((bfd *, struct bfd_link_info *)); extern boolean bfd_elf64_discard_info - PARAMS ((struct bfd_link_info *)); + PARAMS ((bfd *, struct bfd_link_info *)); /* Return an upper bound on the number of bytes required to store a copy of ABFD's program header table entries. Return -1 if an error @@ -669,6 +685,9 @@ extern int bfd_get_sign_extend_vma PARAM extern boolean bfd_m68k_elf32_create_embedded_relocs PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *, char **)); +extern boolean bfd_mips_elf32_create_embedded_relocs + PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *, + char **)); /* SunOS shared library support routines for the linker. */ @@ -694,7 +713,8 @@ extern boolean bfd_sparclinux_size_dynam struct _bfd_window_internal; typedef struct _bfd_window_internal bfd_window_internal; -typedef struct _bfd_window { +typedef struct _bfd_window +{ /* What the user asked for. */ PTR data; bfd_size_type size; @@ -705,7 +725,8 @@ typedef struct _bfd_window { application; don't want to give the same region back when the application wants two writable copies! */ struct _bfd_window_internal *i; -} bfd_window; +} +bfd_window; extern void bfd_init_window PARAMS ((bfd_window *)); extern void bfd_free_window PARAMS ((bfd_window *)); @@ -730,6 +751,8 @@ extern boolean bfd_xcoff_size_dynamic_se PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *, unsigned long, unsigned long, unsigned long, boolean, int, boolean, boolean, struct sec **)); +extern boolean bfd_xcoff_link_generate_rtinit + PARAMS ((bfd *, const char *, const char *)); /* Externally visible COFF routines. */ @@ -980,25 +1003,20 @@ typedef struct sec { /* The name of the section; the name isn't a copy, the pointer is the same as that passed to bfd_make_section. */ - const char *name; /* A unique sequence number. */ - int id; /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */ - int index; /* The next section in the list belonging to the BFD, or NULL. */ - struct sec *next; /* The field flags contains attributes of the section. Some flags are read in from the object file, and some are synthesized from other information. */ - flagword flags; #define SEC_NO_FLAGS 0x000 @@ -1207,25 +1225,21 @@ typedef struct sec backend can assign addresses (for example, in <>, where the default address for <<.data>> is dependent on the specific target and various flags). */ - bfd_vma vma; /* The load address of the section - where it would be in a rom image; really only used for writing section header - information. */ - + information. */ bfd_vma lma; /* The size of the section in octets, as it will be output. Contains a value even if the section has no contents (e.g., the size of <<.bss>>). This will be filled in after relocation. */ - bfd_size_type _cooked_size; /* The original size on disk of the section, in octets. Normally this value is the same as the size, but if some relaxing has been done, then this value will be bigger. */ - bfd_size_type _raw_size; /* If this section is going to be output, then this value is the @@ -1235,49 +1249,39 @@ typedef struct sec 100th octet (8-bit quantity) in the output section, this value would be 100. However, if the target byte size is 16 bits (bfd_octets_per_byte is "2"), this value would be 50. */ - bfd_vma output_offset; /* The output section through which to map on output. */ - struct sec *output_section; /* The alignment requirement of the section, as an exponent of 2 - e.g., 3 aligns to 2^3 (or 8). */ - unsigned int alignment_power; /* If an input section, a pointer to a vector of relocation records for the data in this section. */ - struct reloc_cache_entry *relocation; /* If an output section, a pointer to a vector of pointers to relocation records for the data in this section. */ - struct reloc_cache_entry **orelocation; - /* The number of relocation records in one of the above */ - + /* The number of relocation records in one of the above. */ unsigned reloc_count; /* Information below is back end specific - and not always used or updated. */ /* File position of section data. */ - file_ptr filepos; /* File position of relocation info. */ - file_ptr rel_filepos; /* File position of line data. */ - file_ptr line_filepos; /* Pointer to data for applications. */ - PTR userdata; /* If the SEC_IN_MEMORY flag is set, this points to the actual @@ -1285,48 +1289,40 @@ typedef struct sec unsigned char *contents; /* Attached line number information. */ - alent *lineno; /* Number of line number records. */ - unsigned int lineno_count; /* Entity size for merging purposes. */ - unsigned int entsize; /* Optional information about a COMDAT entry; NULL if not COMDAT. */ - struct bfd_comdat_info *comdat; /* When a section is being output, this value changes as more linenumbers are written out. */ - file_ptr moving_line_filepos; /* What the section number is in the target world. */ - int target_index; PTR used_by_bfd; /* If this is a constructor section then here is a list of the relocations created to relocate items within it. */ - struct relent_chain *constructor_chain; /* The BFD which owns the section. */ - bfd *owner; - /* A symbol which points at this section only */ + /* A symbol which points at this section only. */ struct symbol_cache_entry *symbol; struct symbol_cache_entry **symbol_ptr_ptr; struct bfd_link_order *link_order_head; struct bfd_link_order *link_order_tail; -} asection ; +} asection; /* These sections are global, and are managed by BFD. The application and target back end are not permitted to change the values in @@ -1338,18 +1334,18 @@ typedef struct sec #define BFD_COM_SECTION_NAME "*COM*" #define BFD_IND_SECTION_NAME "*IND*" -/* the absolute section */ +/* The absolute section. */ extern const asection bfd_abs_section; #define bfd_abs_section_ptr ((asection *) &bfd_abs_section) #define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) -/* Pointer to the undefined section */ +/* Pointer to the undefined section. */ extern const asection bfd_und_section; #define bfd_und_section_ptr ((asection *) &bfd_und_section) #define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) -/* Pointer to the common section */ +/* Pointer to the common section. */ extern const asection bfd_com_section; #define bfd_com_section_ptr ((asection *) &bfd_com_section) -/* Pointer to the indirect section */ +/* Pointer to the indirect section. */ extern const asection bfd_ind_section; #define bfd_ind_section_ptr ((asection *) &bfd_ind_section) #define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) @@ -1370,6 +1366,35 @@ extern const struct symbol_cache_entry * #define bfd_get_section_size_after_reloc(section) \ ((section)->reloc_done ? (section)->_cooked_size \ : (abort (), (bfd_size_type) 1)) + +/* Macros to handle insertion and deletion of a bfd's sections. These + only handle the list pointers, ie. do not adjust section_count, + target_index etc. */ +#define bfd_section_list_remove(ABFD, PS) \ + do \ + { \ + asection **_ps = PS; \ + asection *_s = *_ps; \ + *_ps = _s->next; \ + if (_s->next == NULL) \ + (ABFD)->section_tail = _ps; \ + } \ + while (0) +#define bfd_section_list_insert(ABFD, PS, S) \ + do \ + { \ + asection **_ps = PS; \ + asection *_s = S; \ + _s->next = *_ps; \ + *_ps = _s; \ + if (_s->next == NULL) \ + (ABFD)->section_tail = &_s->next; \ + } \ + while (0) + +void +bfd_section_list_clear PARAMS ((bfd *)); + asection * bfd_get_section_by_name PARAMS ((bfd *abfd, const char *name)); @@ -1422,8 +1447,8 @@ _bfd_strip_section_from_output PARAMS (( enum bfd_architecture { - bfd_arch_unknown, /* File arch not known */ - bfd_arch_obscure, /* Arch known, not one of these */ + bfd_arch_unknown, /* File arch not known. */ + bfd_arch_obscure, /* Arch known, not one of these. */ bfd_arch_m68k, /* Motorola 68xxx */ #define bfd_mach_m68000 1 #define bfd_mach_m68008 2 @@ -1445,7 +1470,7 @@ enum bfd_architecture available to machines with higher numbers. The exception is the "ca", which is incompatible with all other machines except - "core". */ + "core". */ #define bfd_mach_i960_core 1 #define bfd_mach_i960_ka_sa 2 @@ -1456,6 +1481,8 @@ enum bfd_architecture #define bfd_mach_i960_jx 7 #define bfd_mach_i960_hx 8 + bfd_arch_or32, /* OpenRISC 32 */ + bfd_arch_a29k, /* AMD 29000 */ bfd_arch_sparc, /* SPARC */ #define bfd_mach_sparc 1 @@ -1463,12 +1490,12 @@ enum bfd_architecture #define bfd_mach_sparc_sparclet 2 #define bfd_mach_sparc_sparclite 3 #define bfd_mach_sparc_v8plus 4 -#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */ +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */ #define bfd_mach_sparc_sparclite_le 6 #define bfd_mach_sparc_v9 7 -#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */ -#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns */ -#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns */ +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */ +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */ +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */ /* Nonzero if MACH has the v9 instruction set. */ #define bfd_mach_sparc_v9_p(mach) \ ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \ @@ -1516,6 +1543,7 @@ enum bfd_architecture bfd_arch_pdp11, /* DEC PDP-11 */ bfd_arch_powerpc, /* PowerPC */ #define bfd_mach_ppc 0 +#define bfd_mach_ppc64 1 #define bfd_mach_ppc_403 403 #define bfd_mach_ppc_403gc 4030 #define bfd_mach_ppc_505 505 @@ -1561,7 +1589,7 @@ enum bfd_architecture #define bfd_mach_alpha_ev4 0x10 #define bfd_mach_alpha_ev5 0x20 #define bfd_mach_alpha_ev6 0x30 - bfd_arch_arm, /* Advanced Risc Machines ARM */ + bfd_arch_arm, /* Advanced Risc Machines ARM. */ #define bfd_mach_arm_2 1 #define bfd_mach_arm_2a 2 #define bfd_mach_arm_3 3 @@ -1587,7 +1615,7 @@ enum bfd_architecture #define bfd_mach_arc_7 2 #define bfd_mach_arc_8 3 bfd_arch_m32r, /* Mitsubishi M32R/D */ -#define bfd_mach_m32r 0 /* backwards compatibility */ +#define bfd_mach_m32r 0 /* For backwards compatibility. */ #define bfd_mach_m32rx 'x' bfd_arch_mn10200, /* Matsushita MN10200 */ bfd_arch_mn10300, /* Matsushita MN10300 */ @@ -1600,7 +1628,7 @@ enum bfd_architecture #define bfd_mach_ia64_elf64 0 #define bfd_mach_ia64_elf32 1 bfd_arch_pj, - bfd_arch_avr, /* Atmel AVR microcontrollers */ + bfd_arch_avr, /* Atmel AVR microcontrollers. */ #define bfd_mach_avr1 1 #define bfd_mach_avr2 2 #define bfd_mach_avr3 3 @@ -1611,7 +1639,9 @@ enum bfd_architecture #define bfd_mach_s390_esa 0 #define bfd_mach_s390_esame 1 bfd_arch_openrisc, /* OpenRISC */ - bfd_arch_mmix, /* Donald Knuth's educational processor */ + bfd_arch_mmix, /* Donald Knuth's educational processor. */ + bfd_arch_xstormy16, +#define bfd_mach_xstormy16 0 bfd_arch_last }; @@ -1634,7 +1664,9 @@ typedef struct bfd_arch_info boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); const struct bfd_arch_info *next; -} bfd_arch_info_type; +} +bfd_arch_info_type; + const char * bfd_printable_name PARAMS ((bfd *abfd)); @@ -1684,25 +1716,25 @@ bfd_arch_mach_octets_per_byte PARAMS ((e typedef enum bfd_reloc_status { - /* No errors detected */ + /* No errors detected. */ bfd_reloc_ok, - /* The relocation was performed, but there was an overflow. */ + /* The relocation was performed, but there was an overflow. */ bfd_reloc_overflow, - /* The address to relocate was not within the section supplied. */ + /* The address to relocate was not within the section supplied. */ bfd_reloc_outofrange, - /* Used by special functions */ + /* Used by special functions. */ bfd_reloc_continue, - /* Unsupported relocation size requested. */ + /* Unsupported relocation size requested. */ bfd_reloc_notsupported, - /* Unused */ + /* Unused. */ bfd_reloc_other, - /* The symbol to relocate against was undefined. */ + /* The symbol to relocate against was undefined. */ bfd_reloc_undefined, /* The relocation was performed, but may not be ok - presently @@ -1716,34 +1748,36 @@ typedef enum bfd_reloc_status typedef struct reloc_cache_entry { - /* A pointer into the canonical table of pointers */ + /* A pointer into the canonical table of pointers. */ struct symbol_cache_entry **sym_ptr_ptr; - /* offset in section */ + /* offset in section. */ bfd_size_type address; - /* addend for relocation value */ + /* addend for relocation value. */ bfd_vma addend; - /* Pointer to how to perform the required relocation */ + /* Pointer to how to perform the required relocation. */ reloc_howto_type *howto; -} arelent; +} +arelent; + enum complain_overflow { - /* Do not complain on overflow. */ + /* Do not complain on overflow. */ complain_overflow_dont, /* Complain if the bitfield overflows, whether it is considered - as signed or unsigned. */ + as signed or unsigned. */ complain_overflow_bitfield, /* Complain if the value overflows when considered as signed - number. */ + number. */ complain_overflow_signed, /* Complain if the value overflows when considered as an - unsigned number. */ + unsigned number. */ complain_overflow_unsigned }; @@ -1835,6 +1869,7 @@ struct reloc_howto_struct empty (e.g., m88k bcs); this flag signals the fact. */ boolean pcrel_offset; }; + #define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC } #define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \ @@ -1859,6 +1894,7 @@ struct reloc_howto_struct } \ } \ } + unsigned int bfd_get_reloc_size PARAMS ((reloc_howto_type *)); @@ -1866,7 +1902,9 @@ typedef struct relent_chain { arelent relent; struct relent_chain *next; -} arelent_chain; +} +arelent_chain; + bfd_reloc_status_type bfd_check_overflow PARAMS ((enum complain_overflow how, unsigned int bitsize, @@ -1893,7 +1931,7 @@ enum bfd_reloc_code_real { _dummy_first_bfd_reloc_code_real, -/* Basic absolute relocations of N bits. */ +/* Basic absolute relocations of N bits. */ BFD_RELOC_64, BFD_RELOC_32, BFD_RELOC_26, @@ -1906,7 +1944,7 @@ enum bfd_reloc_code_real { of the relocation itself; sometimes they are relative to the start of the section containing the relocation. It depends on the specific target. -The 24-bit relocation is used in some Intel 960 configurations. */ +The 24-bit relocation is used in some Intel 960 configurations. */ BFD_RELOC_64_PCREL, BFD_RELOC_32_PCREL, BFD_RELOC_24_PCREL, @@ -1914,7 +1952,7 @@ The 24-bit relocation is used in some In BFD_RELOC_12_PCREL, BFD_RELOC_8_PCREL, -/* For ELF. */ +/* For ELF. */ BFD_RELOC_32_GOT_PCREL, BFD_RELOC_16_GOT_PCREL, BFD_RELOC_8_GOT_PCREL, @@ -1937,12 +1975,12 @@ The 24-bit relocation is used in some In BFD_RELOC_HI16_S_PLTOFF, BFD_RELOC_8_PLTOFF, -/* Relocations used by 68K ELF. */ +/* Relocations used by 68K ELF. */ BFD_RELOC_68K_GLOB_DAT, BFD_RELOC_68K_JMP_SLOT, BFD_RELOC_68K_RELATIVE, -/* Linkage-table relative. */ +/* Linkage-table relative. */ BFD_RELOC_32_BASEREL, BFD_RELOC_16_BASEREL, BFD_RELOC_LO16_BASEREL, @@ -1951,7 +1989,7 @@ The 24-bit relocation is used in some In BFD_RELOC_8_BASEREL, BFD_RELOC_RVA, -/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */ +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */ BFD_RELOC_8_FFnn, /* These PC-relative relocations are stored as word displacements -- @@ -1959,28 +1997,28 @@ i.e., byte displacements shifted right t displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the SPARC. (SPARC tools generally refer to this as <>.) The signed 16-bit displacement is used on the MIPS, and the 23-bit -displacement is used on the Alpha. */ +displacement is used on the Alpha. */ BFD_RELOC_32_PCREL_S2, BFD_RELOC_16_PCREL_S2, BFD_RELOC_23_PCREL_S2, /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of -the target word. These are used on the SPARC. */ +the target word. These are used on the SPARC. */ BFD_RELOC_HI22, BFD_RELOC_LO10, /* For systems that allocate a Global Pointer register, these are displacements off that register. These relocation types are handled specially, because the value the register will have is -decided relatively late. */ +decided relatively late. */ BFD_RELOC_GPREL16, BFD_RELOC_GPREL32, -/* Reloc types used for i960/b.out. */ +/* Reloc types used for i960/b.out. */ BFD_RELOC_I960_CALLJ, /* SPARC ELF relocations. There is probably some overlap with other -relocation types already defined. */ +relocation types already defined. */ BFD_RELOC_NONE, BFD_RELOC_SPARC_WDISP22, BFD_RELOC_SPARC22, @@ -1999,11 +2037,11 @@ relocation types already defined. */ BFD_RELOC_SPARC_UA32, BFD_RELOC_SPARC_UA64, -/* I think these are specific to SPARC a.out (e.g., Sun 4). */ +/* I think these are specific to SPARC a.out (e.g., Sun 4). */ BFD_RELOC_SPARC_BASE13, BFD_RELOC_SPARC_BASE22, -/* SPARC64 relocations */ +/* SPARC64 relocations */ #define BFD_RELOC_SPARC_64 BFD_RELOC_64 BFD_RELOC_SPARC_10, BFD_RELOC_SPARC_11, @@ -2020,6 +2058,7 @@ relocation types already defined. */ BFD_RELOC_SPARC_6, BFD_RELOC_SPARC_5, #define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL + BFD_RELOC_SPARC_PLT32, BFD_RELOC_SPARC_PLT64, BFD_RELOC_SPARC_HIX22, BFD_RELOC_SPARC_LOX10, @@ -2028,7 +2067,7 @@ relocation types already defined. */ BFD_RELOC_SPARC_L44, BFD_RELOC_SPARC_REGISTER, -/* SPARC little endian relocation */ +/* SPARC little endian relocation */ BFD_RELOC_SPARC_REV32, /* Alpha ECOFF and ELF relocations. Some of these treat the symbol or @@ -2036,18 +2075,18 @@ relocation types already defined. */ For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when writing; when reading, it will be the absolute section symbol. The addend is the displacement in bytes of the "lda" instruction from -the "ldah" instruction (which is at the address of this reloc). */ +the "ldah" instruction (which is at the address of this reloc). */ BFD_RELOC_ALPHA_GPDISP_HI16, /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as with GPDISP_HI16 relocs. The addend is ignored when writing the relocations out, and is filled in with the file's GP value on -reading, for convenience. */ +reading, for convenience. */ BFD_RELOC_ALPHA_GPDISP_LO16, /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16 relocation except that there is no accompanying GPDISP_LO16 -relocation. */ +relocation. */ BFD_RELOC_ALPHA_GPDISP, /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference; @@ -2072,67 +2111,63 @@ as the absolute section symbol), and the of instruction using the register: 1 - "memory" fmt insn 2 - byte-manipulation (byte offset reg) -3 - jsr (target of branch) */ +3 - jsr (target of branch) */ BFD_RELOC_ALPHA_LITERAL, BFD_RELOC_ALPHA_ELF_LITERAL, BFD_RELOC_ALPHA_LITUSE, /* The HINT relocation indicates a value that should be filled into the "hint" field of a jmp/jsr/ret instruction, for possible branch- -prediction logic which may be provided on some processors. */ +prediction logic which may be provided on some processors. */ BFD_RELOC_ALPHA_HINT, /* The LINKAGE relocation outputs a linkage pair in the object file, -which is filled by the linker. */ +which is filled by the linker. */ BFD_RELOC_ALPHA_LINKAGE, /* The CODEADDR relocation outputs a STO_CA in the object file, -which is filled by the linker. */ +which is filled by the linker. */ BFD_RELOC_ALPHA_CODEADDR, /* The GPREL_HI/LO relocations together form a 32-bit offset from the -GP register. */ +GP register. */ BFD_RELOC_ALPHA_GPREL_HI16, BFD_RELOC_ALPHA_GPREL_LO16, /* Bits 27..2 of the relocation address shifted right 2 bits; -simple reloc otherwise. */ +simple reloc otherwise. */ BFD_RELOC_MIPS_JMP, -/* The MIPS16 jump instruction. */ +/* The MIPS16 jump instruction. */ BFD_RELOC_MIPS16_JMP, -/* MIPS16 GP relative reloc. */ +/* MIPS16 GP relative reloc. */ BFD_RELOC_MIPS16_GPREL, -/* High 16 bits of 32-bit value; simple reloc. */ +/* High 16 bits of 32-bit value; simple reloc. */ BFD_RELOC_HI16, /* High 16 bits of 32-bit value but the low 16 bits will be sign extended and added to form the final result. If the low 16 bits form a negative number, we need to add one to the high value -to compensate for the borrow when the low bits are added. */ +to compensate for the borrow when the low bits are added. */ BFD_RELOC_HI16_S, -/* Low 16 bits. */ +/* Low 16 bits. */ BFD_RELOC_LO16, -/* Like BFD_RELOC_HI16_S, but PC relative. */ +/* Like BFD_RELOC_HI16_S, but PC relative. */ BFD_RELOC_PCREL_HI16_S, -/* Like BFD_RELOC_LO16, but PC relative. */ +/* Like BFD_RELOC_LO16, but PC relative. */ BFD_RELOC_PCREL_LO16, -/* Relocation relative to the global pointer. */ -#define BFD_RELOC_MIPS_GPREL BFD_RELOC_GPREL16 - -/* Relocation against a MIPS literal section. */ +/* Relocation against a MIPS literal section. */ BFD_RELOC_MIPS_LITERAL, -/* MIPS ELF relocations. */ +/* MIPS ELF relocations. */ BFD_RELOC_MIPS_GOT16, BFD_RELOC_MIPS_CALL16, -#define BFD_RELOC_MIPS_GPREL32 BFD_RELOC_GPREL32 BFD_RELOC_MIPS_GOT_HI16, BFD_RELOC_MIPS_GOT_LO16, BFD_RELOC_MIPS_CALL_HI16, @@ -2154,7 +2189,7 @@ to compensate for the borrow when the lo BFD_RELOC_MIPS_JALR, -/* i386/elf relocations */ +/* i386/elf relocations */ BFD_RELOC_386_GOT32, BFD_RELOC_386_PLT32, BFD_RELOC_386_COPY, @@ -2164,7 +2199,7 @@ to compensate for the borrow when the lo BFD_RELOC_386_GOTOFF, BFD_RELOC_386_GOTPC, -/* x86-64/elf relocations */ +/* x86-64/elf relocations */ BFD_RELOC_X86_64_GOT32, BFD_RELOC_X86_64_PLT32, BFD_RELOC_X86_64_COPY, @@ -2174,7 +2209,7 @@ to compensate for the borrow when the lo BFD_RELOC_X86_64_GOTPCREL, BFD_RELOC_X86_64_32S, -/* ns32k relocations */ +/* ns32k relocations */ BFD_RELOC_NS32K_IMM_8, BFD_RELOC_NS32K_IMM_16, BFD_RELOC_NS32K_IMM_32, @@ -2188,11 +2223,11 @@ to compensate for the borrow when the lo BFD_RELOC_NS32K_DISP_16_PCREL, BFD_RELOC_NS32K_DISP_32_PCREL, -/* PDP11 relocations */ +/* PDP11 relocations */ BFD_RELOC_PDP11_DISP_8_PCREL, BFD_RELOC_PDP11_DISP_6_PCREL, -/* Picojava relocs. Not all of these appear in object files. */ +/* Picojava relocs. Not all of these appear in object files. */ BFD_RELOC_PJ_CODE_HI16, BFD_RELOC_PJ_CODE_LO16, BFD_RELOC_PJ_CODE_DIR16, @@ -2200,7 +2235,7 @@ to compensate for the borrow when the lo BFD_RELOC_PJ_CODE_REL16, BFD_RELOC_PJ_CODE_REL32, -/* Power(rs6000) and PowerPC relocations. */ +/* Power(rs6000) and PowerPC relocations. */ BFD_RELOC_PPC_B26, BFD_RELOC_PPC_BA26, BFD_RELOC_PPC_TOC16, @@ -2255,30 +2290,30 @@ to compensate for the borrow when the lo BFD_RELOC_PPC64_PLTGOT16_DS, BFD_RELOC_PPC64_PLTGOT16_LO_DS, -/* IBM 370/390 relocations */ +/* IBM 370/390 relocations */ BFD_RELOC_I370_D12, /* The type of reloc used to build a contructor table - at the moment probably a 32 bit wide absolute relocation, but the target can choose. -It generally does map to one of the other relocation types. */ +It generally does map to one of the other relocation types. */ BFD_RELOC_CTOR, /* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are -not stored in the instruction. */ +not stored in the instruction. */ BFD_RELOC_ARM_PCREL_BRANCH, /* ARM 26 bit pc-relative branch. The lowest bit must be zero and is not stored in the instruction. The 2nd lowest bit comes from a 1 bit -field in the instruction. */ +field in the instruction. */ BFD_RELOC_ARM_PCREL_BLX, /* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is not stored in the instruction. The 2nd lowest bit comes from a 1 bit -field in the instruction. */ +field in the instruction. */ BFD_RELOC_THUMB_PCREL_BLX, /* These relocs are only used within the ARM assembler. They are not -(at present) written to any object files. */ +(at present) written to any object files. */ BFD_RELOC_ARM_IMMEDIATE, BFD_RELOC_ARM_ADRL_IMMEDIATE, BFD_RELOC_ARM_OFFSET_IMM, @@ -2306,7 +2341,7 @@ field in the instruction. */ BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC, -/* Hitachi SH relocs. Not all of these appear in object files. */ +/* Hitachi SH relocs. Not all of these appear in object files. */ BFD_RELOC_SH_PCDISP8BY2, BFD_RELOC_SH_PCDISP12BY2, BFD_RELOC_SH_IMM4, @@ -2334,7 +2369,7 @@ field in the instruction. */ BFD_RELOC_SH_GOTPC, /* Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must -be zero and is not stored in the instruction. */ +be zero and is not stored in the instruction. */ BFD_RELOC_THUMB_PCREL_BRANCH9, BFD_RELOC_THUMB_PCREL_BRANCH12, BFD_RELOC_THUMB_PCREL_BRANCH23, @@ -2342,234 +2377,234 @@ be zero and is not stored in the instruc /* ARC Cores relocs. ARC 22 bit pc-relative branch. The lowest two bits must be zero and are not stored in the instruction. The high 20 bits are installed in bits 26 -through 7 of the instruction. */ +through 7 of the instruction. */ BFD_RELOC_ARC_B22_PCREL, /* ARC 26 bit absolute branch. The lowest two bits must be zero and are not stored in the instruction. The high 24 bits are installed in bits 23 -through 0. */ +through 0. */ BFD_RELOC_ARC_B26, /* Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 bits -assumed to be 0. */ +assumed to be 0. */ BFD_RELOC_D10V_10_PCREL_R, /* Mitsubishi D10V relocs. This is a 10-bit reloc with the right 2 bits assumed to be 0. This is the same as the previous reloc except it is in the left container, i.e., -shifted left 15 bits. */ +shifted left 15 bits. */ BFD_RELOC_D10V_10_PCREL_L, /* This is an 18-bit reloc with the right 2 bits -assumed to be 0. */ +assumed to be 0. */ BFD_RELOC_D10V_18, /* This is an 18-bit reloc with the right 2 bits -assumed to be 0. */ +assumed to be 0. */ BFD_RELOC_D10V_18_PCREL, /* Mitsubishi D30V relocs. -This is a 6-bit absolute reloc. */ +This is a 6-bit absolute reloc. */ BFD_RELOC_D30V_6, /* This is a 6-bit pc-relative reloc with -the right 3 bits assumed to be 0. */ +the right 3 bits assumed to be 0. */ BFD_RELOC_D30V_9_PCREL, /* This is a 6-bit pc-relative reloc with the right 3 bits assumed to be 0. Same as the previous reloc but on the right side -of the container. */ +of the container. */ BFD_RELOC_D30V_9_PCREL_R, /* This is a 12-bit absolute reloc with the -right 3 bitsassumed to be 0. */ +right 3 bitsassumed to be 0. */ BFD_RELOC_D30V_15, /* This is a 12-bit pc-relative reloc with -the right 3 bits assumed to be 0. */ +the right 3 bits assumed to be 0. */ BFD_RELOC_D30V_15_PCREL, /* This is a 12-bit pc-relative reloc with the right 3 bits assumed to be 0. Same as the previous reloc but on the right side -of the container. */ +of the container. */ BFD_RELOC_D30V_15_PCREL_R, /* This is an 18-bit absolute reloc with -the right 3 bits assumed to be 0. */ +the right 3 bits assumed to be 0. */ BFD_RELOC_D30V_21, /* This is an 18-bit pc-relative reloc with -the right 3 bits assumed to be 0. */ +the right 3 bits assumed to be 0. */ BFD_RELOC_D30V_21_PCREL, /* This is an 18-bit pc-relative reloc with the right 3 bits assumed to be 0. Same as the previous reloc but on the right side -of the container. */ +of the container. */ BFD_RELOC_D30V_21_PCREL_R, -/* This is a 32-bit absolute reloc. */ +/* This is a 32-bit absolute reloc. */ BFD_RELOC_D30V_32, -/* This is a 32-bit pc-relative reloc. */ +/* This is a 32-bit pc-relative reloc. */ BFD_RELOC_D30V_32_PCREL, /* Mitsubishi M32R relocs. -This is a 24 bit absolute address. */ +This is a 24 bit absolute address. */ BFD_RELOC_M32R_24, -/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */ +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */ BFD_RELOC_M32R_10_PCREL, -/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */ +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */ BFD_RELOC_M32R_18_PCREL, -/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */ +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */ BFD_RELOC_M32R_26_PCREL, /* This is a 16-bit reloc containing the high 16 bits of an address -used when the lower 16 bits are treated as unsigned. */ +used when the lower 16 bits are treated as unsigned. */ BFD_RELOC_M32R_HI16_ULO, /* This is a 16-bit reloc containing the high 16 bits of an address -used when the lower 16 bits are treated as signed. */ +used when the lower 16 bits are treated as signed. */ BFD_RELOC_M32R_HI16_SLO, -/* This is a 16-bit reloc containing the lower 16 bits of an address. */ +/* This is a 16-bit reloc containing the lower 16 bits of an address. */ BFD_RELOC_M32R_LO16, /* This is a 16-bit reloc containing the small data area offset for use in -add3, load, and store instructions. */ +add3, load, and store instructions. */ BFD_RELOC_M32R_SDA16, -/* This is a 9-bit reloc */ +/* This is a 9-bit reloc */ BFD_RELOC_V850_9_PCREL, -/* This is a 22-bit reloc */ +/* This is a 22-bit reloc */ BFD_RELOC_V850_22_PCREL, -/* This is a 16 bit offset from the short data area pointer. */ +/* This is a 16 bit offset from the short data area pointer. */ BFD_RELOC_V850_SDA_16_16_OFFSET, /* This is a 16 bit offset (of which only 15 bits are used) from the -short data area pointer. */ +short data area pointer. */ BFD_RELOC_V850_SDA_15_16_OFFSET, -/* This is a 16 bit offset from the zero data area pointer. */ +/* This is a 16 bit offset from the zero data area pointer. */ BFD_RELOC_V850_ZDA_16_16_OFFSET, /* This is a 16 bit offset (of which only 15 bits are used) from the -zero data area pointer. */ +zero data area pointer. */ BFD_RELOC_V850_ZDA_15_16_OFFSET, /* This is an 8 bit offset (of which only 6 bits are used) from the -tiny data area pointer. */ +tiny data area pointer. */ BFD_RELOC_V850_TDA_6_8_OFFSET, /* This is an 8bit offset (of which only 7 bits are used) from the tiny -data area pointer. */ +data area pointer. */ BFD_RELOC_V850_TDA_7_8_OFFSET, -/* This is a 7 bit offset from the tiny data area pointer. */ +/* This is a 7 bit offset from the tiny data area pointer. */ BFD_RELOC_V850_TDA_7_7_OFFSET, -/* This is a 16 bit offset from the tiny data area pointer. */ +/* This is a 16 bit offset from the tiny data area pointer. */ BFD_RELOC_V850_TDA_16_16_OFFSET, /* This is a 5 bit offset (of which only 4 bits are used) from the tiny -data area pointer. */ +data area pointer. */ BFD_RELOC_V850_TDA_4_5_OFFSET, -/* This is a 4 bit offset from the tiny data area pointer. */ +/* This is a 4 bit offset from the tiny data area pointer. */ BFD_RELOC_V850_TDA_4_4_OFFSET, /* This is a 16 bit offset from the short data area pointer, with the -bits placed non-contigously in the instruction. */ +bits placed non-contigously in the instruction. */ BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET, /* This is a 16 bit offset from the zero data area pointer, with the -bits placed non-contigously in the instruction. */ +bits placed non-contigously in the instruction. */ BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET, -/* This is a 6 bit offset from the call table base pointer. */ +/* This is a 6 bit offset from the call table base pointer. */ BFD_RELOC_V850_CALLT_6_7_OFFSET, -/* This is a 16 bit offset from the call table base pointer. */ +/* This is a 16 bit offset from the call table base pointer. */ BFD_RELOC_V850_CALLT_16_16_OFFSET, /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the -instruction. */ +instruction. */ BFD_RELOC_MN10300_32_PCREL, /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the -instruction. */ +instruction. */ BFD_RELOC_MN10300_16_PCREL, /* This is a 8bit DP reloc for the tms320c30, where the most significant 8 bits of a 24 bit word are placed into the least -significant 8 bits of the opcode. */ +significant 8 bits of the opcode. */ BFD_RELOC_TIC30_LDP, /* This is a 7bit reloc for the tms320c54x, where the least significant 7 bits of a 16 bit word are placed into the least -significant 7 bits of the opcode. */ +significant 7 bits of the opcode. */ BFD_RELOC_TIC54X_PARTLS7, /* This is a 9bit DP reloc for the tms320c54x, where the most significant 9 bits of a 16 bit word are placed into the least -significant 9 bits of the opcode. */ +significant 9 bits of the opcode. */ BFD_RELOC_TIC54X_PARTMS9, -/* This is an extended address 23-bit reloc for the tms320c54x. */ +/* This is an extended address 23-bit reloc for the tms320c54x. */ BFD_RELOC_TIC54X_23, /* This is a 16-bit reloc for the tms320c54x, where the least significant 16 bits of a 23-bit extended address are placed into -the opcode. */ +the opcode. */ BFD_RELOC_TIC54X_16_OF_23, /* This is a reloc for the tms320c54x, where the most significant 7 bits of a 23-bit extended address are placed into -the opcode. */ +the opcode. */ BFD_RELOC_TIC54X_MS7_OF_23, -/* This is a 48 bit reloc for the FR30 that stores 32 bits. */ +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */ BFD_RELOC_FR30_48, /* This is a 32 bit reloc for the FR30 that stores 20 bits split up into -two sections. */ +two sections. */ BFD_RELOC_FR30_20, /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in -4 bits. */ +4 bits. */ BFD_RELOC_FR30_6_IN_4, /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset -into 8 bits. */ +into 8 bits. */ BFD_RELOC_FR30_8_IN_8, /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset -into 8 bits. */ +into 8 bits. */ BFD_RELOC_FR30_9_IN_8, /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset -into 8 bits. */ +into 8 bits. */ BFD_RELOC_FR30_10_IN_8, /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative -short offset into 8 bits. */ +short offset into 8 bits. */ BFD_RELOC_FR30_9_PCREL, /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative -short offset into 11 bits. */ +short offset into 11 bits. */ BFD_RELOC_FR30_12_PCREL, -/* Motorola Mcore relocations. */ +/* Motorola Mcore relocations. */ BFD_RELOC_MCORE_PCREL_IMM8BY4, BFD_RELOC_MCORE_PCREL_IMM11BY2, BFD_RELOC_MCORE_PCREL_IMM4BY2, @@ -2577,171 +2612,171 @@ short offset into 11 bits. */ BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2, BFD_RELOC_MCORE_RVA, -/* These are relocations for the GETA instruction. */ +/* These are relocations for the GETA instruction. */ BFD_RELOC_MMIX_GETA, BFD_RELOC_MMIX_GETA_1, BFD_RELOC_MMIX_GETA_2, BFD_RELOC_MMIX_GETA_3, -/* These are relocations for a conditional branch instruction. */ +/* These are relocations for a conditional branch instruction. */ BFD_RELOC_MMIX_CBRANCH, BFD_RELOC_MMIX_CBRANCH_J, BFD_RELOC_MMIX_CBRANCH_1, BFD_RELOC_MMIX_CBRANCH_2, BFD_RELOC_MMIX_CBRANCH_3, -/* These are relocations for the PUSHJ instruction. */ +/* These are relocations for the PUSHJ instruction. */ BFD_RELOC_MMIX_PUSHJ, BFD_RELOC_MMIX_PUSHJ_1, BFD_RELOC_MMIX_PUSHJ_2, BFD_RELOC_MMIX_PUSHJ_3, -/* These are relocations for the JMP instruction. */ +/* These are relocations for the JMP instruction. */ BFD_RELOC_MMIX_JMP, BFD_RELOC_MMIX_JMP_1, BFD_RELOC_MMIX_JMP_2, BFD_RELOC_MMIX_JMP_3, /* This is a relocation for a relative address as in a GETA instruction or -a branch. */ +a branch. */ BFD_RELOC_MMIX_ADDR19, -/* This is a relocation for a relative address as in a JMP instruction. */ +/* This is a relocation for a relative address as in a JMP instruction. */ BFD_RELOC_MMIX_ADDR27, /* This is a relocation for an instruction field that may be a general -register or a value 0..255. */ +register or a value 0..255. */ BFD_RELOC_MMIX_REG_OR_BYTE, /* This is a relocation for an instruction field that may be a general -register. */ +register. */ BFD_RELOC_MMIX_REG, /* This is a relocation for two instruction fields holding a register and -an offset, the equivalent of the relocation. */ +an offset, the equivalent of the relocation. */ BFD_RELOC_MMIX_BASE_PLUS_OFFSET, /* This relocation is an assertion that the expression is not allocated as -a global register. It does not modify contents. */ +a global register. It does not modify contents. */ BFD_RELOC_MMIX_LOCAL, /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative -short offset into 7 bits. */ +short offset into 7 bits. */ BFD_RELOC_AVR_7_PCREL, /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative -short offset into 12 bits. */ +short offset into 12 bits. */ BFD_RELOC_AVR_13_PCREL, /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually -program memory address) into 16 bits. */ +program memory address) into 16 bits. */ BFD_RELOC_AVR_16_PM, /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually -data memory address) into 8 bit immediate value of LDI insn. */ +data memory address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_LO8_LDI, /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit -of data memory address) into 8 bit immediate value of LDI insn. */ +of data memory address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_HI8_LDI, /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit -of program memory address) into 8 bit immediate value of LDI insn. */ +of program memory address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_HH8_LDI, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value -(usually data memory address) into 8 bit immediate value of SUBI insn. */ +(usually data memory address) into 8 bit immediate value of SUBI insn. */ BFD_RELOC_AVR_LO8_LDI_NEG, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (high 8 bit of data memory address) into 8 bit immediate value of -SUBI insn. */ +SUBI insn. */ BFD_RELOC_AVR_HI8_LDI_NEG, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (most high 8 bit of program memory address) into 8 bit immediate value -of LDI or SUBI insn. */ +of LDI or SUBI insn. */ BFD_RELOC_AVR_HH8_LDI_NEG, /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually -command address) into 8 bit immediate value of LDI insn. */ +command address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_LO8_LDI_PM, /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit -of command address) into 8 bit immediate value of LDI insn. */ +of command address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_HI8_LDI_PM, /* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit -of command address) into 8 bit immediate value of LDI insn. */ +of command address) into 8 bit immediate value of LDI insn. */ BFD_RELOC_AVR_HH8_LDI_PM, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value -(usually command address) into 8 bit immediate value of SUBI insn. */ +(usually command address) into 8 bit immediate value of SUBI insn. */ BFD_RELOC_AVR_LO8_LDI_PM_NEG, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (high 8 bit of 16 bit command address) into 8 bit immediate value -of SUBI insn. */ +of SUBI insn. */ BFD_RELOC_AVR_HI8_LDI_PM_NEG, /* This is a 16 bit reloc for the AVR that stores negated 8 bit value (high 6 bit of 22 bit command address) into 8 bit immediate -value of SUBI insn. */ +value of SUBI insn. */ BFD_RELOC_AVR_HH8_LDI_PM_NEG, /* This is a 32 bit reloc for the AVR that stores 23 bit value -into 22 bits. */ +into 22 bits. */ BFD_RELOC_AVR_CALL, -/* Direct 12 bit. */ +/* Direct 12 bit. */ BFD_RELOC_390_12, -/* 12 bit GOT offset. */ +/* 12 bit GOT offset. */ BFD_RELOC_390_GOT12, -/* 32 bit PC relative PLT address. */ +/* 32 bit PC relative PLT address. */ BFD_RELOC_390_PLT32, -/* Copy symbol at runtime. */ +/* Copy symbol at runtime. */ BFD_RELOC_390_COPY, -/* Create GOT entry. */ +/* Create GOT entry. */ BFD_RELOC_390_GLOB_DAT, -/* Create PLT entry. */ +/* Create PLT entry. */ BFD_RELOC_390_JMP_SLOT, -/* Adjust by program base. */ +/* Adjust by program base. */ BFD_RELOC_390_RELATIVE, -/* 32 bit PC relative offset to GOT. */ +/* 32 bit PC relative offset to GOT. */ BFD_RELOC_390_GOTPC, -/* 16 bit GOT offset. */ +/* 16 bit GOT offset. */ BFD_RELOC_390_GOT16, -/* PC relative 16 bit shifted by 1. */ +/* PC relative 16 bit shifted by 1. */ BFD_RELOC_390_PC16DBL, -/* 16 bit PC rel. PLT shifted by 1. */ +/* 16 bit PC rel. PLT shifted by 1. */ BFD_RELOC_390_PLT16DBL, -/* PC relative 32 bit shifted by 1. */ +/* PC relative 32 bit shifted by 1. */ BFD_RELOC_390_PC32DBL, -/* 32 bit PC rel. PLT shifted by 1. */ +/* 32 bit PC rel. PLT shifted by 1. */ BFD_RELOC_390_PLT32DBL, -/* 32 bit PC rel. GOT shifted by 1. */ +/* 32 bit PC rel. GOT shifted by 1. */ BFD_RELOC_390_GOTPCDBL, -/* 64 bit GOT offset. */ +/* 64 bit GOT offset. */ BFD_RELOC_390_GOT64, -/* 64 bit PC relative PLT address. */ +/* 64 bit PC relative PLT address. */ BFD_RELOC_390_PLT64, -/* 32 bit rel. offset to GOT entry. */ +/* 32 bit rel. offset to GOT entry. */ BFD_RELOC_390_GOTENT, /* These two relocations are used by the linker to determine which of @@ -2760,11 +2795,11 @@ virtual function table entry. The reloc table of the class mentioned in the code. Off of that base, an offset describes the entry that is being used. For Rela hosts, this offset is stored in the reloc's addend. For Rel hosts, we are forced to put -this offset in the reloc's section offset. */ +this offset in the reloc's section offset. */ BFD_RELOC_VTABLE_INHERIT, BFD_RELOC_VTABLE_ENTRY, -/* Intel IA64 Relocations. */ +/* Intel IA64 Relocations. */ BFD_RELOC_IA64_IMM14, BFD_RELOC_IA64_IMM22, BFD_RELOC_IA64_IMM64, @@ -2833,53 +2868,53 @@ this offset in the reloc's section offse BFD_RELOC_IA64_LDXMOV, /* Motorola 68HC11 reloc. -This is the 8 bits high part of an absolute address. */ +This is the 8 bits high part of an absolute address. */ BFD_RELOC_M68HC11_HI8, /* Motorola 68HC11 reloc. -This is the 8 bits low part of an absolute address. */ +This is the 8 bits low part of an absolute address. */ BFD_RELOC_M68HC11_LO8, /* Motorola 68HC11 reloc. -This is the 3 bits of a value. */ +This is the 3 bits of a value. */ BFD_RELOC_M68HC11_3B, /* These relocs are only used within the CRIS assembler. They are not -(at present) written to any object files. */ +(at present) written to any object files. */ BFD_RELOC_CRIS_BDISP8, BFD_RELOC_CRIS_UNSIGNED_5, BFD_RELOC_CRIS_SIGNED_6, BFD_RELOC_CRIS_UNSIGNED_6, BFD_RELOC_CRIS_UNSIGNED_4, -/* Relocs used in ELF shared libraries for CRIS. */ +/* Relocs used in ELF shared libraries for CRIS. */ BFD_RELOC_CRIS_COPY, BFD_RELOC_CRIS_GLOB_DAT, BFD_RELOC_CRIS_JUMP_SLOT, BFD_RELOC_CRIS_RELATIVE, -/* 32-bit offset to symbol-entry within GOT. */ +/* 32-bit offset to symbol-entry within GOT. */ BFD_RELOC_CRIS_32_GOT, -/* 16-bit offset to symbol-entry within GOT. */ +/* 16-bit offset to symbol-entry within GOT. */ BFD_RELOC_CRIS_16_GOT, -/* 32-bit offset to symbol-entry within GOT, with PLT handling. */ +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */ BFD_RELOC_CRIS_32_GOTPLT, -/* 16-bit offset to symbol-entry within GOT, with PLT handling. */ +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */ BFD_RELOC_CRIS_16_GOTPLT, -/* 32-bit offset to symbol, relative to GOT. */ +/* 32-bit offset to symbol, relative to GOT. */ BFD_RELOC_CRIS_32_GOTREL, -/* 32-bit offset to symbol with PLT entry, relative to GOT. */ +/* 32-bit offset to symbol with PLT entry, relative to GOT. */ BFD_RELOC_CRIS_32_PLT_GOTREL, -/* 32-bit offset to symbol with PLT entry, relative to this relocation. */ +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */ BFD_RELOC_CRIS_32_PLT_PCREL, -/* Intel i860 Relocations. */ +/* Intel i860 Relocations. */ BFD_RELOC_860_COPY, BFD_RELOC_860_GLOB_DAT, BFD_RELOC_860_JUMP_SLOT, @@ -2913,16 +2948,21 @@ This is the 3 bits of a value. */ BFD_RELOC_860_HIGOT, BFD_RELOC_860_HIGOTOFF, -/* OpenRISC Relocations. */ +/* OpenRISC Relocations. */ BFD_RELOC_OPENRISC_ABS_26, BFD_RELOC_OPENRISC_REL_26, -/* H8 elf Relocations. */ +/* H8 elf Relocations. */ BFD_RELOC_H8_DIR16A8, BFD_RELOC_H8_DIR16R8, BFD_RELOC_H8_DIR24A8, BFD_RELOC_H8_DIR24R8, BFD_RELOC_H8_DIR32A16, + +/* Sony Xstormy16 Relocations. */ + BFD_RELOC_XSTORMY16_REL_12, + BFD_RELOC_XSTORMY16_24, + BFD_RELOC_XSTORMY16_FPTR16, BFD_RELOC_UNUSED }; typedef enum bfd_reloc_code_real bfd_reloc_code_real_type; reloc_howto_type * @@ -2934,128 +2974,128 @@ bfd_get_reloc_code_name PARAMS ((bfd_rel typedef struct symbol_cache_entry { - /* A pointer to the BFD which owns the symbol. This information - is necessary so that a back end can work out what additional - information (invisible to the application writer) is carried - with the symbol. - - This field is *almost* redundant, since you can use section->owner - instead, except that some symbols point to the global sections - bfd_{abs,com,und}_section. This could be fixed by making - these globals be per-bfd (or per-target-flavor). FIXME. */ + /* A pointer to the BFD which owns the symbol. This information + is necessary so that a back end can work out what additional + information (invisible to the application writer) is carried + with the symbol. + + This field is *almost* redundant, since you can use section->owner + instead, except that some symbols point to the global sections + bfd_{abs,com,und}_section. This could be fixed by making + these globals be per-bfd (or per-target-flavor). FIXME. */ + struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ - struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */ - - /* The text of the symbol. The name is left alone, and not copied; the - application may not alter it. */ + /* The text of the symbol. The name is left alone, and not copied; the + application may not alter it. */ const char *name; - /* The value of the symbol. This really should be a union of a - numeric value with a pointer, since some flags indicate that - a pointer to another symbol is stored here. */ + /* The value of the symbol. This really should be a union of a + numeric value with a pointer, since some flags indicate that + a pointer to another symbol is stored here. */ symvalue value; - /* Attributes of a symbol: */ - + /* Attributes of a symbol. */ #define BSF_NO_FLAGS 0x00 - /* The symbol has local scope; <> in <>. The value - is the offset into the section of the data. */ + /* The symbol has local scope; <> in <>. The value + is the offset into the section of the data. */ #define BSF_LOCAL 0x01 - /* The symbol has global scope; initialized data in <>. The - value is the offset into the section of the data. */ + /* The symbol has global scope; initialized data in <>. The + value is the offset into the section of the data. */ #define BSF_GLOBAL 0x02 - /* The symbol has global scope and is exported. The value is - the offset into the section of the data. */ -#define BSF_EXPORT BSF_GLOBAL /* no real difference */ - - /* A normal C symbol would be one of: - <>, <>, <> or - <> */ + /* The symbol has global scope and is exported. The value is + the offset into the section of the data. */ +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */ + + /* A normal C symbol would be one of: + <>, <>, <> or + <>. */ - /* The symbol is a debugging record. The value has an arbitary - meaning, unless BSF_DEBUGGING_RELOC is also set. */ + /* The symbol is a debugging record. The value has an arbitary + meaning, unless BSF_DEBUGGING_RELOC is also set. */ #define BSF_DEBUGGING 0x08 - /* The symbol denotes a function entry point. Used in ELF, - perhaps others someday. */ + /* The symbol denotes a function entry point. Used in ELF, + perhaps others someday. */ #define BSF_FUNCTION 0x10 - /* Used by the linker. */ + /* Used by the linker. */ #define BSF_KEEP 0x20 #define BSF_KEEP_G 0x40 - /* A weak global symbol, overridable without warnings by - a regular global symbol of the same name. */ + /* A weak global symbol, overridable without warnings by + a regular global symbol of the same name. */ #define BSF_WEAK 0x80 - /* This symbol was created to point to a section, e.g. ELF's - STT_SECTION symbols. */ + /* This symbol was created to point to a section, e.g. ELF's + STT_SECTION symbols. */ #define BSF_SECTION_SYM 0x100 - /* The symbol used to be a common symbol, but now it is - allocated. */ + /* The symbol used to be a common symbol, but now it is + allocated. */ #define BSF_OLD_COMMON 0x200 - /* The default value for common data. */ + /* The default value for common data. */ #define BFD_FORT_COMM_DEFAULT_VALUE 0 - /* In some files the type of a symbol sometimes alters its - location in an output file - ie in coff a <> symbol - which is also <> symbol appears where it was - declared and not at the end of a section. This bit is set - by the target BFD part to convey this information. */ - + /* In some files the type of a symbol sometimes alters its + location in an output file - ie in coff a <> symbol + which is also <> symbol appears where it was + declared and not at the end of a section. This bit is set + by the target BFD part to convey this information. */ #define BSF_NOT_AT_END 0x400 - /* Signal that the symbol is the label of constructor section. */ + /* Signal that the symbol is the label of constructor section. */ #define BSF_CONSTRUCTOR 0x800 - /* Signal that the symbol is a warning symbol. The name is a - warning. The name of the next symbol is the one to warn about; - if a reference is made to a symbol with the same name as the next - symbol, a warning is issued by the linker. */ + /* Signal that the symbol is a warning symbol. The name is a + warning. The name of the next symbol is the one to warn about; + if a reference is made to a symbol with the same name as the next + symbol, a warning is issued by the linker. */ #define BSF_WARNING 0x1000 - /* Signal that the symbol is indirect. This symbol is an indirect - pointer to the symbol with the same name as the next symbol. */ + /* Signal that the symbol is indirect. This symbol is an indirect + pointer to the symbol with the same name as the next symbol. */ #define BSF_INDIRECT 0x2000 - /* BSF_FILE marks symbols that contain a file name. This is used - for ELF STT_FILE symbols. */ + /* BSF_FILE marks symbols that contain a file name. This is used + for ELF STT_FILE symbols. */ #define BSF_FILE 0x4000 - /* Symbol is from dynamic linking information. */ + /* Symbol is from dynamic linking information. */ #define BSF_DYNAMIC 0x8000 - /* The symbol denotes a data object. Used in ELF, and perhaps - others someday. */ + /* The symbol denotes a data object. Used in ELF, and perhaps + others someday. */ #define BSF_OBJECT 0x10000 - /* This symbol is a debugging symbol. The value is the offset - into the section of the data. BSF_DEBUGGING should be set - as well. */ + /* This symbol is a debugging symbol. The value is the offset + into the section of the data. BSF_DEBUGGING should be set + as well. */ #define BSF_DEBUGGING_RELOC 0x20000 flagword flags; - /* A pointer to the section to which this symbol is - relative. This will always be non NULL, there are special - sections for undefined and absolute symbols. */ + /* A pointer to the section to which this symbol is + relative. This will always be non NULL, there are special + sections for undefined and absolute symbols. */ struct sec *section; - /* Back end special data. */ + /* Back end special data. */ union { PTR p; bfd_vma i; - } udata; + } + udata; +} +asymbol; -} asymbol; #define bfd_get_symtab_upper_bound(abfd) \ BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) + boolean bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym)); @@ -3064,9 +3104,11 @@ bfd_is_local_label_name PARAMS ((bfd *ab #define bfd_is_local_label_name(abfd, name) \ BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) + #define bfd_canonicalize_symtab(abfd, location) \ BFD_SEND (abfd, _bfd_canonicalize_symtab,\ (abfd, location)) + boolean bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count)); @@ -3075,8 +3117,13 @@ bfd_print_symbol_vandf PARAMS ((bfd *abf #define bfd_make_empty_symbol(abfd) \ BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) + +asymbol * +_bfd_generic_make_empty_symbol PARAMS ((bfd *)); + #define bfd_make_debug_symbol(abfd,ptr,size) \ BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) + int bfd_decode_symclass PARAMS ((asymbol *symbol)); @@ -3092,123 +3139,121 @@ bfd_copy_private_symbol_data PARAMS ((bf #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ (ibfd, isymbol, obfd, osymbol)) + struct _bfd { - /* The filename the application opened the BFD with. */ - const char *filename; - - /* A pointer to the target jump table. */ - const struct bfd_target *xvec; - - /* To avoid dragging too many header files into every file that - includes `<>', IOSTREAM has been declared as a "char - *", and MTIME as a "long". Their correct types, to which they - are cast when used, are "FILE *" and "time_t". The iostream - is the result of an fopen on the filename. However, if the - BFD_IN_MEMORY flag is set, then iostream is actually a pointer - to a bfd_in_memory struct. */ - PTR iostream; - - /* Is the file descriptor being cached? That is, can it be closed as - needed, and re-opened when accessed later? */ - - boolean cacheable; - - /* Marks whether there was a default target specified when the - BFD was opened. This is used to select which matching algorithm - to use to choose the back end. */ - - boolean target_defaulted; - - /* The caching routines use these to maintain a - least-recently-used list of BFDs */ - - struct _bfd *lru_prev, *lru_next; - - /* When a file is closed by the caching routines, BFD retains - state information on the file here: */ - - ufile_ptr where; - - /* and here: (``once'' means at least once) */ - - boolean opened_once; - - /* Set if we have a locally maintained mtime value, rather than - getting it from the file each time: */ - - boolean mtime_set; - - /* File modified time, if mtime_set is true: */ + /* The filename the application opened the BFD with. */ + const char *filename; - long mtime; + /* A pointer to the target jump table. */ + const struct bfd_target *xvec; - /* Reserved for an unimplemented file locking extension.*/ + /* To avoid dragging too many header files into every file that + includes `<>', IOSTREAM has been declared as a "char *", + and MTIME as a "long". Their correct types, to which they + are cast when used, are "FILE *" and "time_t". The iostream + is the result of an fopen on the filename. However, if the + BFD_IN_MEMORY flag is set, then iostream is actually a pointer + to a bfd_in_memory struct. */ + PTR iostream; + + /* Is the file descriptor being cached? That is, can it be closed as + needed, and re-opened when accessed later? */ + boolean cacheable; + + /* Marks whether there was a default target specified when the + BFD was opened. This is used to select which matching algorithm + to use to choose the back end. */ + boolean target_defaulted; + + /* The caching routines use these to maintain a + least-recently-used list of BFDs. */ + struct _bfd *lru_prev, *lru_next; + + /* When a file is closed by the caching routines, BFD retains + state information on the file here... */ + ufile_ptr where; + + /* ... and here: (``once'' means at least once). */ + boolean opened_once; + + /* Set if we have a locally maintained mtime value, rather than + getting it from the file each time. */ + boolean mtime_set; + + /* File modified time, if mtime_set is true. */ + long mtime; - int ifd; + /* Reserved for an unimplemented file locking extension. */ + int ifd; - /* The format which belongs to the BFD. (object, core, etc.) */ + /* The format which belongs to the BFD. (object, core, etc.) */ + bfd_format format; - bfd_format format; - - /* The direction the BFD was opened with*/ - - enum bfd_direction {no_direction = 0, - read_direction = 1, - write_direction = 2, - both_direction = 3} direction; - - /* Format_specific flags*/ + /* The direction with which the BFD was opened. */ + enum bfd_direction + { + no_direction = 0, + read_direction = 1, + write_direction = 2, + both_direction = 3 + } + direction; - flagword flags; + /* Format_specific flags. */ + flagword flags; - /* Currently my_archive is tested before adding origin to - anything. I believe that this can become always an add of - origin, with origin set to 0 for non archive files. */ + /* Currently my_archive is tested before adding origin to + anything. I believe that this can become always an add of + origin, with origin set to 0 for non archive files. */ + ufile_ptr origin; - ufile_ptr origin; + /* Remember when output has begun, to stop strange things + from happening. */ + boolean output_has_begun; - /* Remember when output has begun, to stop strange things - from happening. */ - boolean output_has_begun; + /* A hash table for section names. */ + struct bfd_hash_table section_htab; - /* Pointer to linked list of sections*/ - struct sec *sections; + /* Pointer to linked list of sections. */ + struct sec *sections; - /* The number of sections */ - unsigned int section_count; + /* The place where we add to the section list. */ + struct sec **section_tail; - /* Stuff only useful for object files: - The start address. */ - bfd_vma start_address; + /* The number of sections. */ + unsigned int section_count; - /* Used for input and output*/ - unsigned int symcount; + /* Stuff only useful for object files: + The start address. */ + bfd_vma start_address; - /* Symbol table for output BFD (with symcount entries) */ - struct symbol_cache_entry **outsymbols; + /* Used for input and output. */ + unsigned int symcount; - /* Pointer to structure which contains architecture information*/ - const struct bfd_arch_info *arch_info; + /* Symbol table for output BFD (with symcount entries). */ + struct symbol_cache_entry **outsymbols; - /* Stuff only useful for archives:*/ - PTR arelt_data; - struct _bfd *my_archive; /* The containing archive BFD. */ - struct _bfd *next; /* The next BFD in the archive. */ - struct _bfd *archive_head; /* The first BFD in the archive. */ - boolean has_armap; + /* Pointer to structure which contains architecture information. */ + const struct bfd_arch_info *arch_info; - /* A chain of BFD structures involved in a link. */ - struct _bfd *link_next; + /* Stuff only useful for archives. */ + PTR arelt_data; + struct _bfd *my_archive; /* The containing archive BFD. */ + struct _bfd *next; /* The next BFD in the archive. */ + struct _bfd *archive_head; /* The first BFD in the archive. */ + boolean has_armap; - /* A field used by _bfd_generic_link_add_archive_symbols. This will - be used only for archive elements. */ - int archive_pass; + /* A chain of BFD structures involved in a link. */ + struct _bfd *link_next; - /* Used by the back end to hold private data. */ + /* A field used by _bfd_generic_link_add_archive_symbols. This will + be used only for archive elements. */ + int archive_pass; - union - { + /* Used by the back end to hold private data. */ + union + { struct aout_data_struct *aout_data; struct artdata *aout_ar_data; struct _oasys_data *oasys_obj_data; @@ -3239,15 +3284,16 @@ struct _bfd struct versados_data_struct *versados_data; struct netbsd_core_struct *netbsd_core_data; PTR any; - } tdata; + } + tdata; - /* Used by the application to hold private data*/ - PTR usrdata; + /* Used by the application to hold private data. */ + PTR usrdata; /* Where all the allocated stuff under this BFD goes. This is a struct objalloc *, but we use PTR to avoid requiring the inclusion of objalloc.h. */ - PTR memory; + PTR memory; }; typedef enum bfd_error @@ -3272,7 +3318,8 @@ typedef enum bfd_error bfd_error_file_truncated, bfd_error_file_too_big, bfd_error_invalid_error_code -} bfd_error_type; +} +bfd_error_type; bfd_error_type bfd_get_error PARAMS ((void)); @@ -3310,9 +3357,7 @@ bfd_canonicalize_reloc PARAMS ((bfd *abf asymbol **syms)); void -bfd_set_reloc PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count) - - ); +bfd_set_reloc PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)); boolean bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags)); @@ -3467,7 +3512,9 @@ core_file_matches_executable_p PARAMS (( (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ (bfd_assert (__FILE__,__LINE__), NULL)) #endif -enum bfd_flavour { + +enum bfd_flavour +{ bfd_target_unknown_flavour, bfd_target_aout_flavour, bfd_target_coff_flavour, @@ -3496,15 +3543,40 @@ typedef struct bfd_link_info _bfd_link_i typedef struct bfd_target { + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */ char *name; + + /* The "flavour" of a back end is a general indication about + the contents of a file. */ enum bfd_flavour flavour; + + /* The order of bytes within the data area of a file. */ enum bfd_endian byteorder; + + /* The order of bytes within the header parts of a file. */ enum bfd_endian header_byteorder; + + /* A mask of all the flags which an executable may have set - + from the set <>, <>, ...<>. */ flagword object_flags; + + /* A mask of all the flags which a section may have set - from + the set <>, <>, ...<>. */ flagword section_flags; + + /* The character normally found at the front of a symbol. + (if any), perhaps `_'. */ char symbol_leading_char; + + /* The pad character for file names within an archive header. */ char ar_pad_char; + + /* The maximum number of characters in an archive header. */ unsigned short ar_max_namelen; + + /* Entries for byte swapping for data. These are different from the + other entry points, since they don't take a BFD asthe first argument. + Certain other handlers could do the same. */ bfd_vma (*bfd_getx64) PARAMS ((const bfd_byte *)); bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *)); void (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *)); @@ -3514,6 +3586,8 @@ typedef struct bfd_target bfd_vma (*bfd_getx16) PARAMS ((const bfd_byte *)); bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *)); void (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *)); + + /* Byte swapping for the headers. */ bfd_vma (*bfd_h_getx64) PARAMS ((const bfd_byte *)); bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *)); void (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *)); @@ -3523,10 +3597,20 @@ typedef struct bfd_target bfd_vma (*bfd_h_getx16) PARAMS ((const bfd_byte *)); bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *)); void (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *)); + + /* Format dependent routines: these are vectors of entry points + within the target vector structure, one for each format to check. */ + + /* Check the format of a file being read. Return a <> or zero. */ const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *)); + + /* Set the format of a file being written. */ boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *)); + + /* Write cached information into a file being written, at <>. */ boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *)); + /* Generic entry points. */ #define BFD_JUMP_TABLE_GENERIC(NAME) \ CONCAT2 (NAME,_close_and_cleanup), \ @@ -3569,10 +3653,10 @@ CONCAT2 (NAME,_bfd_print_private_bfd_dat to another. */ boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *, bfd *, asymbol *)); - /* Called to set private backend flags */ + /* Called to set private backend flags. */ boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); - /* Called to print private BFD data */ + /* Called to print private BFD data. */ boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR)); /* Core file entry points. */ @@ -3722,7 +3806,7 @@ CONCAT2 (NAME,_get_dynamic_symtab_upper_ CONCAT2 (NAME,_canonicalize_dynamic_symtab), \ CONCAT2 (NAME,_get_dynamic_reloc_upper_bound), \ CONCAT2 (NAME,_canonicalize_dynamic_reloc) - /* Get the amount of memory required to hold the dynamic symbols. */ + /* Get the amount of memory required to hold the dynamic symbols. */ long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *)); /* Read in the dynamic symbols. */ long (*_bfd_canonicalize_dynamic_symtab) @@ -3733,12 +3817,15 @@ CONCAT2 (NAME,_canonicalize_dynamic_relo long (*_bfd_canonicalize_dynamic_reloc) PARAMS ((bfd *, arelent **, struct symbol_cache_entry **)); - /* Opposite endian version of this target. */ - const struct bfd_target * alternative_target; + /* Opposite endian version of this target. */ + const struct bfd_target * alternative_target; - PTR backend_data; + /* Data for use by back-end routines, which isn't + generic enough to belong in this structure. */ + PTR backend_data; } bfd_target; + boolean bfd_set_default_target PARAMS ((const char *name)); diff -uprN binutils-2.11.92.0.12.3/bfd/bfd.c binutils-2.11.93.0.2/bfd/bfd.c --- binutils-2.11.92.0.12.3/bfd/bfd.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/bfd.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* Generic BFD library interface and support routines. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -36,121 +36,118 @@ CODE_FRAGMENT . .struct _bfd .{ -. {* The filename the application opened the BFD with. *} -. const char *filename; +. {* The filename the application opened the BFD with. *} +. const char *filename; . -. {* A pointer to the target jump table. *} -. const struct bfd_target *xvec; +. {* A pointer to the target jump table. *} +. const struct bfd_target *xvec; . -. {* To avoid dragging too many header files into every file that -. includes `<>', IOSTREAM has been declared as a "char -. *", and MTIME as a "long". Their correct types, to which they -. are cast when used, are "FILE *" and "time_t". The iostream -. is the result of an fopen on the filename. However, if the -. BFD_IN_MEMORY flag is set, then iostream is actually a pointer -. to a bfd_in_memory struct. *} -. PTR iostream; -. -. {* Is the file descriptor being cached? That is, can it be closed as -. needed, and re-opened when accessed later? *} -. -. boolean cacheable; -. -. {* Marks whether there was a default target specified when the -. BFD was opened. This is used to select which matching algorithm -. to use to choose the back end. *} -. -. boolean target_defaulted; -. -. {* The caching routines use these to maintain a -. least-recently-used list of BFDs *} -. -. struct _bfd *lru_prev, *lru_next; -. -. {* When a file is closed by the caching routines, BFD retains -. state information on the file here: *} -. -. ufile_ptr where; -. -. {* and here: (``once'' means at least once) *} -. -. boolean opened_once; -. -. {* Set if we have a locally maintained mtime value, rather than -. getting it from the file each time: *} -. -. boolean mtime_set; -. -. {* File modified time, if mtime_set is true: *} -. -. long mtime; -. -. {* Reserved for an unimplemented file locking extension.*} -. -. int ifd; -. -. {* The format which belongs to the BFD. (object, core, etc.) *} -. -. bfd_format format; -. -. {* The direction the BFD was opened with*} -. -. enum bfd_direction {no_direction = 0, -. read_direction = 1, -. write_direction = 2, -. both_direction = 3} direction; -. -. {* Format_specific flags*} -. -. flagword flags; -. -. {* Currently my_archive is tested before adding origin to -. anything. I believe that this can become always an add of -. origin, with origin set to 0 for non archive files. *} -. -. ufile_ptr origin; -. -. {* Remember when output has begun, to stop strange things -. from happening. *} -. boolean output_has_begun; -. -. {* Pointer to linked list of sections*} -. struct sec *sections; -. -. {* The number of sections *} -. unsigned int section_count; -. -. {* Stuff only useful for object files: -. The start address. *} -. bfd_vma start_address; -. -. {* Used for input and output*} -. unsigned int symcount; -. -. {* Symbol table for output BFD (with symcount entries) *} -. struct symbol_cache_entry **outsymbols; -. -. {* Pointer to structure which contains architecture information*} -. const struct bfd_arch_info *arch_info; -. -. {* Stuff only useful for archives:*} -. PTR arelt_data; -. struct _bfd *my_archive; {* The containing archive BFD. *} -. struct _bfd *next; {* The next BFD in the archive. *} -. struct _bfd *archive_head; {* The first BFD in the archive. *} -. boolean has_armap; -. -. {* A chain of BFD structures involved in a link. *} -. struct _bfd *link_next; -. -. {* A field used by _bfd_generic_link_add_archive_symbols. This will -. be used only for archive elements. *} -. int archive_pass; -. -. {* Used by the back end to hold private data. *} -. -. union -. { +. {* To avoid dragging too many header files into every file that +. includes `<>', IOSTREAM has been declared as a "char *", +. and MTIME as a "long". Their correct types, to which they +. are cast when used, are "FILE *" and "time_t". The iostream +. is the result of an fopen on the filename. However, if the +. BFD_IN_MEMORY flag is set, then iostream is actually a pointer +. to a bfd_in_memory struct. *} +. PTR iostream; +. +. {* Is the file descriptor being cached? That is, can it be closed as +. needed, and re-opened when accessed later? *} +. boolean cacheable; +. +. {* Marks whether there was a default target specified when the +. BFD was opened. This is used to select which matching algorithm +. to use to choose the back end. *} +. boolean target_defaulted; +. +. {* The caching routines use these to maintain a +. least-recently-used list of BFDs. *} +. struct _bfd *lru_prev, *lru_next; +. +. {* When a file is closed by the caching routines, BFD retains +. state information on the file here... *} +. ufile_ptr where; +. +. {* ... and here: (``once'' means at least once). *} +. boolean opened_once; +. +. {* Set if we have a locally maintained mtime value, rather than +. getting it from the file each time. *} +. boolean mtime_set; +. +. {* File modified time, if mtime_set is true. *} +. long mtime; +. +. {* Reserved for an unimplemented file locking extension. *} +. int ifd; +. +. {* The format which belongs to the BFD. (object, core, etc.) *} +. bfd_format format; +. +. {* The direction with which the BFD was opened. *} +. enum bfd_direction +. { +. no_direction = 0, +. read_direction = 1, +. write_direction = 2, +. both_direction = 3 +. } +. direction; +. +. {* Format_specific flags. *} +. flagword flags; +. +. {* Currently my_archive is tested before adding origin to +. anything. I believe that this can become always an add of +. origin, with origin set to 0 for non archive files. *} +. ufile_ptr origin; +. +. {* Remember when output has begun, to stop strange things +. from happening. *} +. boolean output_has_begun; +. +. {* A hash table for section names. *} +. struct bfd_hash_table section_htab; +. +. {* Pointer to linked list of sections. *} +. struct sec *sections; +. +. {* The place where we add to the section list. *} +. struct sec **section_tail; +. +. {* The number of sections. *} +. unsigned int section_count; +. +. {* Stuff only useful for object files: +. The start address. *} +. bfd_vma start_address; +. +. {* Used for input and output. *} +. unsigned int symcount; +. +. {* Symbol table for output BFD (with symcount entries). *} +. struct symbol_cache_entry **outsymbols; +. +. {* Pointer to structure which contains architecture information. *} +. const struct bfd_arch_info *arch_info; +. +. {* Stuff only useful for archives. *} +. PTR arelt_data; +. struct _bfd *my_archive; {* The containing archive BFD. *} +. struct _bfd *next; {* The next BFD in the archive. *} +. struct _bfd *archive_head; {* The first BFD in the archive. *} +. boolean has_armap; +. +. {* A chain of BFD structures involved in a link. *} +. struct _bfd *link_next; +. +. {* A field used by _bfd_generic_link_add_archive_symbols. This will +. be used only for archive elements. *} +. int archive_pass; +. +. {* Used by the back end to hold private data. *} +. union +. { . struct aout_data_struct *aout_data; . struct artdata *aout_ar_data; . struct _oasys_data *oasys_obj_data; @@ -181,15 +178,16 @@ CODE_FRAGMENT . struct versados_data_struct *versados_data; . struct netbsd_core_struct *netbsd_core_data; . PTR any; -. } tdata; +. } +. tdata; . -. {* Used by the application to hold private data*} -. PTR usrdata; +. {* Used by the application to hold private data. *} +. PTR usrdata; . . {* Where all the allocated stuff under this BFD goes. This is a . struct objalloc *, but we use PTR to avoid requiring the inclusion of . objalloc.h. *} -. PTR memory; +. PTR memory; .}; . */ @@ -264,7 +262,8 @@ CODE_FRAGMENT . bfd_error_file_truncated, . bfd_error_file_too_big, . bfd_error_invalid_error_code -.} bfd_error_type; +.} +.bfd_error_type; . */ @@ -626,7 +625,7 @@ FUNCTION SYNOPSIS void bfd_set_reloc - (bfd *abfd, asection *sec, arelent **rel, unsigned int count) + (bfd *abfd, asection *sec, arelent **rel, unsigned int count); DESCRIPTION Set the relocation pointer and count within @@ -721,7 +720,7 @@ _bfd_abort (file, line, fn) BFD_VERSION_STRING, file, line, fn); else (*_bfd_error_handler) - (_("BFD %sinternal error, aborting at %s line %d\n"), + (_("BFD %s internal error, aborting at %s line %d\n"), BFD_VERSION_STRING, file, line); (*_bfd_error_handler) (_("Please report this bug.\n")); xexit (EXIT_FAILURE); diff -uprN binutils-2.11.92.0.12.3/bfd/binary.c binutils-2.11.93.0.2/bfd/binary.c --- binutils-2.11.92.0.12.3/bfd/binary.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/binary.c Sun Feb 3 11:22:30 2002 @@ -48,7 +48,6 @@ static boolean binary_get_section_conten static long binary_get_symtab_upper_bound PARAMS ((bfd *)); static char *mangle_name PARAMS ((bfd *, char *)); static long binary_get_symtab PARAMS ((bfd *, asymbol **)); -static asymbol *binary_make_empty_symbol PARAMS ((bfd *)); static void binary_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static boolean binary_set_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); @@ -219,15 +218,7 @@ binary_get_symtab (abfd, alocation) return BIN_SYMS; } -/* Make an empty symbol. */ - -static asymbol * -binary_make_empty_symbol (abfd) - bfd *abfd; -{ - return (asymbol *) bfd_alloc (abfd, (bfd_size_type) sizeof (asymbol)); -} - +#define binary_make_empty_symbol _bfd_generic_make_empty_symbol #define binary_print_symbol _bfd_nosymbols_print_symbol /* Get information about a symbol. */ diff -uprN binutils-2.11.92.0.12.3/bfd/cisco-core.c binutils-2.11.93.0.2/bfd/cisco-core.c --- binutils-2.11.92.0.12.3/bfd/cisco-core.c Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/bfd/cisco-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* BFD back-end for CISCO crash dumps. - Copyright 1994, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1997, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -237,58 +238,43 @@ cisco_core_file_validate (abfd, crash_in break; } - abfd->sections = NULL; - abfd->section_count = 0; - - /* Create a ".reg" section to allow access to the saved - registers. */ + /* Create a ".data" section that maps the entire file, which is + essentially a dump of the target system's RAM. */ - asect = (asection *) bfd_zmalloc ((bfd_size_type) sizeof (asection)); + asect = bfd_make_section_anyway (abfd, ".data"); if (asect == NULL) goto error_return; - asect->name = ".reg"; - asect->flags = SEC_HAS_CONTENTS; - asect->vma = 0; - asect->filepos = bfd_get_32 (abfd, crashinfo.registers) - rambase; - /* Since we don't know the exact size of the saved register info, - choose a register section size that is either the remaining part - of the file, or 1024, whichever is smaller. */ - nread = statbuf.st_size - asect->filepos; - asect->_raw_size = (nread < 1024) ? nread : 1024; - asect->next = abfd->sections; - abfd->sections = asect; - ++abfd->section_count; + asect->flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS; + /* The size of memory is the size of the core file itself. */ + asect->_raw_size = statbuf.st_size; + asect->vma = rambase; + asect->filepos = 0; /* Create a ".crash" section to allow access to the saved crash information. */ - asect = (asection *) bfd_zmalloc ((bfd_size_type) sizeof (asection)); + asect = bfd_make_section_anyway (abfd, ".crash"); if (asect == NULL) goto error_return; - asect->name = ".crash"; asect->flags = SEC_HAS_CONTENTS; asect->vma = 0; asect->filepos = crashinfo_offset; asect->_raw_size = sizeof (crashinfo); - asect->next = abfd->sections; - abfd->sections = asect; - ++abfd->section_count; - /* Create a ".data" section that maps the entire file, which is - essentially a dump of the target system's RAM. */ + /* Create a ".reg" section to allow access to the saved + registers. */ - asect = (asection *) bfd_zmalloc ((bfd_size_type) sizeof (asection)); + asect = bfd_make_section_anyway (abfd, ".reg"); if (asect == NULL) goto error_return; - asect->name = ".data"; - asect->flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS; - /* The size of memory is the size of the core file itself. */ - asect->_raw_size = statbuf.st_size; - asect->vma = rambase; - asect->filepos = 0; - asect->next = abfd->sections; - abfd->sections = asect; - ++abfd->section_count; + asect->flags = SEC_HAS_CONTENTS; + asect->vma = 0; + asect->filepos = bfd_get_32 (abfd, crashinfo.registers) - rambase; + /* Since we don't know the exact size of the saved register info, + choose a register section size that is either the remaining part + of the file, or 1024, whichever is smaller. */ + nread = statbuf.st_size - asect->filepos; + asect->_raw_size = (nread < 1024) ? nread : 1024; return abfd->xvec; @@ -296,17 +282,10 @@ cisco_core_file_validate (abfd, crash_in and there is an error of some kind. */ error_return: - { - sec_ptr nextsect; - for (asect = abfd->sections; asect != NULL;) - { - nextsect = asect->next; - free (asect); - asect = nextsect; - } - free (abfd->tdata.cisco_core_data); - return NULL; - } + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); + return NULL; } static const bfd_target * diff -uprN binutils-2.11.92.0.12.3/bfd/coff-alpha.c binutils-2.11.93.0.2/bfd/coff-alpha.c --- binutils-2.11.92.0.12.3/bfd/coff-alpha.c Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/bfd/coff-alpha.c Sun Feb 3 11:22:30 2002 @@ -1986,7 +1986,7 @@ alpha_relocate_section (output_bfd, info if (gp_usedp && gp_undefined) { if (! ((*info->callbacks->reloc_dangerous) - (info, _("GP relative relocation when GP not defined"), + (info, _("GP relative relocation used when GP not defined"), input_bfd, input_section, r_vaddr - input_section->vma))) return false; /* Only give the error once per link. */ diff -uprN binutils-2.11.92.0.12.3/bfd/coff-arm.c binutils-2.11.93.0.2/bfd/coff-arm.c --- binutils-2.11.92.0.12.3/bfd/coff-arm.c Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/bfd/coff-arm.c Sun Feb 3 11:22:30 2002 @@ -2232,7 +2232,7 @@ coff_arm_merge_private_bfd_data (ibfd, o { _bfd_error_handler /* xgettext: c-format */ - (_("%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d"), + (_("ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d"), bfd_archive_filename (ibfd), APCS_26_FLAG (ibfd) ? 26 : 32, bfd_get_filename (obfd), APCS_26_FLAG (obfd) ? 26 : 32 ); @@ -2247,10 +2247,10 @@ coff_arm_merge_private_bfd_data (ibfd, o if (APCS_FLOAT_FLAG (ibfd)) /* xgettext: c-format */ - msg = _("%s: ERROR: passes floats in float registers whereas target %s uses integer registers"); + msg = _("ERROR: %s passes floats in float registers, whereas %s passes them in integer registers"); else /* xgettext: c-format */ - msg = _("%s: ERROR: passes floats in integer registers whereas target %s uses float registers"); + msg = _("ERROR: %s passes floats in integer registers, whereas %s passes them in float registers"); _bfd_error_handler (msg, bfd_archive_filename (ibfd), bfd_get_filename (obfd)); @@ -2265,10 +2265,10 @@ coff_arm_merge_private_bfd_data (ibfd, o if (PIC_FLAG (ibfd)) /* xgettext: c-format */ - msg = _("%s: ERROR: compiled as position independent code, whereas target %s is absolute position"); + msg = _("ERROR: %s is compiled as position independent code, whereas target %s is absolute position"); else /* xgettext: c-format */ - msg = _("%s: ERROR: compiled as absolute position code, whereas target %s is position independent"); + msg = _("ERROR: %s is compiled as absolute position code, whereas target %s is position independent"); _bfd_error_handler (msg, bfd_archive_filename (ibfd), bfd_get_filename (obfd)); @@ -2297,10 +2297,10 @@ coff_arm_merge_private_bfd_data (ibfd, o if (INTERWORK_FLAG (ibfd)) /* xgettext: c-format */ - msg = _("Warning: input file %s supports interworking, whereas %s does not."); + msg = _("Warning: %s supports interworking, whereas %s does not"); else /* xgettext: c-format */ - msg = _("Warning: input file %s does not support interworking, whereas %s does."); + msg = _("Warning: %s does not support interworking, whereas %s does"); _bfd_error_handler (msg, bfd_archive_filename (ibfd), bfd_get_filename (obfd)); @@ -2398,7 +2398,7 @@ _bfd_coff_arm_set_private_flags (abfd, f { if (flag) /* xgettext: c-format */ - _bfd_error_handler (_("Warning: Not setting interworking flag of %s, since it has already been specified as non-interworking"), + _bfd_error_handler (_("Warning: Not setting interworking flag of %s since it has already been specified as non-interworking"), bfd_archive_filename (abfd)); else /* xgettext: c-format */ @@ -2461,7 +2461,8 @@ coff_arm_copy_private_bfd_data (src, des if (INTERWORK_FLAG (dest)) { /* xgettext:c-format */ - _bfd_error_handler (("Warning: Clearing the interworking bit of %s, because the non-interworking code in %s has been copied into it"), + _bfd_error_handler (("\ +Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it"), bfd_get_filename (dest), bfd_archive_filename (src)); } diff -uprN binutils-2.11.92.0.12.3/bfd/coff-mips.c binutils-2.11.93.0.2/bfd/coff-mips.c --- binutils-2.11.92.0.12.3/bfd/coff-mips.c Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/coff-mips.c Sun Feb 3 11:22:30 2002 @@ -1146,7 +1146,7 @@ mips_bfd_reloc_type_lookup (abfd, code) case BFD_RELOC_LO16: mips_type = MIPS_R_REFLO; break; - case BFD_RELOC_MIPS_GPREL: + case BFD_RELOC_GPREL16: mips_type = MIPS_R_GPREL; break; case BFD_RELOC_MIPS_LITERAL: @@ -1430,7 +1430,7 @@ mips_relocate_section (output_bfd, info, if (gp_undefined) { if (! ((*info->callbacks->reloc_dangerous) - (info, _("GP relative relocation when GP not defined"), + (info, _("GP relative relocation used when GP not defined"), input_bfd, input_section, int_rel.r_vaddr - input_section->vma))) return false; diff -uprN binutils-2.11.92.0.12.3/bfd/coff-or32.c binutils-2.11.93.0.2/bfd/coff-or32.c --- binutils-2.11.92.0.12.3/bfd/coff-or32.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/coff-or32.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,634 @@ +/* BFD back-end for OpenRISC 1000 COFF binaries. + Copyright 2002 Free Software Foundation, Inc. + Contributed by Ivan Guzvinec + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define OR32 1 + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "coff/or32.h" +#include "coff/internal.h" +#include "libcoff.h" + +static long get_symbol_value PARAMS ((asymbol *)); +static bfd_reloc_status_type or1_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static boolean coff_or1_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, struct internal_reloc *, struct internal_syment *, asection **)); +static boolean coff_or1_adjust_symndx PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, struct internal_reloc *, boolean *)); + +#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (2) + +#define INSERT_HWORD(WORD,HWORD) \ + (((WORD) & 0xffff0000) | ((HWORD)& 0x0000ffff)) +#define EXTRACT_HWORD(WORD) \ + ((WORD) & 0x0000ffff) +#define SIGN_EXTEND_HWORD(HWORD) \ + ((HWORD) & 0x8000 ? (HWORD)|(~0xffffL) : (HWORD)) + +#define INSERT_JUMPTARG(WORD,JT) \ + (((WORD) & 0xfc000000) | ((JT)& 0x03ffffff)) +#define EXTRACT_JUMPTARG(WORD) \ + ((WORD) & 0x03ffffff) +#define SIGN_EXTEND_JUMPTARG(JT) \ + ((JT) & 0x04000000 ? (JT)|(~0x03ffffffL) : (JT)) + +/* Provided the symbol, returns the value reffed. */ + +static long +get_symbol_value (symbol) + asymbol *symbol; +{ + long relocation = 0; + + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value + + symbol->section->output_section->vma + + symbol->section->output_offset; + + return relocation; +} + +/* This function is in charge of performing all the or32 relocations. */ + +static bfd_reloc_status_type +or32_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd, + error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol_in; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + /* The consth relocation comes in two parts, we have to remember + the state between calls, in these variables. */ + static boolean part1_consth_active = false; + static unsigned long part1_consth_value; + + unsigned long insn; + unsigned long sym_value; + unsigned long unsigned_value; + unsigned short r_type; + long signed_value; + + unsigned long addr = reloc_entry->address ; /*+ input_section->vma*/ + bfd_byte *hit_data =addr + (bfd_byte *)(data); + + r_type = reloc_entry->howto->type; + + if (output_bfd) + { + /* Partial linking - do nothing. */ + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (symbol_in != NULL + && bfd_is_und_section (symbol_in->section)) + { + /* Keep the state machine happy in case we're called again. */ + if (r_type == R_IHIHALF) + { + part1_consth_active = true; + part1_consth_value = 0; + } + + return bfd_reloc_undefined; + } + + if ((part1_consth_active) && (r_type != R_IHCONST)) + { + part1_consth_active = false; + *error_message = (char *) "Missing IHCONST"; + + return bfd_reloc_dangerous; + } + + sym_value = get_symbol_value (symbol_in); + + switch (r_type) + { + case R_IREL: + insn = bfd_get_32(abfd, hit_data); + + /* Take the value in the field and sign extend it. */ + signed_value = EXTRACT_JUMPTARG (insn); + signed_value = SIGN_EXTEND_JUMPTARG (signed_value); + signed_value <<= 2; + + /* See the note on the R_IREL reloc in coff_or32_relocate_section. */ + if (signed_value == - (long) reloc_entry->address) + signed_value = 0; + + signed_value += sym_value + reloc_entry->addend; +#if 0 + if ((signed_value & ~0x3ffff) == 0) + { /* Absolute jmp/call. */ + insn |= (1<<24); /* Make it absolute. */ + /* FIXME: Should we change r_type to R_IABS. */ + } + else +#endif + { + /* Relative jmp/call, so subtract from the value the + address of the place we're coming from. */ + signed_value -= (reloc_entry->address + + input_section->output_section->vma + + input_section->output_offset); + if (signed_value > 0x7ffffff || signed_value < -0x8000000) + return bfd_reloc_overflow; + } + signed_value >>= 2; + insn = INSERT_JUMPTARG (insn, signed_value); + bfd_put_32 (abfd, insn, hit_data); + break; + + case R_ILOHALF: + insn = bfd_get_32 (abfd, hit_data); + unsigned_value = EXTRACT_HWORD (insn); + unsigned_value += sym_value + reloc_entry->addend; + insn = INSERT_HWORD (insn, unsigned_value); + bfd_put_32 (abfd, insn, hit_data); + break; + + case R_IHIHALF: + insn = bfd_get_32 (abfd, hit_data); + + /* consth, part 1 + Just get the symbol value that is referenced. */ + part1_consth_active = true; + part1_consth_value = sym_value + reloc_entry->addend; + + /* Don't modify insn until R_IHCONST. */ + break; + + case R_IHCONST: + insn = bfd_get_32 (abfd, hit_data); + + /* consth, part 2 + Now relocate the reference. */ + if (part1_consth_active == false) + { + *error_message = (char *) "Missing IHIHALF"; + return bfd_reloc_dangerous; + } + + /* sym_ptr_ptr = r_symndx, in coff_slurp_reloc_table() */ + unsigned_value = 0; /*EXTRACT_HWORD(insn) << 16;*/ + unsigned_value += reloc_entry->addend; /* r_symndx */ + unsigned_value += part1_consth_value; + unsigned_value = unsigned_value >> 16; + insn = INSERT_HWORD (insn, unsigned_value); + part1_consth_active = false; + bfd_put_32 (abfd, insn, hit_data); + break; + + case R_BYTE: + insn = bfd_get_8 (abfd, hit_data); + unsigned_value = insn + sym_value + reloc_entry->addend; + if (unsigned_value & 0xffffff00) + return bfd_reloc_overflow; + bfd_put_8 (abfd, unsigned_value, hit_data); + break; + + case R_HWORD: + insn = bfd_get_16 (abfd, hit_data); + unsigned_value = insn + sym_value + reloc_entry->addend; + if (unsigned_value & 0xffff0000) + return bfd_reloc_overflow; + bfd_put_16 (abfd, insn, hit_data); + break; + + case R_WORD: + insn = bfd_get_32 (abfd, hit_data); + insn += sym_value + reloc_entry->addend; + bfd_put_32 (abfd, insn, hit_data); + break; + + default: + *error_message = _("Unrecognized reloc"); + return bfd_reloc_dangerous; + } + + return bfd_reloc_ok; +} + +/* type rightshift + size + bitsize + pc-relative + bitpos + absolute + complain_on_overflow + special_function + relocation name + partial_inplace + src_mask +*/ + +/* FIXME: I'm not real sure about this table. */ +static reloc_howto_type howto_table[] = +{ + { R_ABS, 0, 3, 32, false, 0, complain_overflow_bitfield, or32_reloc, "ABS", true, 0xffffffff,0xffffffff, false }, + {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, + {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, + {21}, {22}, {23}, + { R_IREL, 0, 3, 32, true, 0, complain_overflow_signed, or32_reloc, "IREL", true, 0xffffffff,0xffffffff, false }, + { R_IABS, 0, 3, 32, false, 0, complain_overflow_bitfield, or32_reloc, "IABS", true, 0xffffffff,0xffffffff, false }, + { R_ILOHALF, 0, 3, 16, true, 0, complain_overflow_signed, or32_reloc, "ILOHALF", true, 0x0000ffff,0x0000ffff, false }, + { R_IHIHALF, 0, 3, 16, true, 16,complain_overflow_signed, or32_reloc, "IHIHALF", true, 0xffff0000,0xffff0000, false }, + { R_IHCONST, 0, 3, 16, true, 0, complain_overflow_signed, or32_reloc, "IHCONST", true, 0xffff0000,0xffff0000, false }, + { R_BYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, or32_reloc, "BYTE", true, 0x000000ff,0x000000ff, false }, + { R_HWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, or32_reloc, "HWORD", true, 0x0000ffff,0x0000ffff, false }, + { R_WORD, 0, 2, 32, false, 0, complain_overflow_bitfield, or32_reloc, "WORD", true, 0xffffffff,0xffffffff, false }, +}; + +#define BADMAG(x) OR32BADMAG (x) + +#define RELOC_PROCESSING(relent, reloc, symbols, abfd, section) \ + reloc_processing (relent, reloc, symbols, abfd, section) + +static void +reloc_processing (relent,reloc, symbols, abfd, section) + arelent *relent; + struct internal_reloc *reloc; + asymbol **symbols; + bfd *abfd; + asection *section; +{ + static bfd_vma ihihalf_vaddr = (bfd_vma) -1; + + relent->address = reloc->r_vaddr; + relent->howto = howto_table + reloc->r_type; + + if (reloc->r_type == R_IHCONST) + { + /* The address of an R_IHCONST should always be the address of + the immediately preceding R_IHIHALF. relocs generated by gas + are correct, but relocs generated by High C are different (I + can't figure out what the address means for High C). We can + handle both gas and High C by ignoring the address here, and + simply reusing the address saved for R_IHIHALF. */ + if (ihihalf_vaddr == (bfd_vma) -1) + abort (); + + relent->address = ihihalf_vaddr; + ihihalf_vaddr = (bfd_vma) -1; + relent->addend = reloc->r_symndx; + relent->sym_ptr_ptr= bfd_abs_section_ptr->symbol_ptr_ptr; + } + else + { + asymbol *ptr; + relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx]; + + ptr = *(relent->sym_ptr_ptr); + + relent->addend = 0; + relent->address-= section->vma; + + if (reloc->r_type == R_IHIHALF) + ihihalf_vaddr = relent->address; + else if (ihihalf_vaddr != (bfd_vma) -1) + abort (); + } +} + +/* The reloc processing routine for the optimized COFF linker. */ + +static boolean +coff_or32_relocate_section (output_bfd, info, input_bfd, input_section, + contents, relocs, syms, sections) + bfd *output_bfd; + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + bfd_byte *contents; + struct internal_reloc *relocs; + struct internal_syment *syms; + asection **sections; +{ + struct internal_reloc *rel; + struct internal_reloc *relend; + boolean hihalf; + bfd_vma hihalf_val; + + /* If we are performing a relocateable link, we don't need to do a + thing. The caller will take care of adjusting the reloc + addresses and symbol indices. */ + if (info->relocateable) + return true; + + hihalf = false; + hihalf_val = 0; + + rel = relocs; + relend = rel + input_section->reloc_count; + + for (; rel < relend; rel++) + { + long symndx; + bfd_byte *loc; + struct coff_link_hash_entry *h; + struct internal_syment *sym; + asection *sec; + bfd_vma val; + boolean overflow; + unsigned long insn; + long signed_value; + unsigned long unsigned_value; + bfd_reloc_status_type rstat; + + symndx = rel->r_symndx; + loc = contents + rel->r_vaddr - input_section->vma; + + if (symndx == -1 || rel->r_type == R_IHCONST) + h = NULL; + else + h = obj_coff_sym_hashes (input_bfd)[symndx]; + + sym = NULL; + sec = NULL; + val = 0; + + /* An R_IHCONST reloc does not have a symbol. Instead, the + symbol index is an addend. R_IHCONST is always used in + conjunction with R_IHHALF. */ + if (rel->r_type != R_IHCONST) + { + if (h == NULL) + { + if (symndx == -1) + sec = bfd_abs_section_ptr; + else + { + sym = syms + symndx; + sec = sections[symndx]; + 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 (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, input_section, + rel->r_vaddr - input_section->vma, true))) + return false; + } + } + + if (hihalf) + { + if (! ((*info->callbacks->reloc_dangerous) + (info, "missing IHCONST reloc", input_bfd, + input_section, rel->r_vaddr - input_section->vma))) + return false; + hihalf = false; + } + } + + overflow = false; + + switch (rel->r_type) + { + default: + bfd_set_error (bfd_error_bad_value); + return false; + + case R_IREL: + insn = bfd_get_32 (input_bfd, loc); + + /* Extract the addend. */ + signed_value = EXTRACT_JUMPTARG (insn); + signed_value = SIGN_EXTEND_JUMPTARG (signed_value); + signed_value <<= 2; + + /* Determine the destination of the jump. */ + signed_value += val; + +#if 0 + if ((signed_value & ~0x3ffff) == 0) + { + /* We can use an absolute jump. */ + insn |= (1 << 24); + } + else +#endif + { + /* Make the destination PC relative. */ + signed_value -= (input_section->output_section->vma + + input_section->output_offset + + (rel->r_vaddr - input_section->vma)); + if (signed_value > 0x7ffffff || signed_value < - 0x8000000) + { + overflow = true; + signed_value = 0; + } + } + + /* Put the adjusted value back into the instruction. */ + signed_value >>= 2; + insn = INSERT_JUMPTARG(insn, signed_value); + + bfd_put_32 (input_bfd, (bfd_vma) insn, loc); + break; + + case R_ILOHALF: + insn = bfd_get_32 (input_bfd, loc); + unsigned_value = EXTRACT_HWORD (insn); + unsigned_value += val; + insn = INSERT_HWORD (insn, unsigned_value); + bfd_put_32 (input_bfd, insn, loc); + break; + + case R_IHIHALF: + /* Save the value for the R_IHCONST reloc. */ + hihalf = true; + hihalf_val = val; + break; + + case R_IHCONST: + if (! hihalf) + { + if (! ((*info->callbacks->reloc_dangerous) + (info, "missing IHIHALF reloc", input_bfd, + input_section, rel->r_vaddr - input_section->vma))) + return false; + hihalf_val = 0; + } + + insn = bfd_get_32 (input_bfd, loc); + unsigned_value = rel->r_symndx + hihalf_val; + unsigned_value >>= 16; + insn = INSERT_HWORD (insn, unsigned_value); + bfd_put_32 (input_bfd, (bfd_vma) insn, loc); + + hihalf = false; + break; + + case R_BYTE: + case R_HWORD: + case R_WORD: + rstat = _bfd_relocate_contents (howto_table + rel->r_type, + input_bfd, val, loc); + if (rstat == bfd_reloc_overflow) + overflow = true; + else if (rstat != bfd_reloc_ok) + abort (); + break; + } + + if (overflow) + { + const char *name; + char buf[SYMNMLEN + 1]; + + if (symndx == -1) + name = "*ABS*"; + else if (h != NULL) + name = h->root.root.string; + else if (sym == NULL) + name = "*unknown*"; + else if (sym->_n._n_n._n_zeroes == 0 + && sym->_n._n_n._n_offset != 0) + name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset; + else + { + strncpy (buf, sym->_n._n_name, SYMNMLEN); + buf[SYMNMLEN] = '\0'; + name = buf; + } + + if (! ((*info->callbacks->reloc_overflow) + (info, name, howto_table[rel->r_type].name, (bfd_vma) 0, + input_bfd, input_section, + rel->r_vaddr - input_section->vma))) + return false; + } + } + + return true; +} + +#define coff_relocate_section coff_or32_relocate_section + +/* We don't want to change the symndx of a R_IHCONST reloc, since it + is actually an addend, not a symbol index at all. */ + +static boolean +coff_or32_adjust_symndx (obfd, info, ibfd, sec, irel, adjustedp) + bfd *obfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + bfd *ibfd ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + struct internal_reloc *irel; + boolean *adjustedp; +{ + if (irel->r_type == R_IHCONST) + *adjustedp = true; + else + *adjustedp = false; + return true; +} + +#define coff_adjust_symndx coff_or32_adjust_symndx + +#include "coffcode.h" + +const bfd_target or32coff_big_vec = +{ + "coff-or32-big", /* Name. */ + bfd_target_coff_flavour, + BFD_ENDIAN_BIG, /* Data byte order is big. */ + BFD_ENDIAN_BIG, /* Header byte order is big. */ + + (HAS_RELOC | EXEC_P | /* Object flags. */ + HAS_LINENO | HAS_DEBUG | + HAS_SYMS | HAS_LOCALS | WP_TEXT), + + (SEC_HAS_CONTENTS | SEC_ALLOC | /* Section flags. */ + SEC_LOAD | SEC_RELOC | + SEC_READONLY ), + '_', /* Leading underscore. */ + '/', /* ar_pad_char. */ + 15, /* ar_max_namelen. */ + + /* Data. */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, + + /* Headers. */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, + + { + _bfd_dummy_target, + coff_object_p, + bfd_generic_archive_p, + _bfd_dummy_target + }, + { + bfd_false, + coff_mkobject, + _bfd_generic_mkarchive, + bfd_false + }, + { + bfd_false, + coff_write_object_contents, + _bfd_write_archive_contents, + bfd_false + }, + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + + /* Alternative_target. */ +#ifdef TARGET_LITTLE_SYM + & TARGET_LITTLE_SYM, +#else + NULL, +#endif + + COFF_SWAP_TABLE +}; diff -uprN binutils-2.11.92.0.12.3/bfd/coff-rs6000.c binutils-2.11.93.0.2/bfd/coff-rs6000.c --- binutils-2.11.92.0.12.3/bfd/coff-rs6000.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/coff-rs6000.c Sun Feb 3 11:22:30 2002 @@ -113,9 +113,6 @@ extern int rs6000coff_core_file_failing_ static const char *normalize_filename PARAMS ((bfd *)); static boolean xcoff_write_armap_old PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); -static boolean xcoff_write_one_armap_big - PARAMS ((bfd *, struct orl *, unsigned int, unsigned int, unsigned int, - int, const char *, char *)); static boolean xcoff_write_armap_big PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); static boolean xcoff_write_archive_contents_old PARAMS ((bfd *)); @@ -146,6 +143,9 @@ static bfd_vma xcoff_loader_symbol_offse PARAMS ((bfd *, struct internal_ldhdr *)); static bfd_vma xcoff_loader_reloc_offset PARAMS ((bfd *, struct internal_ldhdr *)); +static boolean xcoff_generate_rtinit + PARAMS((bfd *, const char *, const char *)); + /* We use our own tdata type. Its first field is the COFF tdata type, so the COFF routines are compatible. */ @@ -1462,7 +1462,7 @@ xcoff_write_armap_old (abfd, elength, ma memset (&hdr, 0, sizeof hdr); sprintf (hdr.size, "%ld", (long) (4 + orl_count * 4 + stridx)); sprintf (hdr.nextoff, "%d", 0); - memcpy (hdr.prevoff, xcoff_ardata (abfd)->memoff, 12); + memcpy (hdr.prevoff, xcoff_ardata (abfd)->memoff, XCOFFARMAG_ELEMENT_SIZE); sprintf (hdr.date, "%d", 0); sprintf (hdr.uid, "%d", 0); sprintf (hdr.gid, "%d", 0); @@ -1531,185 +1531,314 @@ xcoff_write_armap_old (abfd, elength, ma return true; } -/* Write a single armap in the big format. */ +static char buff20[XCOFFARMAGBIG_ELEMENT_SIZE + 1]; +#define FMT20 "%-20lld" +#define FMT12 "%-12d" +#define FMT12_OCTAL "%-12o" +#define FMT4 "%-4d" +#define PRINT20(d, v) \ + sprintf (buff20, FMT20, (long long)(v)), \ + memcpy ((void *) (d), buff20, 20) + +#define PRINT12(d, v) \ + sprintf (buff20, FMT12, (int)(v)), \ + memcpy ((void *) (d), buff20, 12) + +#define PRINT12_OCTAL(d, v) \ + sprintf (buff20, FMT12_OCTAL, (unsigned int)(v)), \ + memcpy ((void *) (d), buff20, 12) + +#define PRINT4(d, v) \ + sprintf (buff20, FMT4, (int)(v)), \ + memcpy ((void *) (d), buff20, 4) + +#define READ20(d, v) \ + buff20[20] = 0, \ + memcpy (buff20, (d), 20), \ + (v) = bfd_scan_vma (buff20, (const char **) NULL, 10) static boolean -xcoff_write_one_armap_big (abfd, map, orl_count, orl_ccount, stridx, bits64, - prevoff, nextoff) +xcoff_write_armap_big (abfd, elength, map, orl_count, stridx) bfd *abfd; + unsigned int elength ATTRIBUTE_UNUSED; struct orl *map; unsigned int orl_count; - unsigned int orl_ccount; - unsigned int stridx; - int bits64; - const char *prevoff; - char *nextoff; + int stridx; { - struct xcoff_ar_hdr_big hdr; - char *p; - unsigned char buf[4]; - bfd *sub; - file_ptr fileoff; + struct xcoff_ar_file_hdr_big *fhdr; + bfd_vma i, sym_32, sym_64, str_32, str_64; const bfd_arch_info_type *arch_info = NULL; - bfd *object_bfd; - unsigned int i; + bfd *current_bfd; + size_t string_length; + ufile_ptr nextoff, prevoff; + + /* First, we look through the symbols and work out which are + from 32-bit objects and which from 64-bit ones. */ + sym_32 = sym_64 = str_32 = str_64 = 0; - memset (&hdr, 0, sizeof hdr); - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (hdr.size, "%ld", (long) (4 + orl_ccount * 4 + stridx)); - if (bits64) + current_bfd = abfd->archive_head; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + i = 0; + while (current_bfd != NULL && i < orl_count) { - sprintf (hdr.nextoff, "%d", 0); - } - else - { - /* Do explict cast to long to remove compiler warning. */ - sprintf (hdr.nextoff, "%ld", (strtol (prevoff, (char **) NULL, 10) - + (long) (4 + orl_ccount * 4 + stridx))); - } - - memcpy (hdr.prevoff, prevoff, sizeof (hdr.prevoff)); - sprintf (hdr.date, "%d", 0); - sprintf (hdr.uid, "%d", 0); - sprintf (hdr.gid, "%d", 0); - sprintf (hdr.mode, "%d", 0); - sprintf (hdr.namlen, "%d", 0); + while (map[i].u.abfd == current_bfd) + { + string_length = strlen (*map[i].name) + 1; - /* We need spaces, not null bytes, in the header. */ - for (p = (char *) &hdr; p < (char *) &hdr + SIZEOF_AR_HDR_BIG; p++) - if (*p == '\0') - *p = ' '; + if (arch_info->bits_per_address == 64) + { + sym_64++; + str_64 += string_length; + } + else + { + sym_32++; + str_32 += string_length; + } + i++; + } + current_bfd = current_bfd->next; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + } - memcpy (nextoff, hdr.nextoff, sizeof (hdr.nextoff)); + /* A quick sanity check... */ + BFD_ASSERT (sym_64 + sym_32 == orl_count); + /* Explicit cast to int for compiler. */ + BFD_ASSERT ((int)(str_64 + str_32) == stridx); - if ((bfd_bwrite ((PTR) &hdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd) - != SIZEOF_AR_HDR_BIG) - || (bfd_bwrite (XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, abfd) - != SXCOFFARFMAG)) - return false; + fhdr = xcoff_ardata_big (abfd); - H_PUT_32 (abfd, orl_ccount, buf); - if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4) - return false; + /* xcoff_write_archive_contents_big passes nextoff in symoff. */ + READ20 (fhdr->memoff, prevoff); + READ20 (fhdr->symoff, nextoff); - sub = abfd->archive_head; - fileoff = SIZEOF_AR_FILE_HDR_BIG; - i = 0; - while (sub != NULL && i < orl_count) - { - size_t namlen; + BFD_ASSERT (nextoff == bfd_tell (abfd)); - if ((bfd_arch_bits_per_address (map[i].u.abfd) == 64) == bits64) - while (map[i].u.abfd == sub) - { - H_PUT_32 (abfd, fileoff, buf); - if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4) - return false; - i++; - } + /* Write out the symbol table. + Layout : + + standard big archive header + 0x0000 ar_size [0x14] + 0x0014 ar_nxtmem [0x14] + 0x0028 ar_prvmem [0x14] + 0x003C ar_date [0x0C] + 0x0048 ar_uid [0x0C] + 0x0054 ar_gid [0x0C] + 0x0060 ar_mod [0x0C] + 0x006C ar_namelen[0x04] + 0x0070 ar_fmag [SXCOFFARFMAG] + + Symbol table + 0x0072 num_syms [0x08], binary + 0x0078 offsets [0x08 * num_syms], binary + 0x0086 + 0x08 * num_syms names [??] + ?? pad to even bytes. + */ + + if (sym_32) + { + struct xcoff_ar_hdr_big *hdr; + bfd_byte *symbol_table; + bfd_byte *st; + file_ptr fileoff; + + bfd_vma symbol_table_size = + SIZEOF_AR_HDR_BIG + + SXCOFFARFMAG + + 8 + + 8 * sym_32 + + str_32 + (str_32 & 1); + + symbol_table = NULL; + symbol_table = (bfd_byte *) bfd_malloc (symbol_table_size); + if (symbol_table == NULL) + return false; + memset (symbol_table, 0, symbol_table_size); + + hdr = (struct xcoff_ar_hdr_big *) symbol_table; + + PRINT20 (hdr->size, 8 + 8 * sym_32 + str_32 + (str_32 & 1)); + + if (sym_64) + PRINT20 (hdr->nextoff, nextoff + symbol_table_size); else - while (map[i].u.abfd == sub) - i++; - - namlen = strlen (normalize_filename (sub)); - namlen = (namlen + 1) &~ (size_t) 1; - fileoff += (SIZEOF_AR_HDR_BIG - + namlen - + SXCOFFARFMAG - + arelt_size (sub)); - fileoff = (fileoff + 1) &~ 1; - sub = sub->next; - } - - object_bfd = NULL; - for (i = 0; i < orl_count; i++) - { - const char *name; - size_t namlen; - bfd *ob = map[i].u.abfd; + PRINT20 (hdr->nextoff, 0); - if (ob != object_bfd) - arch_info = bfd_get_arch_info (ob); - if ((arch_info->bits_per_address == 64) != bits64) - continue; + PRINT20 (hdr->prevoff, prevoff); + PRINT12 (hdr->date, 0); + PRINT12 (hdr->uid, 0); + PRINT12 (hdr->gid, 0); + PRINT12 (hdr->mode, 0); + PRINT4 (hdr->namlen, 0) ; + + st = symbol_table + SIZEOF_AR_HDR_BIG; + memcpy (st, XCOFFARFMAG, SXCOFFARFMAG); + st += SXCOFFARFMAG; + + bfd_h_put_64 (abfd, sym_32, st); + st += 8; + + /* loop over the 32 bit offsets */ + current_bfd = abfd->archive_head; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + fileoff = SIZEOF_AR_FILE_HDR_BIG; + i = 0; + while (current_bfd != NULL && i < orl_count) + { + while (map[i].u.abfd == current_bfd) + { + if (arch_info->bits_per_address == 32) + { + bfd_h_put_64 (abfd, fileoff, st); + st += 8; + } + i++; + } + string_length = strlen (normalize_filename (current_bfd)); + string_length += string_length & 1; + fileoff += (SIZEOF_AR_HDR_BIG + + string_length + + SXCOFFARFMAG + + arelt_size (current_bfd)); + fileoff += fileoff & 1; + current_bfd = current_bfd->next; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + } + + /* loop over the 32 bit symbol names */ + current_bfd = abfd->archive_head; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + i = 0; + while (current_bfd != NULL && i < orl_count) + { + while (map[i].u.abfd == current_bfd) + { + if (arch_info->bits_per_address == 32) + { + string_length = sprintf (st, "%s", *map[i].name); + st += string_length + 1; + } + i++; + } + current_bfd = current_bfd->next; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + } - name = *map[i].name; - namlen = strlen (name); - if (bfd_bwrite (name, (bfd_size_type) (namlen + 1), abfd) != namlen + 1) - return false; - } + bfd_bwrite (symbol_table, symbol_table_size, abfd); - if ((stridx & 1) != 0) - { - char b; + free (symbol_table); + symbol_table = NULL; - b = '\0'; - if (bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1) - return false; + prevoff = nextoff; + nextoff = nextoff + symbol_table_size; } - - return true; -} - -static boolean -xcoff_write_armap_big (abfd, elength, map, orl_count, stridx) - bfd *abfd; - unsigned int elength ATTRIBUTE_UNUSED; - struct orl *map; - unsigned int orl_count; - int stridx; -{ - unsigned int i; - unsigned int orl_count_32, orl_count_64; - unsigned int stridx_32, stridx_64; - const bfd_arch_info_type *arch_info = NULL; - bfd *object_bfd; - - /* First, we look through the symbols and work out which are - from 32-bit objects and which from 64-bit ones. */ - orl_count_32 = 0; - orl_count_64 = 0; - stridx_32 = 0; - stridx_64 = 0; - object_bfd = NULL; - for (i = 0; i < orl_count; i++) - { - bfd *ob = map[i].u.abfd; - unsigned int len; - if (ob != object_bfd) - arch_info = bfd_get_arch_info (ob); - len = strlen (*map[i].name) + 1; - if (arch_info->bits_per_address == 64) + else + PRINT20 (fhdr->symoff, 0); + + if (sym_64) + { + struct xcoff_ar_hdr_big *hdr; + bfd_byte *symbol_table; + bfd_byte *st; + file_ptr fileoff; + + bfd_vma symbol_table_size = + SIZEOF_AR_HDR_BIG + + SXCOFFARFMAG + + 8 + + 8 * sym_64 + + str_64 + (str_64 & 1); + + symbol_table = NULL; + symbol_table = (bfd_byte *) bfd_malloc (symbol_table_size); + if (symbol_table == NULL) + return false; + memset (symbol_table, 0, symbol_table_size); + + hdr = (struct xcoff_ar_hdr_big *) symbol_table; + + PRINT20 (hdr->size, 8 + 8 * sym_64 + str_64 + (str_64 & 1)); + PRINT20 (hdr->nextoff, 0); + PRINT20 (hdr->prevoff, prevoff); + PRINT12 (hdr->date, 0); + PRINT12 (hdr->uid, 0); + PRINT12 (hdr->gid, 0); + PRINT12 (hdr->mode, 0); + PRINT4 (hdr->namlen, 0); + + st = symbol_table + SIZEOF_AR_HDR_BIG; + memcpy (st, XCOFFARFMAG, SXCOFFARFMAG); + st += SXCOFFARFMAG; + + bfd_h_put_64 (abfd, sym_64, st); + st += 8; + + /* loop over the 64 bit offsets */ + current_bfd = abfd->archive_head; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + fileoff = SIZEOF_AR_FILE_HDR_BIG; + i = 0; + while (current_bfd != NULL && i < orl_count) { - orl_count_64++; - stridx_64 += len; - } - else + while (map[i].u.abfd == current_bfd) + { + if (arch_info->bits_per_address == 64) + { + bfd_h_put_64 (abfd, fileoff, st); + st += 8; + } + i++; + } + string_length = strlen (normalize_filename (current_bfd)); + string_length += string_length & 1; + fileoff += (SIZEOF_AR_HDR_BIG + + string_length + + SXCOFFARFMAG + + arelt_size (current_bfd)); + fileoff += fileoff & 1; + current_bfd = current_bfd->next; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + } + + /* loop over the 64 bit symbol names */ + current_bfd = abfd->archive_head; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); + i = 0; + while (current_bfd != NULL && i < orl_count) { - orl_count_32++; - stridx_32 += len; + while (map[i].u.abfd == current_bfd) + { + if (arch_info->bits_per_address == 64) + { + string_length = sprintf (st, "%s", *map[i].name); + st += string_length + 1; + } + i++; + } + current_bfd = current_bfd->next; + if (current_bfd != NULL) + arch_info = bfd_get_arch_info (current_bfd); } - object_bfd = ob; - } - /* A quick sanity check... */ - BFD_ASSERT (orl_count_64 + orl_count_32 == orl_count); - /* Explicit cast to int for compiler. */ - BFD_ASSERT ((int)(stridx_64 + stridx_32) == stridx); - /* Now write out each map. */ - if (! xcoff_write_one_armap_big (abfd, map, orl_count, orl_count_32, - stridx_32, false, - xcoff_ardata_big (abfd)->memoff, - xcoff_ardata_big (abfd)->symoff)) - return false; - if (! xcoff_write_one_armap_big (abfd, map, orl_count, orl_count_64, - stridx_64, true, - xcoff_ardata_big (abfd)->symoff, - xcoff_ardata_big (abfd)->symoff64)) - return false; + bfd_bwrite (symbol_table, symbol_table_size, abfd); + + free (symbol_table); + symbol_table = NULL; + PRINT20 (fhdr->symoff64, nextoff); + } + else + PRINT20 (fhdr->symoff64, 0); + return true; } @@ -1746,7 +1875,7 @@ xcoff_write_archive_contents_old (abfd) struct xcoff_ar_hdr ahdr; bfd_size_type size; char *p; - char decbuf[13]; + char decbuf[XCOFFARMAG_ELEMENT_SIZE + 1]; memset (&fhdr, 0, sizeof fhdr); strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG); @@ -1889,7 +2018,9 @@ xcoff_write_archive_contents_old (abfd) sprintf (fhdr.memoff, "%ld", (long) nextoff); memset (&ahdr, 0, sizeof ahdr); - sprintf (ahdr.size, "%ld", (long) (12 + count * 12 + total_namlen)); + sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE + + count * XCOFFARMAG_ELEMENT_SIZE + + total_namlen)); sprintf (ahdr.prevoff, "%ld", (long) prevoff); sprintf (ahdr.date, "%d", 0); sprintf (ahdr.uid, "%d", 0); @@ -1898,8 +2029,8 @@ xcoff_write_archive_contents_old (abfd) sprintf (ahdr.namlen, "%d", 0); size = (SIZEOF_AR_HDR - + 12 - + count * 12 + + XCOFFARMAG_ELEMENT_SIZE + + count * XCOFFARMAG_ELEMENT_SIZE + total_namlen + SXCOFFARFMAG); @@ -1923,12 +2054,14 @@ xcoff_write_archive_contents_old (abfd) return false; sprintf (decbuf, "%-12ld", (long) count); - if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) 12, abfd) != 12) + if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) XCOFFARMAG_ELEMENT_SIZE, abfd) + != XCOFFARMAG_ELEMENT_SIZE) return false; for (i = 0; i < (size_t) count; i++) { sprintf (decbuf, "%-12ld", (long) offsets[i]); - if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) 12, abfd) != 12) + if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) XCOFFARMAG_ELEMENT_SIZE, + abfd) != XCOFFARMAG_ELEMENT_SIZE) return false; } for (sub = abfd->archive_head; sub != NULL; sub = sub->next) @@ -1951,7 +2084,6 @@ xcoff_write_archive_contents_old (abfd) } /* Write out the armap, if appropriate. */ - if (! makemap || ! hasobjects) sprintf (fhdr.symoff, "%d", 0); else @@ -1989,29 +2121,30 @@ xcoff_write_archive_contents_big (abfd) boolean makemap; boolean hasobjects; ufile_ptr prevoff, nextoff; - bfd *sub; + bfd *current_bfd; size_t i; - struct xcoff_ar_hdr_big ahdr; + struct xcoff_ar_hdr_big *hdr, ahdr; bfd_size_type size; - char *p; - char decbuf[13]; + bfd_byte *member_table, *mt; + bfd_vma member_table_size; - memset (&fhdr, 0, sizeof fhdr); - strncpy (fhdr.magic, XCOFFARMAGBIG, SXCOFFARMAG); - sprintf (fhdr.firstmemoff, "%d", SIZEOF_AR_FILE_HDR_BIG); - sprintf (fhdr.freeoff, "%d", 0); + memcpy (fhdr.magic, XCOFFARMAGBIG, SXCOFFARMAG); + PRINT20 (fhdr.firstmemoff, SIZEOF_AR_FILE_HDR_BIG); + PRINT20 (fhdr.freeoff, 0); + + /* Calculate count and total_namlen */ + for (current_bfd = abfd->archive_head, count = 0, total_namlen = 0; + current_bfd != NULL; + current_bfd = current_bfd->next, count++) + total_namlen += strlen (normalize_filename (current_bfd)) + 1; - count = 0; - total_namlen = 0; - for (sub = abfd->archive_head; sub != NULL; sub = sub->next) + offsets = NULL; + if (count) { - ++count; - total_namlen += strlen (normalize_filename (sub)) + 1; + offsets = (file_ptr *) bfd_malloc (count * sizeof (file_ptr)); + if (offsets == NULL) + return false; } - offsets = (file_ptr *) bfd_alloc (abfd, count * sizeof (file_ptr)); - if (offsets == NULL) - return false; - if (bfd_seek (abfd, (file_ptr) SIZEOF_AR_FILE_HDR_BIG, SEEK_SET) != 0) return false; @@ -2019,7 +2152,9 @@ xcoff_write_archive_contents_big (abfd) hasobjects = false; prevoff = 0; nextoff = SIZEOF_AR_FILE_HDR_BIG; - for (sub = abfd->archive_head, i = 0; sub != NULL; sub = sub->next, i++) + for (current_bfd = abfd->archive_head, i = 0; + current_bfd != NULL; + current_bfd = current_bfd->next, i++) { const char *name; bfd_size_type namlen; @@ -2028,15 +2163,15 @@ xcoff_write_archive_contents_big (abfd) if (makemap && ! hasobjects) { - if (bfd_check_format (sub, bfd_object)) + if (bfd_check_format (current_bfd, bfd_object)) hasobjects = true; } - name = normalize_filename (sub); + name = normalize_filename (current_bfd); namlen = strlen (name); - if (sub->arelt_data != NULL) - ahdrp = arch_xhdr_big (sub); + if (current_bfd->arelt_data != NULL) + ahdrp = arch_xhdr_big (current_bfd); else ahdrp = NULL; @@ -2044,47 +2179,41 @@ xcoff_write_archive_contents_big (abfd) { struct stat s; - memset (&ahdr, 0, sizeof ahdr); ahdrp = &ahdr; /* XXX This should actually be a call to stat64 (at least on - 32-bit machines). */ - if (stat (bfd_get_filename (sub), &s) != 0) + 32-bit machines). + XXX This call will fail if the original object is not found. */ + if (stat (bfd_get_filename (current_bfd), &s) != 0) { bfd_set_error (bfd_error_system_call); return false; } - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (ahdrp->size, "%ld", (long) s.st_size); - sprintf (ahdrp->date, "%ld", (long) s.st_mtime); - sprintf (ahdrp->uid, "%ld", (long) s.st_uid); - sprintf (ahdrp->gid, "%ld", (long) s.st_gid); - sprintf (ahdrp->mode, "%o", (unsigned int) s.st_mode); + PRINT20 (ahdrp->size, s.st_size); + PRINT12 (ahdrp->date, s.st_mtime); + PRINT12 (ahdrp->uid, s.st_uid); + PRINT12 (ahdrp->gid, s.st_gid); + PRINT12_OCTAL (ahdrp->mode, s.st_mode); - if (sub->arelt_data == NULL) + if (current_bfd->arelt_data == NULL) { size = sizeof (struct areltdata); - sub->arelt_data = bfd_alloc (sub, size); - if (sub->arelt_data == NULL) + current_bfd->arelt_data = bfd_alloc (current_bfd, size); + if (current_bfd->arelt_data == NULL) return false; } - arch_eltdata (sub)->parsed_size = s.st_size; + arch_eltdata (current_bfd)->parsed_size = s.st_size; } - /* XXX These calls actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (ahdrp->prevoff, "%ld", (long) prevoff); - sprintf (ahdrp->namlen, "%ld", (long) namlen); + PRINT20 (ahdrp->prevoff, prevoff); + PRINT4 (ahdrp->namlen, namlen); /* If the length of the name is odd, we write out the null byte after the name as well. */ namlen = (namlen + 1) &~ (bfd_size_type) 1; - remaining = arelt_size (sub); + remaining = arelt_size (current_bfd); size = (SIZEOF_AR_HDR_BIG + namlen + SXCOFFARFMAG @@ -2097,21 +2226,16 @@ xcoff_write_archive_contents_big (abfd) prevoff = nextoff; nextoff += size + (size & 1); - sprintf (ahdrp->nextoff, "%ld", (long) nextoff); - - /* We need spaces, not null bytes, in the header. */ - for (p = (char *) ahdrp; p < (char *) ahdrp + SIZEOF_AR_HDR_BIG; p++) - if (*p == '\0') - *p = ' '; + PRINT20 (ahdrp->nextoff, nextoff); if ((bfd_bwrite ((PTR) ahdrp, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG) || bfd_bwrite ((PTR) name, (bfd_size_type) namlen, abfd) != namlen - || (bfd_bwrite ((PTR) XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, abfd) - != SXCOFFARFMAG)) + || (bfd_bwrite ((PTR) XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, + abfd) != SXCOFFARFMAG)) return false; - if (bfd_seek (sub, (file_ptr) 0, SEEK_SET) != 0) + if (bfd_seek (current_bfd, (file_ptr) 0, SEEK_SET) != 0) return false; while (remaining != 0) { @@ -2121,7 +2245,7 @@ xcoff_write_archive_contents_big (abfd) amt = sizeof buffer; if (amt > remaining) amt = remaining; - if (bfd_bread (buffer, amt, sub) != amt + if (bfd_bread (buffer, amt, current_bfd) != amt || bfd_bwrite (buffer, amt, abfd) != amt) return false; remaining -= amt; @@ -2137,98 +2261,111 @@ xcoff_write_archive_contents_big (abfd) } } - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (fhdr.lastmemoff, "%ld", (long) prevoff); + PRINT20 (fhdr.lastmemoff, prevoff); - /* Write out the member table. */ + /* Write out the member table. + Layout : - BFD_ASSERT (nextoff == bfd_tell (abfd)); - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (fhdr.memoff, "%ld", (long) nextoff); + standard big archive header + 0x0000 ar_size [0x14] + 0x0014 ar_nxtmem [0x14] + 0x0028 ar_prvmem [0x14] + 0x003C ar_date [0x0C] + 0x0048 ar_uid [0x0C] + 0x0054 ar_gid [0x0C] + 0x0060 ar_mod [0x0C] + 0x006C ar_namelen[0x04] + 0x0070 ar_fmag [0x02] + + Member table + 0x0072 count [0x14] + 0x0086 offsets [0x14 * counts] + 0x0086 + 0x14 * counts names [??] + ?? pad to even bytes. + */ - memset (&ahdr, 0, sizeof ahdr); - /* XXX The next two calls actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (ahdr.size, "%ld", (long) (12 + count * 12 + total_namlen)); - sprintf (ahdr.prevoff, "%ld", (long) prevoff); - sprintf (ahdr.date, "%d", 0); - sprintf (ahdr.uid, "%d", 0); - sprintf (ahdr.gid, "%d", 0); - sprintf (ahdr.mode, "%d", 0); - sprintf (ahdr.namlen, "%d", 0); - - size = (SIZEOF_AR_HDR_BIG - + 12 - + count * 12 - + total_namlen - + SXCOFFARFMAG); - - prevoff = nextoff; - nextoff += size + (size & 1); + BFD_ASSERT (nextoff == bfd_tell (abfd)); - if (makemap && hasobjects) - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ - sprintf (ahdr.nextoff, "%ld", (long) nextoff); - else - sprintf (ahdr.nextoff, "%d", 0); + member_table_size = (SIZEOF_AR_HDR_BIG + + SXCOFFARFMAG + + XCOFFARMAGBIG_ELEMENT_SIZE + + count * XCOFFARMAGBIG_ELEMENT_SIZE + + total_namlen); + + member_table_size += member_table_size & 1; + member_table = NULL; + member_table = (bfd_byte *) bfd_malloc (member_table_size); + if (member_table == NULL) + return false; + memset (member_table, 0, member_table_size); - /* We need spaces, not null bytes, in the header. */ - for (p = (char *) &ahdr; p < (char *) &ahdr + SIZEOF_AR_HDR_BIG; p++) - if (*p == '\0') - *p = ' '; + hdr = (struct xcoff_ar_hdr_big *) member_table; - if ((bfd_bwrite ((PTR) &ahdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd) - != SIZEOF_AR_HDR_BIG) - || (bfd_bwrite ((PTR) XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, abfd) - != SXCOFFARFMAG)) - return false; + PRINT20 (hdr->size, (XCOFFARMAGBIG_ELEMENT_SIZE + + count * XCOFFARMAGBIG_ELEMENT_SIZE + + total_namlen + (total_namlen & 1))); + if (makemap && hasobjects) + PRINT20 (hdr->nextoff, nextoff + member_table_size); + else + PRINT20 (hdr->nextoff, 0); + PRINT20 (hdr->prevoff, prevoff); + PRINT12 (hdr->date, 0); + PRINT12 (hdr->uid, 0); + PRINT12 (hdr->gid, 0); + PRINT12 (hdr->mode, 0); + PRINT4 (hdr->namlen, 0); + + mt = member_table + SIZEOF_AR_HDR_BIG; + memcpy (mt, XCOFFARFMAG, SXCOFFARFMAG); + mt += SXCOFFARFMAG; - sprintf (decbuf, "%-12ld", (long) count); - if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) 12, abfd) != 12) - return false; + PRINT20 (mt, count); + mt += XCOFFARMAGBIG_ELEMENT_SIZE; for (i = 0; i < (size_t) count; i++) { - sprintf (decbuf, "%-12ld", (long) offsets[i]); - if (bfd_bwrite ((PTR) decbuf, (bfd_size_type) 12, abfd) != 12) - return false; + PRINT20 (mt, offsets[i]); + mt += XCOFFARMAGBIG_ELEMENT_SIZE; } - for (sub = abfd->archive_head; sub != NULL; sub = sub->next) + + if (count) + { + free (offsets); + offsets = NULL; + } + + for (current_bfd = abfd->archive_head; current_bfd != NULL; + current_bfd = current_bfd->next) { const char *name; size_t namlen; - name = normalize_filename (sub); - namlen = strlen (name); - if (bfd_bwrite ((PTR) name, (bfd_size_type) (namlen + 1), abfd) - != namlen + 1) - return false; + name = normalize_filename (current_bfd); + namlen = sprintf(mt, "%s", name); + mt += namlen + 1; } - if ((size & 1) != 0) - { - bfd_byte b; + + if (bfd_bwrite (member_table, member_table_size, abfd) != member_table_size) + return false; - b = '\0'; - if (bfd_bwrite ((PTR) &b, (bfd_size_type) 1, abfd) != 1) - return false; - } + free (member_table); + member_table = NULL; + + PRINT20 (fhdr.memoff, nextoff); + + prevoff = nextoff; + nextoff += member_table_size; /* Write out the armap, if appropriate. */ - if (! makemap || ! hasobjects) - sprintf (fhdr.symoff, "%d", 0); + if (! makemap || ! hasobjects) + PRINT20 (fhdr.symoff, 0); else { BFD_ASSERT (nextoff == bfd_tell (abfd)); - /* XXX This call actually should use %lld (at least on 32-bit - machines) since the fields's width is 20 and there numbers with - more than 32 bits can be represented. */ + + /* Save nextoff in fhdr.symoff so the armap routine can use it. */ + PRINT20 (fhdr.symoff, nextoff); + bfd_ardata (abfd)->tdata = (PTR) &fhdr; if (! _bfd_compute_and_write_armap (abfd, 0)) return false; @@ -2236,16 +2373,11 @@ xcoff_write_archive_contents_big (abfd) /* Write out the archive file header. */ - /* We need spaces, not null bytes, in the header. */ - for (p = (char *) &fhdr; p < (char *) &fhdr + SIZEOF_AR_FILE_HDR_BIG; p++) - if (*p == '\0') - *p = ' '; - if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0 - || (bfd_bwrite ((PTR) &fhdr, (bfd_size_type) SIZEOF_AR_FILE_HDR_BIG, abfd) - != SIZEOF_AR_FILE_HDR_BIG)) + || (bfd_bwrite ((PTR) &fhdr, (bfd_size_type) SIZEOF_AR_FILE_HDR_BIG, + abfd) != SIZEOF_AR_FILE_HDR_BIG)) return false; - + return true; } @@ -2918,6 +3050,261 @@ xcoff_loader_reloc_offset (abfd, ldhdr) (ldhdr->l_nsyms * bfd_xcoff_ldsymsz(abfd)); } +static boolean +xcoff_generate_rtinit (abfd, init, fini) + bfd *abfd; + const char *init; + const char *fini; +{ + bfd_byte filehdr_ext[FILHSZ]; + bfd_byte scnhdr_ext[SCNHSZ]; + bfd_byte syment_ext[SYMESZ * 8]; + bfd_byte reloc_ext[RELSZ * 2]; + bfd_byte *data_buffer; + bfd_size_type data_buffer_size; + bfd_byte *string_table, *st_tmp; + bfd_size_type string_table_size; + bfd_vma val; + size_t initsz, finisz; + struct internal_filehdr filehdr; + struct internal_scnhdr scnhdr; + struct internal_syment syment; + union internal_auxent auxent; + struct internal_reloc reloc; + + char *data_name = ".data"; + char *rtinit_name = "__rtinit"; + + if (! bfd_xcoff_rtinit_size (abfd) + || (init == NULL && fini == NULL)) + return false; + + initsz = (init == NULL ? 0 : 1 + strlen (init)); + finisz = (fini == NULL ? 0 : 1 + strlen (fini)); + + /* file header */ + memset (filehdr_ext, 0, FILHSZ); + memset (&filehdr, 0, sizeof (struct internal_filehdr)); + filehdr.f_magic = bfd_xcoff_magic_number (abfd); + filehdr.f_nscns = 1; + filehdr.f_timdat = 0; + filehdr.f_nsyms = 0; /* at least 6, no more than 8 */ + filehdr.f_symptr = 0; /* set below */ + filehdr.f_opthdr = 0; + filehdr.f_flags = 0; + + /* section header */ + memset (scnhdr_ext, 0, SCNHSZ); + memset (&scnhdr, 0, sizeof (struct internal_scnhdr)); + memcpy (scnhdr.s_name, data_name, strlen (data_name)); + scnhdr.s_paddr = 0; + scnhdr.s_vaddr = 0; + scnhdr.s_size = 0; /* set below */ + scnhdr.s_scnptr = FILHSZ + SCNHSZ; + scnhdr.s_relptr = 0; /* set below */ + scnhdr.s_lnnoptr = 0; + scnhdr.s_nreloc = 0; /* either 1 or 2 */ + scnhdr.s_nlnno = 0; + scnhdr.s_flags = STYP_DATA; + + /* .data + 0x0000 0x00000000 : rtl + 0x0004 0x00000010 : offset to init, or 0 + 0x0008 0x00000028 : offset to fini, or 0 + 0x000C 0x0000000C : size of descriptor + 0x0010 0x00000000 : init, needs a reloc + 0x0014 0x00000040 : offset to init name + 0x0018 0x00000000 : flags, padded to a word + 0x001C 0x00000000 : empty init + 0x0020 0x00000000 : + 0x0024 0x00000000 : + 0x0028 0x00000000 : fini, needs a reloc + 0x002C 0x00000??? : offset to fini name + 0x0030 0x00000000 : flags, padded to a word + 0x0034 0x00000000 : empty fini + 0x0038 0x00000000 : + 0x003C 0x00000000 : + 0x0040 init name + 0x0040 + initsz fini name */ + + data_buffer_size = 0x0040 + initsz + finisz; + data_buffer_size += (data_buffer_size & 7) ? 8 - (data_buffer_size & 7) : 0; + data_buffer = NULL; + data_buffer = (bfd_byte *) bfd_malloc (data_buffer_size); + if (data_buffer == NULL) + return false; + + memset (data_buffer, 0, data_buffer_size); + + if (initsz) + { + val = 0x10; + bfd_h_put_32 (abfd, val, &data_buffer[0x04]); + val = 0x40; + bfd_h_put_32 (abfd, val, &data_buffer[0x14]); + memcpy (&data_buffer[val], init, initsz); + } + + if (finisz) + { + val = 0x28; + bfd_h_put_32 (abfd, val, &data_buffer[0x08]); + val = 0x40 + initsz; + bfd_h_put_32 (abfd, val, &data_buffer[0x2C]); + memcpy (&data_buffer[val], fini, finisz); + } + + val = 0x0C; + bfd_h_put_32 (abfd, val, &data_buffer[0x0C]); + + scnhdr.s_size = data_buffer_size; + + /* string table */ + string_table_size = 0; + if (initsz > 9) + string_table_size += initsz; + if (finisz > 9) + string_table_size += finisz; + if (string_table_size) + { + string_table_size += 4; + string_table = (bfd_byte *)bfd_malloc (string_table_size); + memset (string_table, 0, string_table_size); + val = string_table_size; + bfd_h_put_32 (abfd, val, &string_table[0]); + st_tmp = string_table + 4; + } + + /* symbols + 0. .data csect + 2. __rtinit + 4. init function + 6. fini function */ + memset (syment_ext, 0, 8 * SYMESZ); + memset (reloc_ext, 0, 2 * RELSZ); + + /* .data csect */ + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + memcpy (syment._n._n_name, data_name, strlen (data_name)); + syment.n_scnum = 1; + syment.n_sclass = C_HIDEXT; + syment.n_numaux = 1; + auxent.x_csect.x_scnlen.l = data_buffer_size; + auxent.x_csect.x_smtyp = 3 << 3 | XTY_SD; + auxent.x_csect.x_smclas = XMC_RW; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + filehdr.f_nsyms += 2; + + /* __rtinit */ + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + memcpy (syment._n._n_name, rtinit_name, strlen (rtinit_name)); + syment.n_scnum = 1; + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + auxent.x_csect.x_smtyp = XTY_LD; + auxent.x_csect.x_smclas = XMC_RW; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + filehdr.f_nsyms += 2; + + /* init */ + if (initsz) + { + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + + if (initsz > 9) + { + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, init, initsz); + st_tmp += initsz; + } + else + memcpy (syment._n._n_name, init, initsz - 1); + + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + + /* reloc */ + memset (&reloc, 0, sizeof (struct internal_reloc)); + reloc.r_vaddr = 0x0010; + reloc.r_symndx = filehdr.f_nsyms; + reloc.r_type = R_POS; + reloc.r_size = 31; + bfd_coff_swap_reloc_out (abfd, &reloc, &reloc_ext[0]); + + filehdr.f_nsyms += 2; + scnhdr.s_nreloc += 1; + } + + /* fini */ + if (finisz) + { + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + + if (finisz > 9) + { + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, fini, finisz); + st_tmp += finisz; + } + else + memcpy (syment._n._n_name, fini, finisz - 1); + + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + + /* reloc */ + memset (&reloc, 0, sizeof (struct internal_reloc)); + reloc.r_vaddr = 0x0028; + reloc.r_symndx = filehdr.f_nsyms; + reloc.r_type = R_POS; + reloc.r_size = 31; + bfd_coff_swap_reloc_out (abfd, &reloc, + &reloc_ext[scnhdr.s_nreloc * RELSZ]); + + filehdr.f_nsyms += 2; + scnhdr.s_nreloc += 1; + } + + scnhdr.s_relptr = scnhdr.s_scnptr + data_buffer_size; + filehdr.f_symptr = scnhdr.s_relptr + scnhdr.s_nreloc * RELSZ; + + bfd_coff_swap_filehdr_out (abfd, &filehdr, filehdr_ext); + bfd_bwrite (filehdr_ext, FILHSZ, abfd); + bfd_coff_swap_scnhdr_out (abfd, &scnhdr, scnhdr_ext); + bfd_bwrite (scnhdr_ext, SCNHSZ, abfd); + bfd_bwrite (data_buffer, data_buffer_size, abfd); + bfd_bwrite (reloc_ext, scnhdr.s_nreloc * RELSZ, abfd); + bfd_bwrite (syment_ext, filehdr.f_nsyms * SYMESZ, abfd); + bfd_bwrite (string_table, string_table_size, abfd); + + free (data_buffer); + data_buffer = NULL; + + return true; +} + static reloc_howto_type xcoff_dynamic_reloc = HOWTO (0, /* type */ @@ -3045,6 +3432,10 @@ static const struct xcoff_backend_data_r /* glink. */ & xcoff_glink_code[0], (36), /* _xcoff_glink_size */ + + /* rtinit */ + 64, /* _xcoff_rtinit_size */ + xcoff_generate_rtinit, /* _xcoff_generate_rtinit */ }; /* The transfer vector that leads the outside world to all of the above. */ @@ -3302,6 +3693,10 @@ static const struct xcoff_backend_data_r &xcoff_glink_code[0], (36), /* _xcoff_glink_size */ + /* rtinit */ + 0, /* _xcoff_rtinit_size */ + xcoff_generate_rtinit, /* _xcoff_generate_rtinit */ + }; /* The transfer vector that leads the outside world to all of the above. */ diff -uprN binutils-2.11.92.0.12.3/bfd/coff64-rs6000.c binutils-2.11.93.0.2/bfd/coff64-rs6000.c --- binutils-2.11.92.0.12.3/bfd/coff64-rs6000.c Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/coff64-rs6000.c Sun Feb 3 11:22:30 2002 @@ -143,6 +143,9 @@ static bfd_vma xcoff64_loader_symbol_off PARAMS ((bfd *, struct internal_ldhdr *)); static bfd_vma xcoff64_loader_reloc_offset PARAMS ((bfd *, struct internal_ldhdr *)); +static boolean xcoff64_generate_rtinit + PARAMS((bfd *, const char *, const char *)); + /* coffcode.h needs these to be defined */ /* Internalcoff.h and coffcode.h modify themselves based on these flags. */ @@ -2094,6 +2097,259 @@ xcoff64_loader_reloc_offset (abfd, ldhdr return (ldhdr->l_rldoff); } +static boolean +xcoff64_generate_rtinit (abfd, init, fini) + bfd *abfd; + const char *init; + const char *fini; +{ + bfd_byte filehdr_ext[FILHSZ]; + bfd_byte scnhdr_ext[SCNHSZ]; + bfd_byte syment_ext[SYMESZ * 8]; + bfd_byte reloc_ext[RELSZ * 2]; + bfd_byte *data_buffer; + bfd_size_type data_buffer_size; + bfd_byte *string_table, *st_tmp; + bfd_size_type string_table_size; + bfd_vma val; + size_t initsz, finisz; + struct internal_filehdr filehdr; + struct internal_scnhdr scnhdr; + struct internal_syment syment; + union internal_auxent auxent; + struct internal_reloc reloc; + + char *data_name = ".data"; + char *rtinit_name = "__rtinit"; + + if (! bfd_xcoff_rtinit_size (abfd) + || (init == NULL && fini == NULL)) + return false; + + initsz = (init == NULL ? 0 : 1 + strlen (init)); + finisz = (fini == NULL ? 0 : 1 + strlen (fini)); + + /* file header */ + memset (filehdr_ext, 0, FILHSZ); + memset (&filehdr, 0, sizeof (struct internal_filehdr)); + filehdr.f_magic = bfd_xcoff_magic_number (abfd); + filehdr.f_nscns = 1; + filehdr.f_timdat = 0; + filehdr.f_nsyms = 0; /* at least 6, no more than 8 */ + filehdr.f_symptr = 0; /* set below */ + filehdr.f_opthdr = 0; + filehdr.f_flags = 0; + + /* section header */ + memset (scnhdr_ext, 0, SCNHSZ); + memset (&scnhdr, 0, sizeof (struct internal_scnhdr)); + memcpy (scnhdr.s_name, data_name, strlen (data_name)); + scnhdr.s_paddr = 0; + scnhdr.s_vaddr = 0; + scnhdr.s_size = 0; /* set below */ + scnhdr.s_scnptr = FILHSZ + SCNHSZ; + scnhdr.s_relptr = 0; /* set below */ + scnhdr.s_lnnoptr = 0; + scnhdr.s_nreloc = 0; /* either 1 or 2 */ + scnhdr.s_nlnno = 0; + scnhdr.s_flags = STYP_DATA; + + /* .data + 0x0000 0x00000000 : rtl + 0x0004 0x00000000 : + 0x0008 0x00000018 : offset to init, or 0 + 0x000C 0x00000038 : offset to fini, or 0 + 0x0010 0x00000010 : size of descriptor + 0x0014 0x00000000 : pad + 0x0018 0x00000000 : init, needs a reloc + 0x001C 0x00000000 : + 0x0020 0x00000058 : offset to init name + 0x0024 0x00000000 : flags, padded to a word + 0x0028 0x00000000 : empty init + 0x002C 0x00000000 : + 0x0030 0x00000000 : + 0x0034 0x00000000 : + 0x0038 0x00000000 : fini, needs a reloc + 0x003C 0x00000000 : + 0x0040 0x00000??? : offset to fini name + 0x0044 0x00000000 : flags, padded to a word + 0x0048 0x00000000 : empty fini + 0x004C 0x00000000 : + 0x0050 0x00000000 : + 0x0054 0x00000000 : + 0x0058 init name + 0x0058 + initsz fini name */ + + data_buffer_size = 0x0058 + initsz + finisz; + data_buffer_size += (data_buffer_size & 7) ? 8 - (data_buffer_size & 7) : 0; + data_buffer = NULL; + data_buffer = (bfd_byte *)bfd_malloc (data_buffer_size); + if (data_buffer == NULL) + return false; + + memset (data_buffer, 0, data_buffer_size); + + if (initsz) + { + val = 0x18; + bfd_put_32 (abfd, val, &data_buffer[0x08]); + val = 0x58; + bfd_put_32 (abfd, val, &data_buffer[0x20]); + memcpy (&data_buffer[val], init, initsz); + } + + if (finisz) + { + val = 0x38; + bfd_put_32 (abfd, val, &data_buffer[0x0C]); + val = 0x58 + initsz; + bfd_put_32 (abfd, val, &data_buffer[0x40]); + memcpy (&data_buffer[val], fini, finisz); + } + + val = 0x10; + bfd_put_32 (abfd, val, &data_buffer[0x10]); + scnhdr.s_size = data_buffer_size; + + /* string table */ + string_table_size = 4; + string_table_size += strlen (data_name) + 1; + string_table_size += strlen (rtinit_name) + 1; + string_table_size += initsz; + string_table_size += finisz; + + string_table = (bfd_byte *)bfd_malloc (string_table_size); + memset (string_table, 0, string_table_size); + val = string_table_size; + bfd_put_32 (abfd, val, &string_table[0]); + st_tmp = string_table + 4; + + /* symbols + 0. .data csect + 2. __rtinit + 4. init function + 6. fini function */ + memset (syment_ext, 0, 8 * SYMESZ); + memset (reloc_ext, 0, 2 * RELSZ); + + /* .data csect */ + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, data_name, strlen (data_name)); + st_tmp += strlen (data_name) + 1; + + syment.n_scnum = 1; + syment.n_sclass = C_HIDEXT; + syment.n_numaux = 1; + auxent.x_csect.x_scnlen.l = data_buffer_size; + auxent.x_csect.x_smtyp = 3 << 3 | XTY_SD; + auxent.x_csect.x_smclas = XMC_RW; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + filehdr.f_nsyms += 2; + + /* __rtinit */ + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, rtinit_name, strlen (rtinit_name)); + st_tmp += strlen (rtinit_name) + 1; + + syment.n_scnum = 1; + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + auxent.x_csect.x_smtyp = XTY_LD; + auxent.x_csect.x_smclas = XMC_RW; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + filehdr.f_nsyms += 2; + + /* init */ + if (initsz) + { + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, init, initsz); + st_tmp += initsz; + + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + /* reloc */ + memset (&reloc, 0, sizeof (struct internal_reloc)); + reloc.r_vaddr = 0x0018; + reloc.r_symndx = filehdr.f_nsyms; + reloc.r_type = R_POS; + reloc.r_size = 63; + bfd_coff_swap_reloc_out (abfd, &reloc, &reloc_ext[0]); + + filehdr.f_nsyms += 2; + scnhdr.s_nreloc += 1; + } + + /* finit */ + if (finisz) + { + memset (&syment, 0, sizeof (struct internal_syment)); + memset (&auxent, 0, sizeof (union internal_auxent)); + + syment._n._n_n._n_offset = st_tmp - string_table; + memcpy (st_tmp, fini, finisz); + st_tmp += finisz; + + syment.n_sclass = C_EXT; + syment.n_numaux = 1; + bfd_coff_swap_sym_out (abfd, &syment, + &syment_ext[filehdr.f_nsyms * SYMESZ]); + bfd_coff_swap_aux_out (abfd, &auxent, syment.n_type, syment.n_sclass, 0, + syment.n_numaux, + &syment_ext[(filehdr.f_nsyms + 1) * SYMESZ]); + + /* reloc */ + memset (&reloc, 0, sizeof (struct internal_reloc)); + reloc.r_vaddr = 0x0038; + reloc.r_symndx = filehdr.f_nsyms; + reloc.r_type = R_POS; + reloc.r_size = 63; + bfd_coff_swap_reloc_out (abfd, &reloc, + &reloc_ext[scnhdr.s_nreloc * RELSZ]); + + filehdr.f_nsyms += 2; + scnhdr.s_nreloc += 1; + } + + scnhdr.s_relptr = scnhdr.s_scnptr + data_buffer_size; + filehdr.f_symptr = scnhdr.s_relptr + scnhdr.s_nreloc * RELSZ; + + bfd_coff_swap_filehdr_out (abfd, &filehdr, filehdr_ext); + bfd_bwrite (filehdr_ext, FILHSZ, abfd); + bfd_coff_swap_scnhdr_out (abfd, &scnhdr, scnhdr_ext); + bfd_bwrite (scnhdr_ext, SCNHSZ, abfd); + bfd_bwrite (data_buffer, data_buffer_size, abfd); + bfd_bwrite (reloc_ext, scnhdr.s_nreloc * RELSZ, abfd); + bfd_bwrite (syment_ext, filehdr.f_nsyms * SYMESZ, abfd); + bfd_bwrite (string_table, string_table_size, abfd); + + free (data_buffer); + data_buffer = NULL; + + return true; +} + /* The typical dynamic reloc. */ static reloc_howto_type xcoff64_dynamic_reloc = @@ -2219,6 +2475,10 @@ static const struct xcoff_backend_data_r &xcoff64_glink_code[0], 40, /* _xcoff_glink_size */ + /* rtinit */ + 88, /* _xcoff_rtinit_size */ + xcoff64_generate_rtinit, /* _xcoff_generate_rtinit */ + }; /* The transfer vector that leads the outside world to all of the above. */ diff -uprN binutils-2.11.92.0.12.3/bfd/coffcode.h binutils-2.11.93.0.2/bfd/coffcode.h --- binutils-2.11.92.0.12.3/bfd/coffcode.h Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/coffcode.h Thu Feb 7 10:21:03 2002 @@ -1,6 +1,6 @@ /* Support for the generic parts of most COFF variants, for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -428,6 +428,14 @@ sec_to_styp_flags (sec_name, sec_flags) { styp_flags = STYP_LOADER; } + else if (!strcmp (sec_name, _EXCEPT)) + { + styp_flags = STYP_EXCEPT; + } + else if (!strcmp (sec_name, _TYPCHK)) + { + styp_flags = STYP_TYPCHK; + } #endif /* Try and figure out what it should be */ else if (sec_flags & SEC_CODE) @@ -1672,7 +1680,7 @@ coff_set_alignment_hook (abfd, section, { if (*ps == section) { - *ps = (*ps)->next; + bfd_section_list_remove (abfd, ps); --abfd->section_count; break; } @@ -1779,7 +1787,7 @@ coff_mkobject_hook (abfd, filehdr, aouth #endif #ifdef ARM - /* Set the flags field from the COFF header read in */ + /* Set the flags field from the COFF header read in. */ if (! _bfd_coff_arm_set_private_flags (abfd, internal_f->f_flags)) coff->flags = 0; #endif @@ -1814,6 +1822,13 @@ coff_set_arch_mach_hook (abfd, filehdr) machine = 0; switch (internal_f->f_magic) { +#ifdef OR32_MAGIC_BIG + case OR32_MAGIC_BIG: + case OR32_MAGIC_LITTLE: + arch = bfd_arch_or32; + machine = 0; + break; +#endif #ifdef PPCMAGIC case PPCMAGIC: arch = bfd_arch_powerpc; @@ -1856,7 +1871,12 @@ coff_set_arch_mach_hook (abfd, filehdr) case F_ARM_3M: machine = bfd_mach_arm_3M; break; case F_ARM_4: machine = bfd_mach_arm_4; break; case F_ARM_4T: machine = bfd_mach_arm_4T; break; - case F_ARM_5: machine = bfd_mach_arm_5; break; + /* The COFF header does not have enough bits available + to cover all the different ARM architectures. So + we interpret F_ARM_5, the highest flag value to mean + "the highest ARM architecture known to BFD" which is + currently the XScale. */ + case F_ARM_5: machine = bfd_mach_arm_XScale; break; } break; #endif @@ -2609,7 +2629,8 @@ coff_set_flags (abfd, magicp, flagsp) case bfd_mach_arm_4: * flagsp |= F_ARM_4; break; case bfd_mach_arm_4T: * flagsp |= F_ARM_4T; break; case bfd_mach_arm_5: * flagsp |= F_ARM_5; break; - /* FIXME: we do not have F_ARM vaues greater than F_ARM_5. */ + /* FIXME: we do not have F_ARM vaues greater than F_ARM_5. + See also the comment in coff_set_arch_mach_hook(). */ case bfd_mach_arm_5T: * flagsp |= F_ARM_5; break; case bfd_mach_arm_5TE: * flagsp |= F_ARM_5; break; case bfd_mach_arm_XScale: * flagsp |= F_ARM_5; break; @@ -2771,6 +2792,15 @@ coff_set_flags (abfd, magicp, flagsp) return true; #endif +#ifdef OR32_MAGIC_BIG + case bfd_arch_or32: + if (bfd_big_endian (abfd)) + * magicp = OR32_MAGIC_BIG; + else + * magicp = OR32_MAGIC_LITTLE; + return true; +#endif + default: /* Unknown architecture. */ /* Fall through to "return false" below, to avoid "statement never reached" errors on the one below. */ @@ -3046,7 +3076,36 @@ coff_compute_section_file_positions (abf padding the previous section up if necessary */ old_sofar = sofar; - sofar = BFD_ALIGN (sofar, 1 << current->alignment_power); +#ifdef RS6000COFF_C + /* AIX loader checks the text section alignment of (vma - filepos) + So even though the filepos may be aligned wrt the o_algntext, for + AIX executables, this check fails. This shows up when an native + AIX executable is stripped with gnu strip because the default vma + of native is 0x10000150 but default for gnu is 0x10000140. Gnu + stripped gnu excutable passes this check because the filepos is + 0x0140. */ + if (!strcmp (current->name, _TEXT)) + { + bfd_vma pad; + bfd_vma align; + + sofar = BFD_ALIGN (sofar, 1 << current->alignment_power); + + align = 1 << current->alignment_power; + pad = abs (current->vma - sofar) % align; + + if (pad) + { + pad = align - pad; + sofar += pad; + } + } + else +#else + { + sofar = BFD_ALIGN (sofar, 1 << current->alignment_power); + } +#endif if (previous != (asection *) NULL) { previous->_raw_size += sofar - old_sofar; @@ -3793,6 +3852,11 @@ coff_write_object_contents (abfd) internal_a.magic = MIPS_PE_MAGIC; #endif +#ifdef OR32 +#define __A_MAGIC_SET__ + internal_a.magic = NMAGIC; /* Assume separate i/d. */ +#endif + #ifndef __A_MAGIC_SET__ #include "Your aouthdr magic number is not being set!" #else diff -uprN binutils-2.11.92.0.12.3/bfd/coffgen.c binutils-2.11.93.0.2/bfd/coffgen.c --- binutils-2.11.92.0.12.3/bfd/coffgen.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/coffgen.c Sun Feb 3 11:22:30 2002 @@ -2135,7 +2135,7 @@ coff_print_symbol (abfd, filep, symbol, next = auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l; llnos = auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_lnnoptr; fprintf (file, - _("AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld"), + "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld", tagndx, auxp->u.auxent.x_sym.x_misc.x_fsize, llnos, next); break; diff -uprN binutils-2.11.92.0.12.3/bfd/config.bfd binutils-2.11.93.0.2/bfd/config.bfd --- binutils-2.11.92.0.12.3/bfd/config.bfd Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/config.bfd Sun Feb 3 11:22:30 2002 @@ -43,6 +43,7 @@ m6812*|m68hc12*) targ_archs="bfd_m68hc12 m68*) targ_archs=bfd_m68k_arch ;; m88*) targ_archs=bfd_m88k_arch ;; mips*) targ_archs=bfd_mips_arch ;; +or32*) targ_archs=bfd_or32_arch ;; pdp11*) targ_archs=bfd_pdp11_arch ;; pj*) targ_archs="bfd_pj_arch bfd_i386_arch";; powerpc*) targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;; @@ -94,13 +95,13 @@ case "${targ}" in targ_defvec=bfd_elf64_ia64_aix_little_vec targ_selvecs="bfd_elf64_ia64_aix_big_vec bfd_efi_app_ia64_vec" ;; - ia64*-*-freebsd* | ia64*-*-linux-gnu* | ia64*-*-elf*) + ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf*) targ_defvec=bfd_elf64_ia64_little_vec targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec" ;; ia64*-*-hpux*) - targ_defvec=bfd_elf64_ia64_big_vec - targ_selvecs="bfd_elf32_ia64_big_vec" + targ_defvec=bfd_elf32_ia64_hpux_big_vec + targ_selvecs="bfd_elf64_ia64_hpux_big_vec" ;; sparc64-*-freebsd* | sparc64-*-netbsd*) targ_defvec=bfd_elf64_sparc_vec @@ -113,6 +114,10 @@ case "${targ}" in targ_selvecs=bfd_elf32_bigarc_vec ;; + arm-*-netbsdelf*) + targ_defvec=bfd_elf32_littlearm_vec + targ_selvecs="bfd_elf32_bigarm_vec armnetbsd_vec" + ;; arm-*-netbsd* | arm-*-openbsd*) targ_defvec=armnetbsd_vec targ_underscore=yes @@ -297,7 +302,7 @@ case "${targ}" in targ_defvec=bfd_elf32_hppa_linux_vec targ_selvecs=bfd_elf32_hppa_vec ;; - hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*) + hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-netbsd* | hppa*-*-sysv4* | hppa*-*-rtems*) targ_defvec=bfd_elf32_hppa_vec targ_selvecs=bfd_elf32_hppa_linux_vec ;; @@ -389,11 +394,15 @@ case "${targ}" in targ_defvec=bfd_elf32_i386_vec targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec" ;; -#ifdef BFD64 +#ifdef BFD64 x86_64-*-freebsd*) targ_defvec=bfd_elf64_x86_64_vec targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec" ;; + x86_64-*-netbsd*) + targ_defvec=bfd_elf64_x86_64_vec + targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" + ;; x86_64-*-linux-gnu*) targ_defvec=bfd_elf64_x86_64_vec targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec" @@ -564,7 +573,16 @@ case "${targ}" in targ_selvecs="m68knetbsd_vec hp300bsd_vec sunos_big_vec" targ_underscore=yes ;; - m68*-*-netbsd* | m68*-*-openbsd*) + m68*-*-netbsdelf*) + targ_defvec=bfd_elf32_m68k_vec + targ_selvecs="m68knetbsd_vec m68k4knetbsd_vec hp300bsd_vec sunos_big_vec" + ;; + m68*-*-netbsdaout* | m68*-*-netbsd*) + targ_defvec=m68knetbsd_vec + targ_selvecs="m68k4knetbsd_vec bfd_elf32_m68k_vec hp300bsd_vec sunos_big_vec" + targ_underscore=yes + ;; + m68*-*-openbsd*) targ_defvec=m68knetbsd_vec targ_selvecs="m68k4knetbsd_vec hp300bsd_vec sunos_big_vec" targ_underscore=yes @@ -618,7 +636,7 @@ case "${targ}" in targ_defvec=ecoff_big_vec targ_selvecs=ecoff_little_vec ;; - mips-dec-netbsd* | mips*el-*-netbsd*) + mips*el-*-netbsd*) targ_defvec=bfd_elf32_littlemips_vec targ_selvecs="bfd_elf32_bigmips_vec ecoff_little_vec ecoff_big_vec" ;; @@ -642,10 +660,12 @@ case "${targ}" in targ_defvec=ecoff_big_vec targ_selvecs=ecoff_little_vec ;; +#ifdef BFD64 mips*-*-irix6*) targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec" ;; +#endif mips*-*-irix5*) targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec ecoff_big_vec ecoff_little_vec" @@ -695,18 +715,20 @@ case "${targ}" in targ_defvec=bfd_elf32_bigmips_vec targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec" ;; +#ifdef BFD64 mips64*el-*-linux*) targ_defvec=bfd_elf32_tradlittlemips_vec targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec" ;; - mips*el-*-linux*) - targ_defvec=bfd_elf32_tradlittlemips_vec - targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec" - ;; mips64*-*-linux*) targ_defvec=bfd_elf32_tradbigmips_vec targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec" ;; +#endif + mips*el-*-linux*) + targ_defvec=bfd_elf32_tradlittlemips_vec + targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec" + ;; mips*-*-linux*) targ_defvec=bfd_elf32_tradbigmips_vec targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec" @@ -738,6 +760,15 @@ case "${targ}" in targ_defvec=bfd_elf32_openrisc_vec ;; + or32-*-coff | or32-*-rtems*) + targ_defvec=or32coff_big_vec + targ_underscore=yes + ;; + + or32-*-elf) + targ_defvec=bfd_elf32_or32_big_vec + ;; + pdp11-*-*) targ_defvec=pdp11_aout_vec targ_underscore=yes @@ -759,6 +790,9 @@ case "${targ}" in case "${targ}" in *-*-aix4.[3456789]* | *-*-aix[56789]*) want64=true;; + + *) + targ_cflags=-DSMALL_ARCHIVE;; esac ;; #ifdef BFD64 @@ -822,6 +856,15 @@ case "${targ}" in targ_defvec=bfd_elf32_shlin_vec ;; + sh*le-*-netbsdelf*) + targ_defvec=bfd_elf32_shlnbsd_vec + targ_selvecs="bfd_elf32_shnbsd_vec shcoff_vec shlcoff_vec" + ;; + sh*-*-netbsdelf*) + targ_defvec=bfd_elf32_shnbsd_vec + targ_selvecs="bfd_elf32_shlnbsd_vec shcoff_vec shlcoff_vec" + ;; + sh-*-elf* | sh-*-rtemself*) targ_defvec=bfd_elf32_sh_vec targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec" @@ -968,6 +1011,10 @@ case "${targ}" in targ_defvec=w65_vec ;; + xstormy16-*-elf) + targ_defvec=bfd_elf32_xstormy16_vec + ;; + z8k*-*-*) targ_defvec=z8kcoff_vec targ_underscore=yes diff -uprN binutils-2.11.92.0.12.3/bfd/configure binutils-2.11.93.0.2/bfd/configure --- binutils-2.11.92.0.12.3/bfd/configure Wed Nov 28 23:01:40 2001 +++ binutils-2.11.93.0.2/bfd/configure Thu Feb 7 10:24:47 2002 @@ -1116,7 +1116,7 @@ fi PACKAGE=bfd -VERSION=2.11.92.0.12.3 +VERSION=2.11.93.0.2 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; } @@ -1628,9 +1628,18 @@ gnu*) ;; hpux10.20*|hpux11*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl + case $host_cpu in + hppa*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + esac ;; irix5* | irix6*) @@ -1656,7 +1665,7 @@ irix5* | irix6*) # This must be Linux ELF. linux-gnu*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB( .*|) (shared object|dynamic lib )' lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; @@ -1714,13 +1723,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:1718: checking for object suffix" >&5 +echo "configure:1727: 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:1724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1740,7 +1749,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1744: checking for executable suffix" >&5 +echo "configure:1753: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1750,7 +1759,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1777,7 +1786,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:1781: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1790: 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 @@ -1839,7 +1848,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:1843: checking for file" >&5 +echo "configure:1852: 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 @@ -1910,7 +1919,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:1914: checking for $ac_word" >&5 +echo "configure:1923: 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 @@ -1942,7 +1951,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:1946: checking for $ac_word" >&5 +echo "configure:1955: 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 @@ -1977,7 +1986,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:1981: checking for $ac_word" >&5 +echo "configure:1990: 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 @@ -2009,7 +2018,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:2013: checking for $ac_word" >&5 +echo "configure:2022: 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 @@ -2076,8 +2085,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 2080 "configure"' > conftest.$ac_ext - if { (eval echo configure:2081: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 2089 "configure"' > conftest.$ac_ext + if { (eval echo configure:2090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -2093,12 +2102,28 @@ case $host in rm -rf conftest* ;; +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 + case "`/usr/bin/file conftest.o`" in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; + *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2102: checking whether the C compiler needs -belf" >&5 +echo "configure:2127: 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 @@ -2111,14 +2136,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:2147: \"$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 @@ -2308,7 +2333,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:2312: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:2337: 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" @@ -2333,7 +2358,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:2337: checking for executable suffix" >&5 +echo "configure:2362: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2343,7 +2368,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:2347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -2373,7 +2398,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:2377: checking for $ac_word" >&5 +echo "configure:2402: 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 @@ -2403,7 +2428,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:2407: checking for $ac_word" >&5 +echo "configure:2432: 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 @@ -2454,7 +2479,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:2458: checking for $ac_word" >&5 +echo "configure:2483: 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 @@ -2486,7 +2511,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2490: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2515: 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. @@ -2497,12 +2522,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2501 "configure" +#line 2526 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2531: \"$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 @@ -2528,12 +2553,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:2532: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2557: 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:2537: checking whether we are using GNU C" >&5 +echo "configure:2562: 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 @@ -2542,7 +2567,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2546: \"$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:2571: \"$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 @@ -2561,7 +2586,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:2565: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2590: 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 @@ -2593,9 +2618,9 @@ else fi -ALL_LINGUAS="fr" +ALL_LINGUAS="fr tr ja es sv" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2599: checking how to run the C preprocessor" >&5 +echo "configure:2624: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2610,13 +2635,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:2620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2645: \"$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 : @@ -2627,13 +2652,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:2637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2662: \"$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 : @@ -2644,13 +2669,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:2654: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2679: \"$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 : @@ -2677,7 +2702,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:2681: checking for $ac_word" >&5 +echo "configure:2706: 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 @@ -2705,12 +2730,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2709: checking for ANSI C header files" >&5 +echo "configure:2734: 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 @@ -2718,7 +2743,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2747: \"$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* @@ -2735,7 +2760,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 @@ -2753,7 +2778,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 @@ -2774,7 +2799,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2785,7 +2810,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:2789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2809,12 +2834,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2813: checking for working const" >&5 +echo "configure:2838: 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:2892: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2884,21 +2909,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2888: checking for inline" >&5 +echo "configure:2913: 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:2927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2924,12 +2949,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2928: checking for off_t" >&5 +echo "configure:2953: 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 @@ -2957,12 +2982,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2961: checking for size_t" >&5 +echo "configure:2986: 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 @@ -2992,19 +3017,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:2996: checking for working alloca.h" >&5 +echo "configure:3021: 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:3008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3033: \"$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 @@ -3025,12 +3050,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3029: checking for alloca" >&5 +echo "configure:3054: 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:3087: \"$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 @@ -3090,12 +3115,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3094: checking whether alloca needs Cray hooks" >&5 +echo "configure:3119: 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:3124: checking for $ac_func" >&5 +echo "configure:3149: 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:3177: \"$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 @@ -3175,7 +3200,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3179: checking stack direction for C alloca" >&5 +echo "configure:3204: 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 @@ -3183,7 +3208,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:3231: \"$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 @@ -3227,17 +3252,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:3231: checking for $ac_hdr" >&5 +echo "configure:3256: 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:3241: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3266: \"$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* @@ -3266,12 +3291,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3270: checking for $ac_func" >&5 +echo "configure:3295: 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:3323: \"$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 @@ -3319,7 +3344,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3323: checking for working mmap" >&5 +echo "configure:3348: 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 @@ -3327,7 +3352,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:3496: \"$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 @@ -3495,17 +3520,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:3499: checking for $ac_hdr" >&5 +echo "configure:3524: 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:3509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3534: \"$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* @@ -3535,12 +3560,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3539: checking for $ac_func" >&5 +echo "configure:3564: 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:3592: \"$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 @@ -3592,12 +3617,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3596: checking for $ac_func" >&5 +echo "configure:3621: 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:3649: \"$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 @@ -3654,19 +3679,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3658: checking for LC_MESSAGES" >&5 +echo "configure:3683: 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:3670: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3695: \"$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 @@ -3687,7 +3712,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3691: checking whether NLS is requested" >&5 +echo "configure:3716: 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" @@ -3707,7 +3732,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3711: checking whether included gettext is requested" >&5 +echo "configure:3736: 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" @@ -3726,17 +3751,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3730: checking for libintl.h" >&5 +echo "configure:3755: 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:3740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3765: \"$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* @@ -3753,19 +3778,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:3757: checking for gettext in libc" >&5 +echo "configure:3782: 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:3769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3794: \"$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 @@ -3781,7 +3806,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:3785: checking for bindtextdomain in -lintl" >&5 +echo "configure:3810: 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 @@ -3789,7 +3814,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:3829: \"$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 @@ -3816,19 +3841,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:3820: checking for gettext in libintl" >&5 +echo "configure:3845: 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:3857: \"$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 @@ -3856,7 +3881,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:3860: checking for $ac_word" >&5 +echo "configure:3885: 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 @@ -3890,12 +3915,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3894: checking for $ac_func" >&5 +echo "configure:3919: 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:3947: \"$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 @@ -3945,7 +3970,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:3949: checking for $ac_word" >&5 +echo "configure:3974: 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 @@ -3981,7 +4006,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:3985: checking for $ac_word" >&5 +echo "configure:4010: 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 @@ -4013,7 +4038,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4053,7 +4078,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:4057: checking for $ac_word" >&5 +echo "configure:4082: 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 @@ -4087,7 +4112,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:4091: checking for $ac_word" >&5 +echo "configure:4116: 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 @@ -4123,7 +4148,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:4127: checking for $ac_word" >&5 +echo "configure:4152: 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 @@ -4213,7 +4238,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4217: checking for catalogs to be installed" >&5 +echo "configure:4242: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4241,17 +4266,17 @@ echo "configure:4217: 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:4245: checking for linux/version.h" >&5 +echo "configure:4270: 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:4255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4280: \"$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* @@ -4329,7 +4354,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:4333: checking for a BSD compatible install" >&5 +echo "configure:4358: 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,7 +4437,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:4416: checking for build system executable suffix" >&5 +echo "configure:4441: 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 @@ -4440,17 +4465,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:4444: checking for $ac_hdr" >&5 +echo "configure:4469: 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:4454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4479: \"$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* @@ -4480,17 +4505,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:4484: checking for $ac_hdr" >&5 +echo "configure:4509: 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:4494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4519: \"$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* @@ -4517,12 +4542,12 @@ fi done echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:4521: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:4546: 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 @@ -4531,7 +4556,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:4535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -4556,12 +4581,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:4560: checking for $ac_hdr that defines DIR" >&5 +echo "configure:4585: 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> @@ -4569,7 +4594,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:4573: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -4594,7 +4619,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:4598: checking for opendir in -ldir" >&5 +echo "configure:4623: 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 @@ -4602,7 +4627,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:4642: \"$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 @@ -4635,7 +4660,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:4639: checking for opendir in -lx" >&5 +echo "configure:4664: 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 @@ -4643,7 +4668,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:4683: \"$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 @@ -4679,12 +4704,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:4683: checking for $ac_func" >&5 +echo "configure:4708: 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:4736: \"$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 @@ -4742,12 +4767,12 @@ EOF esac echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:4746: checking whether strstr must be declared" >&5 +echo "configure:4771: 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 < @@ -4768,7 +4793,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:4772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4797: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -4789,12 +4814,12 @@ EOF fi echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6 -echo "configure:4793: checking whether malloc must be declared" >&5 +echo "configure:4818: 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 < @@ -4815,7 +4840,7 @@ int main() { char *(*pfn) = (char *(*)) malloc ; return 0; } EOF -if { (eval echo configure:4819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_malloc=no else @@ -4836,12 +4861,12 @@ EOF fi echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6 -echo "configure:4840: checking whether realloc must be declared" >&5 +echo "configure:4865: 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 < @@ -4862,7 +4887,7 @@ int main() { char *(*pfn) = (char *(*)) realloc ; return 0; } EOF -if { (eval echo configure:4866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_realloc=no else @@ -4883,12 +4908,12 @@ EOF fi echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6 -echo "configure:4887: checking whether free must be declared" >&5 +echo "configure:4912: 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 < @@ -4909,7 +4934,7 @@ int main() { char *(*pfn) = (char *(*)) free ; return 0; } EOF -if { (eval echo configure:4913: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4938: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_free=no else @@ -4930,12 +4955,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:4934: checking whether getenv must be declared" >&5 +echo "configure:4959: 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 < @@ -4956,7 +4981,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:4960: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4985: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -4993,6 +5018,7 @@ if test "${target}" = "${host}"; then alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;; alpha*-*-*) COREFILE=osf-core.lo ;; arm-*-freebsd*) COREFILE='' ;; + arm-*-netbsd*) COREFILE=netbsd-core.lo ;; arm-*-riscix) COREFILE=trad-core.lo ;; hppa*-*-hpux*) COREFILE=hpux-core.lo ;; hppa*-*-hiux*) COREFILE=hpux-core.lo ;; @@ -5016,7 +5042,7 @@ if test "${target}" = "${host}"; then i[3456]86-*-bsdi) COREFILE= ;; - i[3456]86-*-bsd* | i[34567]86-*-freebsd[1234] | i[34567]86-*-freebsd[1234]\.* | i[34567]86-*-freebsd*aout*) + i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*) COREFILE=trad-core.lo TRAD_HEADER='"hosts/i386bsd.h"' ;; @@ -5138,6 +5164,7 @@ if test "${target}" = "${host}"; then powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;; powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;; s390*-*-*) COREFILE=trad-core.lo ;; + sh*-*-netbsd*) COREFILE=netbsd-core.lo ;; sparc-*-netbsd* | sparc-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -5157,6 +5184,7 @@ if test "${target}" = "${host}"; then COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; + x86_64-*-netbsd*) COREFILE=netbsd-core.lo ;; esac case "$COREFILE" in @@ -5179,17 +5207,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:5183: checking for $ac_hdr" >&5 +echo "configure:5211: 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:5193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5221: \"$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* @@ -5217,12 +5245,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:5221: checking for prstatus_t in sys/procfs.h" >&5 +echo "configure:5249: 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:5263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus_t=yes else @@ -5253,12 +5281,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:5257: checking for prstatus32_t in sys/procfs.h" >&5 +echo "configure:5285: 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:5299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prstatus32_t=yes else @@ -5289,12 +5317,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:5293: checking for prstatus_t.pr_who in sys/procfs.h" >&5 +echo "configure:5321: 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:5335: \"$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 @@ -5325,12 +5353,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:5329: checking for prstatus32_t.pr_who in sys/procfs.h" >&5 +echo "configure:5357: 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:5371: \"$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 @@ -5361,12 +5389,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:5365: checking for pstatus_t in sys/procfs.h" >&5 +echo "configure:5393: 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:5407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus_t=yes else @@ -5397,12 +5425,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:5401: checking for pxstatus_t in sys/procfs.h" >&5 +echo "configure:5429: 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:5443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pxstatus_t=yes else @@ -5433,12 +5461,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:5437: checking for pstatus32_t in sys/procfs.h" >&5 +echo "configure:5465: 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:5479: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_pstatus32_t=yes else @@ -5469,12 +5497,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:5473: checking for prpsinfo_t in sys/procfs.h" >&5 +echo "configure:5501: 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:5515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo_t=yes else @@ -5505,12 +5533,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:5509: checking for prpsinfo32_t in sys/procfs.h" >&5 +echo "configure:5537: 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:5551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes else @@ -5541,12 +5569,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:5545: checking for psinfo_t in sys/procfs.h" >&5 +echo "configure:5573: 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:5587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo_t=yes else @@ -5577,12 +5605,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:5581: checking for psinfo32_t in sys/procfs.h" >&5 +echo "configure:5609: 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:5623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_psinfo32_t=yes else @@ -5613,12 +5641,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:5617: checking for lwpstatus_t in sys/procfs.h" >&5 +echo "configure:5645: 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:5659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpstatus_t=yes else @@ -5649,12 +5677,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:5653: checking for lwpxstatus_t in sys/procfs.h" >&5 +echo "configure:5681: 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:5695: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes else @@ -5685,12 +5713,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:5689: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5 +echo "configure:5717: 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:5731: \"$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 @@ -5721,12 +5749,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:5725: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5 +echo "configure:5753: 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:5767: \"$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 @@ -5757,12 +5785,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:5761: checking for win32_pstatus_t in sys/procfs.h" >&5 +echo "configure:5789: 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:5803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes else @@ -5904,7 +5932,7 @@ selarchs="$f" # Target backend .o files. tb= -elf="elf.lo elflink.lo elf-strtab.lo dwarf1.lo" +elf="elf.lo elflink.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo" for vec in $selvecs do @@ -5955,6 +5983,7 @@ do bfd_elf32_i860_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; bfd_elf32_i960_vec) tb="$tb elf32-i960.lo elf32.lo $elf" ;; bfd_elf32_ia64_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf" ;; + bfd_elf32_ia64_hpux_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf";; bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;; bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; bfd_elf32_littlearm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;; @@ -5970,6 +5999,7 @@ do bfd_elf32_mn10200_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;; bfd_elf32_mn10300_vec) tb="$tb elf-m10300.lo elf32.lo $elf" ;; bfd_elf32_openrisc_vec) tb="$tb elf32-openrisc.lo elf32.lo $elf" ;; + bfd_elf32_or32_big_vec) tb="$tb elf32-or32.lo elf32.lo $elf" ;; bfd_elf32_pj_vec) tb="$tb elf32-pj.lo elf32.lo $elf";; bfd_elf32_pjl_vec) tb="$tb elf32-pj.lo elf32.lo $elf";; bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.lo elf32.lo $elf" ;; @@ -5979,11 +6009,14 @@ do bfd_elf32_shblin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;; bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_us_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;; + bfd_elf32_xstormy16_vec) tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;; bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; @@ -5992,6 +6025,7 @@ do bfd_elf64_ia64_aix_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_aix_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; @@ -6062,6 +6096,7 @@ do nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;; nlm32_powerpc_vec) tb="$tb nlm32-ppc.lo nlm32.lo nlm.lo" ;; nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;; + or32coff_big_vec) tb="$tb coff-or32.lo cofflink.lo" ;; pc532machaout_vec) tb="$tb pc532-mach.lo aout-ns32k.lo" ;; pc532netbsd_vec) tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;; pdp11_aout_vec) tb="$tb pdp11.lo" ;; @@ -6162,14 +6197,41 @@ fi # all_targets is true case ${host64}-${target64}-${want64} in *true*) wordsize=64 + bfd_libs='$(BFD64_LIBS) $(BFD32_LIBS)' all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)' if test -z "$GCC" && test "$BFD_HOST_64BIT_LONG" = "0" && test "$BFD_HOST_64_BIT_DEFINED" = "0"; then echo "configure: warning: You have requested a 64 bit BFD configuration, but" 1>&2 echo "configure: warning: your compiler may not have a 64 bit integral type" 1>&2 fi + 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:6210: 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 <&5 | + egrep ": 2 : 91 : 1 :" >/dev/null 2>&1; then + rm -rf conftest* + bad_64bit_gcc=yes; + echo "$ac_t""yes: egcs-1.1.2 on ix86 spotted" 1>&6 +else + rm -rf conftest* + echo "$ac_t""no" 1>&6 +fi +rm -f conftest* + + if test $bad_64bit_gcc = yes ; then + { echo "configure: error: A newer version of gcc is needed for the requested 64-bit BFD configuration" 1>&2; exit 1; } + fi + fi ;; false-false-false) wordsize=32 + bfd_libs='$(BFD32_LIBS)' all_backends='$(BFD32_BACKENDS)' ;; esac @@ -6180,6 +6242,7 @@ esac + tdefaults="" test -n "${defvec}" && tdefaults="${tdefaults} -DDEFAULT_VECTOR=${defvec}" test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'" @@ -6191,17 +6254,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:6195: checking for $ac_hdr" >&5 +echo "configure:6258: 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:6205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6268: \"$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* @@ -6230,12 +6293,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6234: checking for $ac_func" >&5 +echo "configure:6297: 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:6325: \"$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 @@ -6283,7 +6346,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:6287: checking for working mmap" >&5 +echo "configure:6350: 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 @@ -6291,7 +6354,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:6498: \"$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 @@ -6456,12 +6519,12 @@ fi for ac_func in madvise mprotect do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6460: checking for $ac_func" >&5 +echo "configure:6523: 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:6551: \"$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 @@ -6725,6 +6788,7 @@ s%@WIN32LDFLAGS@%$WIN32LDFLAGS%g s%@WIN32LIBADD@%$WIN32LIBADD%g s%@TDEFINES@%$TDEFINES%g s%@wordsize@%$wordsize%g +s%@bfd_libs@%$bfd_libs%g s%@all_backends@%$all_backends%g s%@bfd_backends@%$bfd_backends%g s%@bfd_machines@%$bfd_machines%g diff -uprN binutils-2.11.92.0.12.3/bfd/configure.host binutils-2.11.93.0.2/bfd/configure.host --- binutils-2.11.92.0.12.3/bfd/configure.host Sat Jun 23 00:05:22 2001 +++ binutils-2.11.93.0.2/bfd/configure.host Sun Feb 3 11:22:30 2002 @@ -21,8 +21,11 @@ case "${host}" in alpha*-*-*) host64=true; HOST_64BIT_TYPE=long ;; +hppa*64*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX; + host64=true; HOST_64BIT_TYPE=long ;; hppa*-*-hpux*) HDEFINES=-DHOST_HPPAHPUX ;; hppa*-*-hiux*) HDEFINES=-DHOST_HPPAHPUX ;; +hppa*64*-*-linux*) host64=true; HOST_64BIT_TYPE=long ;; hppa*-*-mpeix*) HDEFINES=-DHOST_HPPAMPEIX ;; hppa*-*-bsd*) HDEFINES=-DHOST_HPPABSD ;; hppa*-*-osf*) HDEFINES=-DHOST_HPPAOSF ;; @@ -34,7 +37,7 @@ i[3456]86-sequent-bsd*) HDEFINES=-Dshare i[3456]86-sequent-sysv4*) ;; i[3456]86-sequent-sysv*) HDEFINES=-Dshared=genshared ;; -mips*-dec-netbsd*) ;; +mips*-*-netbsd*) ;; mips*-*-openbsd*) ;; mips*-dec-*) HDEFINES="-G 4" ;; mips*-sgi-irix3*) HDEFINES="-G 4" ;; diff -uprN binutils-2.11.92.0.12.3/bfd/configure.in binutils-2.11.93.0.2/bfd/configure.in --- binutils-2.11.92.0.12.3/bfd/configure.in Wed Nov 28 23:01:33 2001 +++ binutils-2.11.93.0.2/bfd/configure.in Thu Feb 7 10:24:37 2002 @@ -7,7 +7,7 @@ AC_INIT(libbfd.c) AC_CANONICAL_SYSTEM AC_ISC_POSIX -AM_INIT_AUTOMAKE(bfd, 2.11.92.0.12.3) +AM_INIT_AUTOMAKE(bfd, 2.11.93.0.2) # Uncomment the next line to remove the date from the reported bfd version #is_release=y @@ -108,7 +108,7 @@ bfd_default_target_size=32 AC_PROG_CC -ALL_LINGUAS="fr" +ALL_LINGUAS="fr tr ja es sv" CY_GNU_GETTEXT # Permit host specific settings. @@ -165,6 +165,7 @@ if test "${target}" = "${host}"; then alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;; alpha*-*-*) COREFILE=osf-core.lo ;; arm-*-freebsd*) COREFILE='' ;; + arm-*-netbsd*) COREFILE=netbsd-core.lo ;; arm-*-riscix) COREFILE=trad-core.lo ;; hppa*-*-hpux*) COREFILE=hpux-core.lo ;; hppa*-*-hiux*) COREFILE=hpux-core.lo ;; @@ -195,7 +196,7 @@ changequote([,])dnl COREFILE= ;; changequote(,)dnl - i[3456]86-*-bsd* | i[34567]86-*-freebsd[1234] | i[34567]86-*-freebsd[1234]\.* | i[34567]86-*-freebsd*aout*) + i[3456]86-*-bsd* | i[34567]86-*-freebsd[123] | i[34567]86-*-freebsd[123]\.* | i[34567]86-*-freebsd4\.[01234]* | i[34567]86-*-freebsd*aout*) changequote([,])dnl COREFILE=trad-core.lo TRAD_HEADER='"hosts/i386bsd.h"' @@ -336,6 +337,7 @@ changequote([,])dnl powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;; powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;; s390*-*-*) COREFILE=trad-core.lo ;; + sh*-*-netbsd*) COREFILE=netbsd-core.lo ;; sparc-*-netbsd* | sparc-*-openbsd*) COREFILE=netbsd-core.lo ;; @@ -355,6 +357,7 @@ changequote([,])dnl COREFILE=trad-core.lo TRAD_HEADER='"hosts/vaxbsd.h"' ;; + x86_64-*-netbsd*) COREFILE=netbsd-core.lo ;; esac case "$COREFILE" in @@ -503,7 +506,7 @@ selarchs="$f" # Target backend .o files. tb= -elf="elf.lo elflink.lo elf-strtab.lo dwarf1.lo" +elf="elf.lo elflink.lo elf-strtab.lo elf-eh-frame.lo dwarf1.lo" for vec in $selvecs do @@ -554,6 +557,7 @@ do bfd_elf32_i860_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;; bfd_elf32_i960_vec) tb="$tb elf32-i960.lo elf32.lo $elf" ;; bfd_elf32_ia64_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf" ;; + bfd_elf32_ia64_hpux_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf";; bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;; bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;; bfd_elf32_littlearm_oabi_vec) tb="$tb elfarm-oabi.lo elf32.lo $elf" ;; @@ -569,6 +573,7 @@ do bfd_elf32_mn10200_vec) tb="$tb elf-m10200.lo elf32.lo $elf" ;; bfd_elf32_mn10300_vec) tb="$tb elf-m10300.lo elf32.lo $elf" ;; bfd_elf32_openrisc_vec) tb="$tb elf32-openrisc.lo elf32.lo $elf" ;; + bfd_elf32_or32_big_vec) tb="$tb elf32-or32.lo elf32.lo $elf" ;; bfd_elf32_pj_vec) tb="$tb elf32-pj.lo elf32.lo $elf";; bfd_elf32_pjl_vec) tb="$tb elf32-pj.lo elf32.lo $elf";; bfd_elf32_powerpc_vec) tb="$tb elf32-ppc.lo elf32.lo $elf" ;; @@ -578,11 +583,14 @@ do bfd_elf32_shblin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;; bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shlnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; + bfd_elf32_shnbsd_vec) tb="$tb elf32-sh-nbsd.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;; bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;; bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;; bfd_elf32_us_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;; bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;; + bfd_elf32_xstormy16_vec) tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;; bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; @@ -591,6 +599,7 @@ do bfd_elf64_ia64_aix_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_aix_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; + bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;; bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;; @@ -661,6 +670,7 @@ do nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;; nlm32_powerpc_vec) tb="$tb nlm32-ppc.lo nlm32.lo nlm.lo" ;; nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;; + or32coff_big_vec) tb="$tb coff-or32.lo cofflink.lo" ;; pc532machaout_vec) tb="$tb pc532-mach.lo aout-ns32k.lo" ;; pc532netbsd_vec) tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;; pdp11_aout_vec) tb="$tb pdp11.lo" ;; @@ -761,19 +771,34 @@ fi # all_targets is true case ${host64}-${target64}-${want64} in *true*) wordsize=64 + bfd_libs='$(BFD64_LIBS) $(BFD32_LIBS)' all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)' if test -z "$GCC" && test "$BFD_HOST_64BIT_LONG" = "0" && test "$BFD_HOST_64_BIT_DEFINED" = "0"; then AC_MSG_WARN([You have requested a 64 bit BFD configuration, but]) AC_MSG_WARN([your compiler may not have a 64 bit integral type]) fi + if test -n "$GCC" ; then + bad_64bit_gcc=no; + AC_MSG_CHECKING([for gcc version with buggy 64-bit support]) + # Add more tests for gcc versions with non-working 64-bit support here. + AC_EGREP_CPP([: 2 : 91 : 1 :],[:__GNUC__:__GNUC_MINOR__:__i386__:], + bad_64bit_gcc=yes; + AC_MSG_RESULT([yes: egcs-1.1.2 on ix86 spotted]), + AC_MSG_RESULT(no)) + if test $bad_64bit_gcc = yes ; then + AC_ERROR([A newer version of gcc is needed for the requested 64-bit BFD configuration]) + fi + fi ;; false-false-false) wordsize=32 + bfd_libs='$(BFD32_LIBS)' all_backends='$(BFD32_BACKENDS)' ;; esac AC_SUBST(wordsize) +AC_SUBST(bfd_libs) AC_SUBST(all_backends) AC_SUBST(bfd_backends) AC_SUBST(bfd_machines) diff -uprN binutils-2.11.92.0.12.3/bfd/cpu-or32.c binutils-2.11.93.0.2/bfd/cpu-or32.c --- binutils-2.11.92.0.12.3/bfd/cpu-or32.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/cpu-or32.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,40 @@ +/* BFD support for the OpenRISC 1000 architecture. + Copyright 2002 Free Software Foundation, Inc. + Contributed by Ivan Guzvinec + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" + +const bfd_arch_info_type bfd_or32_arch = + { + 32, /* 32 bits in a word. */ + 32, /* 32 bits in an address. */ + 8, /* 8 bits in a byte. */ + bfd_arch_or32, + 0, /* Only 1 machine. */ + "or32", + "or32", + 4, + true, /* The one and only. */ + bfd_default_compatible, + bfd_default_scan , + 0, + }; + diff -uprN binutils-2.11.92.0.12.3/bfd/cpu-powerpc.c binutils-2.11.93.0.2/bfd/cpu-powerpc.c --- binutils-2.11.92.0.12.3/bfd/cpu-powerpc.c Mon Aug 27 11:44:51 2001 +++ binutils-2.11.93.0.2/bfd/cpu-powerpc.c Thu Feb 7 10:21:03 2002 @@ -1,5 +1,6 @@ /* BFD PowerPC CPU definition - Copyright 1994, 1995, 1996, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1995, 1996, 2000, 2001, 2002 + Free Software Foundation, Inc. Contributed by Ian Lance Taylor, Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -47,7 +48,7 @@ powerpc_compatible (a,b) /*NOTREACHED*/ } -static const bfd_arch_info_type arch_info_struct[] = +const bfd_arch_info_type bfd_powerpc_archs[] = { { 32, /* 32 bits in a word */ @@ -61,7 +62,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[1] + &bfd_powerpc_archs[1] }, { 32, /* 32 bits in a word */ @@ -75,7 +76,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[2] + &bfd_powerpc_archs[2] }, { 32, /* 32 bits in a word */ @@ -89,7 +90,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[3] + &bfd_powerpc_archs[3] }, { 32, /* 32 bits in a word */ @@ -103,7 +104,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[4] + &bfd_powerpc_archs[4] }, { 32, /* 32 bits in a word */ @@ -117,7 +118,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[5] + &bfd_powerpc_archs[5] }, { 64, /* 64 bits in a word */ @@ -128,10 +129,10 @@ static const bfd_arch_info_type arch_inf "powerpc", "powerpc:620", 3, - BFD_DEFAULT_TARGET_SIZE == 64, /* default for 64 bit target */ + false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[6] + &bfd_powerpc_archs[6] }, { 64, /* 64 bits in a word */ @@ -145,7 +146,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[7] + &bfd_powerpc_archs[7] }, { 64, /* 64 bits in a word */ @@ -159,7 +160,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[8] + &bfd_powerpc_archs[8] }, { 64, /* 64 bits in a word */ @@ -173,7 +174,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[9] + &bfd_powerpc_archs[9] }, { 64, /* 64 bits in a word */ @@ -187,7 +188,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[10] + &bfd_powerpc_archs[10] }, { 32, /* 32 bits in a word */ @@ -201,7 +202,7 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[11] + &bfd_powerpc_archs[11] }, { 32, /* 32 bits in a word */ @@ -215,11 +216,22 @@ static const bfd_arch_info_type arch_inf false, /* not the default */ powerpc_compatible, bfd_default_scan, - 0 - } -}; - -const bfd_arch_info_type bfd_powerpc_arch = + &bfd_powerpc_archs[12] + }, + { + 64, /* 64 bits in a word */ + 64, /* 64 bits in an address */ + 8, /* 8 bits in a byte */ + bfd_arch_powerpc, + bfd_mach_ppc64, + "powerpc", + "powerpc:common64", + 3, + BFD_DEFAULT_TARGET_SIZE == 64, /* default for 64 bit target */ + powerpc_compatible, + bfd_default_scan, + &bfd_powerpc_archs[13] + }, { 32, /* 32 bits in a word */ 32, /* 32 bits in an address */ @@ -232,5 +244,6 @@ const bfd_arch_info_type bfd_powerpc_arc BFD_DEFAULT_TARGET_SIZE != 64, /* default for 32 bit target */ powerpc_compatible, bfd_default_scan, - &arch_info_struct[0] - }; + 0 + } +}; diff -uprN binutils-2.11.92.0.12.3/bfd/cpu-xstormy16.c binutils-2.11.93.0.2/bfd/cpu-xstormy16.c --- binutils-2.11.92.0.12.3/bfd/cpu-xstormy16.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/cpu-xstormy16.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,38 @@ +/* BFD support for the XSTORMY16 processor. + Copyright (C) 2001 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" + +const bfd_arch_info_type bfd_xstormy16_arch = +{ + 16, /* bits per word */ + 32, /* bits per address */ + 8, /* bits per byte */ + bfd_arch_xstormy16, /* architecture */ + bfd_mach_xstormy16, /* machine */ + "xstormy16", /* architecture name */ + "xstormy16", /* printable name */ + 2, /* section align power */ + true, /* the default ? */ + bfd_default_compatible, /* architecture comparison fn */ + bfd_default_scan, /* string to architecture convert fn */ + NULL /* next in list */ +}; diff -uprN binutils-2.11.92.0.12.3/bfd/doc/ChangeLog binutils-2.11.93.0.2/bfd/doc/ChangeLog --- binutils-2.11.92.0.12.3/bfd/doc/ChangeLog Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/doc/ChangeLog Sun Feb 3 11:22:30 2002 @@ -1,9 +1,26 @@ +2002-02-01 Alan Modra + + * chew.c (WORD): Eliminate. + +2002-01-31 Ivan Guzvinec + + * Makefile.in: Regenerate. + +2002-01-31 Alan Modra + + * chew.c (courierize): Don't modify @command params. + +2002-01-30 Nick Clifton + + * proto.str (ENUMDOC): Place two spaces between the end of + the text and the closing comment marker. + 2001-10-30 Hans-Peter Nilsson - * doc/bfdint.texi (BFD target vector miscellaneous): Add + * bfdint.texi (BFD target vector miscellaneous): Add bfd_target_mmo_flavour. - * doc/bfd.texinfo (BFD back ends): Add entry for mmo. - * doc/Makefile.am (DOCFILES): Add mmo.texi. + * bfd.texinfo (BFD back ends): Add entry for mmo. + * Makefile.am (DOCFILES): Add mmo.texi. (SRCDOC): Add mmo.c. (s-mmo, mmo.texi): New rules. @@ -16,6 +33,11 @@ * bfd.texinfo: Change footer to refer to FSF. Change subtitle to refer to original creation date. +2002-01-26 Hans-Peter Nilsson + + * Makefile.am (install): Depend on install-info. + * Makefile.in: Regenerate. + 2001-10-03 Alan Modra * Makefile.am (BFD_H_DEP): Add ../version.h. @@ -179,7 +201,7 @@ Tue Jul 22 14:44:00 1997 Robert Hoehne * Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi rather than bfd.texi. - (DOCFILES): Change bfd.texi to bfdt.texi. + (DOCFILES): Change bfd.texi to bfdt.texi. * bfd.texinfo: Include bfdt.texi, not bfd.texi. Mon Jun 16 15:33:15 1997 Ian Lance Taylor @@ -222,7 +244,7 @@ Tue Jan 30 14:10:46 1996 Ian Lance Tayl Fri Nov 3 14:46:48 1995 Fred Fish - * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c, + * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c, renamed from core.c. Wed Nov 1 14:28:23 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 @@ -342,7 +364,7 @@ Thu Jun 24 13:48:13 1993 David J. Macke Mon Jun 14 12:07:07 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com) - * Makefile.in (install-info): remove parentdir cruft, + * Makefile.in (install-info): remove parentdir cruft, Wed Jun 9 16:00:32 1993 Jim Kingdon (kingdon@cygnus.com) @@ -405,7 +427,7 @@ Thu Nov 5 03:13:55 1992 John Gilmore Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS. - * chew.c (exfunstuff): Eliminate. + * chew.c (exfunstuff): Eliminate. (paramstuff): Replace exfunstuff with function to generate PARAMS. * proto.str: Use paramstuff rather than exfunstuff. @@ -420,7 +442,7 @@ Fri Jun 19 18:59:54 1992 John Gilmore Mon May 11 18:55:59 1992 John Gilmore (gnu at cygnus.com) * chew.c: exit() should be declared by config files, not by - portable source code. Its type could be int or void function. + portable source code. Its type could be int or void function. Mon May 4 13:45:57 1992 K. Richard Pixley (rich@rtl.cygnus.com) diff -uprN binutils-2.11.92.0.12.3/bfd/doc/Makefile.am binutils-2.11.93.0.2/bfd/doc/Makefile.am --- binutils-2.11.92.0.12.3/bfd/doc/Makefile.am Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/doc/Makefile.am Sun Feb 3 11:22:30 2002 @@ -272,3 +272,7 @@ CLEANFILES = s-* *.p *.ip DISTCLEANFILES = bfd.?? bfd.??? bfd.h libbfd.h libcoff.h texput.log MAINTAINERCLEANFILES = $(DOCFILES) + +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info diff -uprN binutils-2.11.92.0.12.3/bfd/doc/Makefile.in binutils-2.11.93.0.2/bfd/doc/Makefile.in --- binutils-2.11.92.0.12.3/bfd/doc/Makefile.in Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/doc/Makefile.in Sun Feb 3 11:22:30 2002 @@ -116,6 +116,7 @@ WIN32LIBADD = @WIN32LIBADD@ all_backends = @all_backends@ bfd_backends = @bfd_backends@ bfd_default_target_size = @bfd_default_target_size@ +bfd_libs = @bfd_libs@ bfd_machines = @bfd_machines@ bfd_version = @bfd_version@ bfd_version_date = @bfd_version_date@ @@ -631,6 +632,10 @@ bfd.h: $(BFD_H_DEP) echo "#endif" >> $@ echo "#endif" >> $@ +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -uprN binutils-2.11.92.0.12.3/bfd/doc/chew.c binutils-2.11.93.0.2/bfd/doc/chew.c --- binutils-2.11.92.0.12.3/bfd/doc/chew.c Fri Mar 9 11:16:11 2001 +++ binutils-2.11.93.0.2/bfd/doc/chew.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* chew - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, + 2002 Free Software Foundation, Inc. Contributed by steve chamberlain @cygnus @@ -289,8 +290,6 @@ struct dict_struct typedef struct dict_struct dict_type; -#define WORD(x) static void x() - static void die (msg) char *msg; @@ -362,7 +361,8 @@ exec (word) (*pc) (); } -WORD (call) +static void +call () { stinst_type *oldpc = pc; dict_type *e; @@ -371,7 +371,8 @@ WORD (call) pc = oldpc + 2; } -WORD (remchar) +static void +remchar () { if (tos->write_idx) tos->write_idx--; @@ -388,7 +389,8 @@ strip_trailing_newlines () pc++; } -WORD (push_number) +static void +push_number () { isp++; icheck_range (); @@ -397,7 +399,8 @@ WORD (push_number) pc++; } -WORD (push_text) +static void +push_text () { tos++; check_range (); @@ -551,7 +554,8 @@ paramstuff (void) /* turn {* and *} into comments */ -WORD (translatecomments) +static void +translatecomments () { unsigned int idx = 0; string_type out; @@ -587,7 +591,8 @@ WORD (translatecomments) /* turn everything not starting with a . into a comment */ -WORD (manglecomments) +static void +manglecomments () { unsigned int idx = 0; string_type out; @@ -665,7 +670,8 @@ outputdots (void) } /* Find lines starting with . and | and put example around them on tos */ -WORD (courierize) +static void +courierize () { string_type out; unsigned int idx = 0; @@ -686,37 +692,47 @@ WORD (courierize) while (at (tos, idx) && at (tos, idx) != '\n') { - if (at (tos, idx) == '{' && at (tos, idx + 1) == '*') + if (command > 1) + { + /* We are inside {} parameters of some command; + Just pass through until matching brace. */ + if (at (tos, idx) == '{') + ++command; + else if (at (tos, idx) == '}') + --command; + } + else if (command != 0) + { + if (at (tos, idx) == '{') + ++command; + else if (!islower ((unsigned char) at (tos, idx))) + --command; + } + else if (at (tos, idx) == '@' + && islower ((unsigned char) at (tos, idx + 1))) + { + ++command; + } + else if (at (tos, idx) == '{' && at (tos, idx + 1) == '*') { cattext (&out, "/*"); idx += 2; + continue; } else if (at (tos, idx) == '*' && at (tos, idx + 1) == '}') { cattext (&out, "*/"); idx += 2; + continue; } - else if (at (tos, idx) == '{' && !command) + else if (at (tos, idx) == '{' + || at (tos, idx) == '}') { - cattext (&out, "@{"); - idx++; - } - else if (at (tos, idx) == '}' && !command) - { - cattext (&out, "@}"); - idx++; - } - else - { - if (at (tos, idx) == '@') - command = 1; - else if (isspace ((unsigned char) at (tos, idx)) - || at (tos, idx) == '}') - command = 0; - catchar (&out, at (tos, idx)); - idx++; + catchar (&out, '@'); } + catchar (&out, at (tos, idx)); + idx++; } catchar (&out, '\n'); } @@ -741,7 +757,8 @@ WORD (courierize) on @itemize @bullet, and @items each of them. Then ends with @end itemize, inplace at TOS*/ -WORD (bulletize) +static void +bulletize () { unsigned int idx = 0; int on = 0; @@ -795,7 +812,8 @@ WORD (bulletize) /* Turn <> into @code{foo} in place at TOS*/ -WORD (do_fancy_stuff) +static void +do_fancy_stuff () { unsigned int idx = 0; string_type out; @@ -891,7 +909,8 @@ copy_past_newline (ptr, idx, dst) } -WORD (icopy_past_newline) +static void +icopy_past_newline () { tos++; check_range (); @@ -903,7 +922,8 @@ WORD (icopy_past_newline) /* indent Take the string at the top of the stack, do some prettying. */ -WORD (kill_bogus_lines) +static void +kill_bogus_lines () { int sl; @@ -989,7 +1009,8 @@ WORD (kill_bogus_lines) } -WORD (indent) +static void +indent () { string_type out; int tab = 0; @@ -1039,7 +1060,8 @@ WORD (indent) } -WORD (get_stuff_in_command) +static void +get_stuff_in_command () { tos++; check_range (); @@ -1054,7 +1076,8 @@ WORD (get_stuff_in_command) pc++; } -WORD (swap) +static void +swap () { string_type t; @@ -1064,7 +1087,8 @@ WORD (swap) pc++; } -WORD (other_dup) +static void +other_dup () { tos++; check_range (); @@ -1073,21 +1097,24 @@ WORD (other_dup) pc++; } -WORD (drop) +static void +drop () { tos--; check_range (); pc++; } -WORD (idrop) +static void +idrop () { isp--; icheck_range (); pc++; } -WORD (icatstr) +static void +icatstr () { tos--; check_range (); @@ -1096,7 +1123,8 @@ WORD (icatstr) pc++; } -WORD (skip_past_newline) +static void +skip_past_newline () { while (at (ptr, idx) && at (ptr, idx) != '\n') @@ -1105,7 +1133,8 @@ WORD (skip_past_newline) pc++; } -WORD (internalmode) +static void +internalmode () { internal_mode = *(isp); isp--; @@ -1113,7 +1142,8 @@ WORD (internalmode) pc++; } -WORD (maybecatstr) +static void +maybecatstr () { if (internal_wanted == internal_mode) { @@ -1390,19 +1420,22 @@ bang (void) pc++; } -WORD (atsign) +static void +atsign () { isp[0] = *(long *) (isp[0]); pc++; } -WORD (hello) +static void +hello () { printf ("hello\n"); pc++; } -WORD (stdout_) +static void +stdout_ () { isp++; icheck_range (); @@ -1410,7 +1443,8 @@ WORD (stdout_) pc++; } -WORD (stderr_) +static void +stderr_ () { isp++; icheck_range (); @@ -1418,7 +1452,8 @@ WORD (stderr_) pc++; } -WORD (print) +static void +print () { if (*isp == 1) write_buffer (tos, stdout); diff -uprN binutils-2.11.92.0.12.3/bfd/doc/proto.str binutils-2.11.93.0.2/bfd/doc/proto.str --- binutils-2.11.92.0.12.3/bfd/doc/proto.str Thu Jun 3 11:01:55 1999 +++ binutils-2.11.93.0.2/bfd/doc/proto.str Sun Feb 3 11:22:30 2002 @@ -114,7 +114,7 @@ skip_past_newline get_stuff_in_command strip_trailing_newlines - "\n{* " swap catstr " *}\n" catstr + "\n{* " swap catstr " *}\n" catstr translatecomments - discard it if we're doing internal mode "" swap 0 internalmode maybecatstr diff -uprN binutils-2.11.92.0.12.3/bfd/dwarf2.c binutils-2.11.93.0.2/bfd/dwarf2.c --- binutils-2.11.92.0.12.3/bfd/dwarf2.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/dwarf2.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* DWARF 2 support. - Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions @@ -396,7 +396,7 @@ 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 ); + offset, stash->dwarf_str_size); bfd_set_error (bfd_error_bad_value); return NULL; } @@ -556,8 +556,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 abbrev size (%u)."), - 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_set_error (bfd_error_bad_value); return 0; } @@ -949,7 +949,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 line size (%u)."), + (*_bfd_error_handler) (_("Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)."), unit->line_offset, stash->dwarf_line_size); bfd_set_error (bfd_error_bad_value); return 0; @@ -1456,16 +1456,13 @@ 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; struct abbrev_info** abbrevs; - unsigned int abbrev_number, bytes_read, i; struct abbrev_info *abbrev; struct attribute attr; - char *info_ptr = stash->info_ptr; char *end_ptr = info_ptr + unit_length; bfd_size_type amt; @@ -1490,7 +1487,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 '%hu', this reader only handles version 2 information."), version); bfd_set_error (bfd_error_bad_value); return 0; } @@ -1506,7 +1503,7 @@ parse_comp_unit (abfd, stash, unit_lengt if (addr_size != 2 && addr_size != 4 && addr_size != 8) { - (*_bfd_error_handler) ("Dwarf Error: found address size '%u', this reader can only handle address sizes '2', '4' and '8'.", addr_size ); + (*_bfd_error_handler) ("Dwarf Error: found address size '%u', this reader can only handle address sizes '2', '4' and '8'.", addr_size); bfd_set_error (bfd_error_bad_value); return 0; } diff -uprN binutils-2.11.92.0.12.3/bfd/elf-bfd.h binutils-2.11.93.0.2/bfd/elf-bfd.h --- binutils-2.11.92.0.12.3/bfd/elf-bfd.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf-bfd.h Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* BFD back-end data structures for ELF files. - 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. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -229,6 +229,16 @@ struct elf_link_loaded_list bfd *abfd; }; +enum elf_link_info_type +{ + ELF_INFO_TYPE_NONE, + ELF_INFO_TYPE_STABS, + ELF_INFO_TYPE_MERGE, + ELF_INFO_TYPE_EH_FRAME, + ELF_INFO_TYPE_EH_FRAME_HDR, + ELF_INFO_TYPE_LAST +}; + /* ELF linker hash table. */ struct elf_link_hash_table @@ -340,7 +350,7 @@ struct elf_size_info { void (*write_relocs) PARAMS ((bfd *, asection *, PTR)); void (*swap_symbol_out) - PARAMS ((bfd *, const Elf_Internal_Sym *, PTR)); + PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR)); boolean (*slurp_reloc_table) PARAMS ((bfd *, asection *, asymbol **, boolean)); long (*slurp_symbol_table) @@ -392,7 +402,8 @@ enum elf_reloc_type_class { struct elf_reloc_cookie { Elf_Internal_Rela *rels, *rel, *relend; - void *locsyms; + PTR locsyms; + PTR locsym_shndx; bfd *abfd; size_t locsymcount; size_t extsymoff; @@ -490,7 +501,7 @@ struct elf_backend_data section, *RETVAL should be left unchanged. If it is not a normal ELF section *RETVAL should be set to the SHN_xxxx index. */ boolean (*elf_backend_section_from_bfd_section) - PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *retval)); + PARAMS ((bfd *, asection *, int *retval)); /* If this field is not NULL, it is called by the add_symbols phase of a link just before adding a symbol to the global linker hash @@ -690,7 +701,7 @@ struct elf_backend_data /* Modify any information related to dynamic linking such that the symbol is not exported. */ void (*elf_backend_hide_symbol) - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); /* Emit relocations. Overrides default routine for emitting relocs, except during a relocatable link, or if all relocs are being emitted. */ @@ -856,11 +867,11 @@ struct bfd_elf_section_data no dynamic symbol for this section. */ long dynindx; - /* A pointer used for .stab linking optimizations. */ - PTR stab_info; + /* A pointer used for various section optimizations. */ + PTR sec_info; - /* A pointer used for SEC_MERGE optimizations. */ - PTR merge_info; + /* Type of that information. */ + enum elf_link_info_type sec_info_type; /* Group name, if this section is part of a group. */ const char *group_name; @@ -880,6 +891,12 @@ struct bfd_elf_section_data #define elf_group_name(sec) (elf_section_data(sec)->group_name) #define elf_next_in_group(sec) (elf_section_data(sec)->next_in_group) +/* Return true if section has been discarded. */ +#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) + #define get_elf_backend_data(abfd) \ ((struct elf_backend_data *) (abfd)->xvec->backend_data) @@ -941,6 +958,7 @@ struct elf_obj_tdata struct elf_strtab_hash *strtab_ptr; int num_locals; int num_globals; + unsigned int num_elf_sections; /* elf_sect_ptr size */ int num_section_syms; asymbol **section_syms; /* STT_SECTION symbols for each section */ Elf_Internal_Shdr symtab_hdr; @@ -951,8 +969,10 @@ struct elf_obj_tdata Elf_Internal_Shdr dynversym_hdr; Elf_Internal_Shdr dynverref_hdr; Elf_Internal_Shdr dynverdef_hdr; + Elf_Internal_Shdr symtab_shndx_hdr; unsigned int symtab_section, shstrtab_section; unsigned int strtab_section, dynsymtab_section; + unsigned int symtab_shndx_section; unsigned int dynversym_section, dynverdef_section, dynverref_section; file_ptr next_file_pos; #if 0 @@ -1051,6 +1071,10 @@ struct elf_obj_tdata /* Used to determine if the e_flags field has been initialized */ boolean flags_init; + /* Used to determine if PT_GNU_EH_FRAME segment header should be + created. */ + boolean eh_frame_hdr; + /* Number of symbol version definitions we are about to emit. */ unsigned int cverdefs; @@ -1077,8 +1101,10 @@ struct elf_obj_tdata #define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data) #define elf_elfheader(bfd) (elf_tdata(bfd) -> elf_header) #define elf_elfsections(bfd) (elf_tdata(bfd) -> elf_sect_ptr) +#define elf_numsections(bfd) (elf_tdata(bfd) -> num_elf_sections) #define elf_shstrtab(bfd) (elf_tdata(bfd) -> strtab_ptr) #define elf_onesymtab(bfd) (elf_tdata(bfd) -> symtab_section) +#define elf_symtab_shndx(bfd) (elf_tdata(bfd) -> symtab_shndx_section) #define elf_dynsymtab(bfd) (elf_tdata(bfd) -> dynsymtab_section) #define elf_dynversym(bfd) (elf_tdata(bfd) -> dynversym_section) #define elf_dynverdef(bfd) (elf_tdata(bfd) -> dynverdef_section) @@ -1129,6 +1155,8 @@ extern char *bfd_elf_string_from_elf_sec extern char *bfd_elf_get_str_section PARAMS ((bfd *, unsigned)); +extern boolean _bfd_elf_copy_private_bfd_data + PARAMS ((bfd *, bfd *)); extern boolean _bfd_elf_print_private_bfd_data PARAMS ((bfd *, PTR)); extern void bfd_elf_print_symbol @@ -1148,6 +1176,12 @@ extern void _bfd_elf_fprintf_vma extern enum elf_reloc_type_class _bfd_elf_reloc_type_class PARAMS ((const Elf_Internal_Rela *)); +extern bfd_vma _bfd_elf_rela_local_sym + PARAMS ((bfd *, Elf_Internal_Sym *, asection *, Elf_Internal_Rela *)); +extern bfd_vma _bfd_elf_rel_local_sym + PARAMS ((bfd *, Elf_Internal_Sym *, asection **, bfd_vma)); +extern bfd_vma _bfd_elf_section_offset + PARAMS ((bfd *, struct bfd_link_info *, asection *, bfd_vma)); extern unsigned long bfd_elf_hash PARAMS ((const char *)); @@ -1171,7 +1205,7 @@ extern struct bfd_link_hash_table *_bfd_ extern void _bfd_elf_link_hash_copy_indirect PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); extern void _bfd_elf_link_hash_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); extern boolean _bfd_elf_link_hash_table_init PARAMS ((struct elf_link_hash_table *, bfd *, struct bfd_hash_entry *(*) (struct bfd_hash_entry *, @@ -1273,6 +1307,20 @@ extern boolean _bfd_elf_strtab_emit extern void _bfd_elf_strtab_finalize PARAMS ((struct elf_strtab_hash *)); +extern boolean _bfd_elf_discard_section_eh_frame + PARAMS ((bfd *, struct bfd_link_info *, asection *, asection *, + boolean (*) (bfd_vma, PTR), struct elf_reloc_cookie *)); +extern boolean _bfd_elf_discard_section_eh_frame_hdr + PARAMS ((bfd *, struct bfd_link_info *, asection *)); +extern bfd_vma _bfd_elf_eh_frame_section_offset + PARAMS ((bfd *, asection *, bfd_vma)); +extern boolean _bfd_elf_write_section_eh_frame + PARAMS ((bfd *, asection *, asection *, bfd_byte *)); +extern boolean _bfd_elf_write_section_eh_frame_hdr + PARAMS ((bfd *, asection *)); +extern boolean _bfd_elf_maybe_strip_eh_frame_hdr + PARAMS ((struct bfd_link_info *)); + extern boolean _bfd_elf_link_record_dynamic_symbol PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); extern long _bfd_elf_link_lookup_local_dynindx @@ -1345,9 +1393,10 @@ extern boolean bfd_elf32_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *)); extern void bfd_elf32_swap_symbol_in - PARAMS ((bfd *, const Elf32_External_Sym *, Elf_Internal_Sym *)); + PARAMS ((bfd *, const Elf32_External_Sym *, const Elf_External_Sym_Shndx *, + Elf_Internal_Sym *)); extern void bfd_elf32_swap_symbol_out - PARAMS ((bfd *, const Elf_Internal_Sym *, PTR)); + PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR)); extern void bfd_elf32_swap_reloc_in PARAMS ((bfd *, const Elf32_External_Rel *, Elf_Internal_Rel *)); extern void bfd_elf32_swap_reloc_out @@ -1397,9 +1446,10 @@ extern boolean bfd_elf64_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *)); extern void bfd_elf64_swap_symbol_in - PARAMS ((bfd *, const Elf64_External_Sym *, Elf_Internal_Sym *)); + PARAMS ((bfd *, const Elf64_External_Sym *, const Elf_External_Sym_Shndx *, + Elf_Internal_Sym *)); extern void bfd_elf64_swap_symbol_out - PARAMS ((bfd *, const Elf_Internal_Sym *, PTR)); + PARAMS ((bfd *, const Elf_Internal_Sym *, PTR, PTR)); extern void bfd_elf64_swap_reloc_in PARAMS ((bfd *, const Elf64_External_Rel *, Elf_Internal_Rel *)); extern void bfd_elf64_swap_reloc_out @@ -1476,6 +1526,20 @@ extern boolean _bfd_elf32_reloc_symbol_d extern boolean _bfd_elf64_reloc_symbol_deleted_p PARAMS ((bfd_vma, PTR)); +/* Exported interface for writing elf corefile notes. */ +extern char *elfcore_write_note + PARAMS ((bfd *, char *, int *, char *, int, void *, int)); +extern char *elfcore_write_prpsinfo + PARAMS ((bfd *, char *, int *, char *, char *)); +extern char *elfcore_write_prstatus + PARAMS ((bfd *, char *, int *, long, int, void *)); +extern char * elfcore_write_pstatus + PARAMS ((bfd *, char *, int *, long, int, void *)); +extern char *elfcore_write_prfpreg + PARAMS ((bfd *, char *, int *, void *, int)); +extern char *elfcore_write_prxfpreg + PARAMS ((bfd *, char *, int *, void *, int)); + /* MIPS ELF specific routines. */ extern boolean _bfd_mips_elf_object_p @@ -1485,7 +1549,7 @@ extern boolean _bfd_mips_elf_section_fro extern boolean _bfd_mips_elf_fake_sections PARAMS ((bfd *, Elf_Internal_Shdr *, asection *)); extern boolean _bfd_mips_elf_section_from_bfd_section - PARAMS ((bfd *, Elf_Internal_Shdr *, asection *, int *)); + PARAMS ((bfd *, asection *, int *)); extern boolean _bfd_mips_elf_section_processing PARAMS ((bfd *, Elf_Internal_Shdr *)); extern void _bfd_mips_elf_symbol_processing @@ -1506,8 +1570,6 @@ extern bfd_reloc_status_type _bfd_mips_e PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); extern boolean _bfd_mips_elf_set_private_flags PARAMS ((bfd *, flagword)); -extern boolean _bfd_mips_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); extern boolean _bfd_mips_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); extern boolean _bfd_mips_elf_find_nearest_line diff -uprN binutils-2.11.92.0.12.3/bfd/elf-eh-frame.c binutils-2.11.93.0.2/bfd/elf-eh-frame.c --- binutils-2.11.92.0.12.3/bfd/elf-eh-frame.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/elf-eh-frame.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,1212 @@ +/* .eh_frame section optimization. + Copyright 2001, 2002 Free Software Foundation, Inc. + Written by Jakub Jelinek . + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/dwarf2.h" + +#define EH_FRAME_HDR_SIZE 8 + +struct cie_header +{ + unsigned int length; + unsigned int id; +}; + +struct cie +{ + struct cie_header hdr; + unsigned char version; + unsigned char augmentation[20]; + unsigned int code_align; + int data_align; + unsigned int ra_column; + unsigned int augmentation_size; + struct elf_link_hash_entry *personality; + unsigned char per_encoding; + unsigned char lsda_encoding; + unsigned char fde_encoding; + unsigned char initial_insn_length; + unsigned char make_relative; + unsigned char make_lsda_relative; + unsigned char initial_instructions[50]; +}; + +struct eh_cie_fde +{ + unsigned int offset; + unsigned int size; + asection *sec; + unsigned int new_offset; + unsigned char fde_encoding; + unsigned char lsda_encoding; + unsigned char lsda_offset; + unsigned char cie : 1; + unsigned char removed : 1; + unsigned char make_relative : 1; + unsigned char make_lsda_relative : 1; +}; + +struct eh_frame_sec_info +{ + unsigned int count; + unsigned int alloced; + struct eh_cie_fde entry[1]; +}; + +struct eh_frame_array_ent +{ + bfd_vma initial_loc; + bfd_vma fde; +}; + +struct eh_frame_hdr_info +{ + struct cie last_cie; + asection *last_cie_sec; + unsigned int last_cie_offset; + unsigned int fde_count, array_count; + struct eh_frame_array_ent *array; + /* TRUE if .eh_frame_hdr should contain the sorted search table. + We build it if we successfully read all .eh_frame input sections + and recognize them. */ + boolean table; + boolean strip; +}; + +static bfd_vma read_unsigned_leb128 + PARAMS ((bfd *, char *, unsigned int *)); +static bfd_signed_vma read_signed_leb128 + PARAMS ((bfd *, char *, unsigned int *)); +static int get_DW_EH_PE_width + PARAMS ((int, int)); +static bfd_vma read_value + PARAMS ((bfd *, bfd_byte *, int)); +static void write_value + PARAMS ((bfd *, bfd_byte *, bfd_vma, int)); +static int cie_compare + PARAMS ((struct cie *, struct cie *)); +static int vma_compare + PARAMS ((const PTR a, const PTR b)); + +/* Helper function for reading uleb128 encoded data. */ + +static bfd_vma +read_unsigned_leb128 (abfd, buf, bytes_read_ptr) + bfd *abfd ATTRIBUTE_UNUSED; + char *buf; + unsigned int *bytes_read_ptr; +{ + bfd_vma result; + unsigned int num_read; + int shift; + unsigned char byte; + + result = 0; + shift = 0; + num_read = 0; + do + { + byte = bfd_get_8 (abfd, (bfd_byte *) buf); + buf ++; + num_read ++; + result |= (((bfd_vma) byte & 0x7f) << shift); + shift += 7; + } + while (byte & 0x80); + * bytes_read_ptr = num_read; + return result; +} + +/* Helper function for reading sleb128 encoded data. */ + +static bfd_signed_vma +read_signed_leb128 (abfd, buf, bytes_read_ptr) + bfd *abfd ATTRIBUTE_UNUSED; + char *buf; + unsigned int * bytes_read_ptr; +{ + bfd_vma result; + int shift; + int num_read; + unsigned char byte; + + result = 0; + shift = 0; + num_read = 0; + do + { + byte = bfd_get_8 (abfd, (bfd_byte *) buf); + buf ++; + num_read ++; + result |= (((bfd_vma) byte & 0x7f) << shift); + shift += 7; + } + while (byte & 0x80); + if (byte & 0x40) + result |= (((bfd_vma) -1) << (shift - 7)) << 7; + * bytes_read_ptr = num_read; + return result; +} + +#define read_uleb128(VAR, BUF) \ +do \ + { \ + (VAR) = read_unsigned_leb128 (abfd, buf, &leb128_tmp); \ + (BUF) += leb128_tmp; \ + } \ +while (0) + +#define read_sleb128(VAR, BUF) \ +do \ + { \ + (VAR) = read_signed_leb128 (abfd, buf, &leb128_tmp); \ + (BUF) += leb128_tmp; \ + } \ +while (0) + +/* Return 0 if either encoding is variable width, or not yet known to bfd. */ + +static +int get_DW_EH_PE_width (encoding, ptr_size) + int encoding, ptr_size; +{ + /* DW_EH_PE_ values of 0x60 and 0x70 weren't defined at the time .eh_frame + was added to bfd. */ + if ((encoding & 0x60) == 0x60) + return 0; + + switch (encoding & 7) + { + case DW_EH_PE_udata2: return 2; + case DW_EH_PE_udata4: return 4; + case DW_EH_PE_udata8: return 8; + case DW_EH_PE_absptr: return ptr_size; + default: + break; + } + + return 0; +} + +/* Read a width sized value from memory. */ + +static bfd_vma +read_value (abfd, buf, width) + bfd *abfd; + bfd_byte *buf; + int width; +{ + bfd_vma value; + + switch (width) + { + case 2: value = bfd_get_16 (abfd, buf); break; + case 4: value = bfd_get_32 (abfd, buf); break; + case 8: value = bfd_get_64 (abfd, buf); break; + default: BFD_FAIL (); return 0; + } + + return value; +} + +/* Store a width sized value to memory. */ + +static void +write_value (abfd, buf, value, width) + bfd *abfd; + bfd_byte *buf; + bfd_vma value; + int width; +{ + switch (width) + { + case 2: bfd_put_16 (abfd, value, buf); break; + case 4: bfd_put_32 (abfd, value, buf); break; + case 8: bfd_put_64 (abfd, value, buf); break; + default: BFD_FAIL (); + } +} + +/* Return zero if C1 and C2 CIEs can be merged. */ + +static +int cie_compare (c1, c2) + struct cie *c1, *c2; +{ + if (c1->hdr.length == c2->hdr.length + && c1->version == c2->version + && strcmp (c1->augmentation, c2->augmentation) == 0 + && strcmp (c1->augmentation, "eh") != 0 + && c1->code_align == c2->code_align + && c1->data_align == c2->data_align + && c1->ra_column == c2->ra_column + && c1->augmentation_size == c2->augmentation_size + && c1->personality == c2->personality + && c1->per_encoding == c2->per_encoding + && c1->lsda_encoding == c2->lsda_encoding + && c1->fde_encoding == c2->fde_encoding + && (c1->initial_insn_length + == c2->initial_insn_length) + && memcmp (c1->initial_instructions, + c2->initial_instructions, + c1->initial_insn_length) == 0) + return 0; + + return 1; +} + +/* This function is called for each input file before the .eh_frame + section is relocated. It discards duplicate CIEs and FDEs for discarded + functions. The function returns true iff any entries have been + deleted. */ + +boolean +_bfd_elf_discard_section_eh_frame (abfd, info, sec, ehdrsec, + reloc_symbol_deleted_p, cookie) + bfd *abfd; + struct bfd_link_info *info; + asection *sec, *ehdrsec; + boolean (*reloc_symbol_deleted_p) (bfd_vma, PTR); + struct elf_reloc_cookie *cookie; +{ + bfd_byte *ehbuf = NULL, *buf; + bfd_byte *last_cie, *last_fde; + struct cie_header hdr; + struct cie cie; + struct eh_frame_hdr_info *hdr_info; + struct eh_frame_sec_info *sec_info = NULL; + unsigned int leb128_tmp; + unsigned int cie_usage_count, last_cie_ndx, i, offset; + unsigned int make_relative, make_lsda_relative; + Elf_Internal_Rela *rel; + bfd_size_type new_size; + unsigned int ptr_size; + + if (sec->_raw_size == 0) + { + /* This file does not contain .eh_frame information. */ + return false; + } + + if ((sec->output_section != NULL + && bfd_is_abs_section (sec->output_section))) + { + /* At least one of the sections is being discarded from the + link, so we should just ignore them. */ + return false; + } + + BFD_ASSERT (elf_section_data (ehdrsec)->sec_info_type + == ELF_INFO_TYPE_EH_FRAME_HDR); + hdr_info = (struct eh_frame_hdr_info *) + elf_section_data (ehdrsec)->sec_info; + + /* Read the frame unwind information from abfd. */ + + ehbuf = (bfd_byte *) bfd_malloc (sec->_raw_size); + if (ehbuf == NULL) + goto free_no_table; + + if (! bfd_get_section_contents (abfd, sec, ehbuf, (bfd_vma) 0, + sec->_raw_size)) + goto free_no_table; + + if (sec->_raw_size >= 4 + && bfd_get_32 (abfd, ehbuf) == 0 + && cookie->rel == cookie->relend) + { + /* Empty .eh_frame section. */ + free (ehbuf); + return false; + } + + /* If .eh_frame section size doesn't fit into int, we cannot handle + it (it would need to use 64-bit .eh_frame format anyway). */ + if (sec->_raw_size != (unsigned int) sec->_raw_size) + goto free_no_table; + + ptr_size = (elf_elfheader (abfd)->e_ident[EI_CLASS] + == ELFCLASS64) ? 8 : 4; + buf = ehbuf; + last_cie = NULL; + last_cie_ndx = 0; + memset (&cie, 0, sizeof (cie)); + cie_usage_count = 0; + new_size = sec->_raw_size; + make_relative = hdr_info->last_cie.make_relative; + make_lsda_relative = hdr_info->last_cie.make_lsda_relative; + sec_info = bfd_zmalloc (sizeof (struct eh_frame_sec_info) + + 99 * sizeof (struct eh_cie_fde)); + if (sec_info == NULL) + goto free_no_table; + sec_info->alloced = 100; + +#define ENSURE_NO_RELOCS(buf) \ + if (cookie->rel < cookie->relend \ + && (cookie->rel->r_offset \ + < (bfd_size_type) ((buf) - ehbuf))) \ + goto free_no_table + +#define SKIP_RELOCS(buf) \ + while (cookie->rel < cookie->relend \ + && (cookie->rel->r_offset \ + < (bfd_size_type) ((buf) - ehbuf))) \ + cookie->rel++ + +#define GET_RELOC(buf) \ + ((cookie->rel < cookie->relend \ + && (cookie->rel->r_offset \ + == (bfd_size_type) ((buf) - ehbuf))) \ + ? cookie->rel : NULL) + + for (;;) + { + unsigned char *aug; + + if (sec_info->count == sec_info->alloced) + { + sec_info = bfd_realloc (sec_info, + sizeof (struct eh_frame_sec_info) + + (sec_info->alloced + 99) + * sizeof (struct eh_cie_fde)); + if (sec_info == NULL) + goto free_no_table; + + memset (&sec_info->entry[sec_info->alloced], 0, + 100 * sizeof (struct eh_cie_fde)); + sec_info->alloced += 100; + } + + last_fde = buf; + /* If we are at the end of the section, we still need to decide + on whether to output or discard last encountered CIE (if any). */ + if ((bfd_size_type) (buf - ehbuf) == sec->_raw_size) + hdr.id = (unsigned int) -1; + else + { + if ((bfd_size_type) (buf + 4 - ehbuf) > sec->_raw_size) + /* No space for CIE/FDE header length. */ + goto free_no_table; + + hdr.length = bfd_get_32 (abfd, buf); + if (hdr.length == 0xffffffff) + /* 64-bit .eh_frame is not supported. */ + goto free_no_table; + buf += 4; + if ((buf - ehbuf) + hdr.length > sec->_raw_size) + /* CIE/FDE not contained fully in this .eh_frame input section. */ + goto free_no_table; + + sec_info->entry[sec_info->count].offset = last_fde - ehbuf; + sec_info->entry[sec_info->count].size = 4 + hdr.length; + + if (hdr.length == 0) + { + /* CIE with length 0 must be only the last in the section. */ + if ((bfd_size_type) (buf - ehbuf) < sec->_raw_size) + goto free_no_table; + ENSURE_NO_RELOCS (buf); + sec_info->count++; + /* Now just finish last encountered CIE processing and break + the loop. */ + hdr.id = (unsigned int) -1; + } + else + { + hdr.id = bfd_get_32 (abfd, buf); + buf += 4; + if (hdr.id == (unsigned int) -1) + goto free_no_table; + } + } + + if (hdr.id == 0 || hdr.id == (unsigned int) -1) + { + unsigned int initial_insn_length; + + /* CIE */ + if (last_cie != NULL) + { + /* Now check if this CIE is identical to last CIE, in which case + we can remove it, provided we adjust all FDEs. + Also, it can be removed if we have removed all FDEs using + that. */ + if (cie_compare (&cie, &hdr_info->last_cie) == 0 + || cie_usage_count == 0) + { + new_size -= cie.hdr.length + 4; + sec_info->entry[last_cie_ndx].removed = 1; + sec_info->entry[last_cie_ndx].sec = hdr_info->last_cie_sec; + sec_info->entry[last_cie_ndx].new_offset + = hdr_info->last_cie_offset; + } + else + { + hdr_info->last_cie = cie; + hdr_info->last_cie_sec = sec; + hdr_info->last_cie_offset = last_cie - ehbuf; + sec_info->entry[last_cie_ndx].make_relative + = cie.make_relative; + sec_info->entry[last_cie_ndx].make_lsda_relative + = cie.make_lsda_relative; + } + } + + if (hdr.id == (unsigned int) -1) + break; + + last_cie_ndx = sec_info->count; + sec_info->entry[sec_info->count].cie = 1; + + cie_usage_count = 0; + memset (&cie, 0, sizeof (cie)); + cie.hdr = hdr; + cie.version = *buf++; + + /* Cannot handle unknown versions. */ + if (cie.version != 1) + goto free_no_table; + if (strlen (buf) > sizeof (cie.augmentation) - 1) + goto free_no_table; + + strcpy (cie.augmentation, buf); + buf = strchr (buf, '\0') + 1; + ENSURE_NO_RELOCS (buf); + if (buf[0] == 'e' && buf[1] == 'h') + { + /* GCC < 3.0 .eh_frame CIE */ + /* We cannot merge "eh" CIEs because __EXCEPTION_TABLE__ + is private to each CIE, so we don't need it for anything. + Just skip it. */ + buf += ptr_size; + SKIP_RELOCS (buf); + } + read_uleb128 (cie.code_align, buf); + read_sleb128 (cie.data_align, buf); + read_uleb128 (cie.ra_column, buf); + ENSURE_NO_RELOCS (buf); + cie.lsda_encoding = DW_EH_PE_omit; + cie.fde_encoding = DW_EH_PE_omit; + cie.per_encoding = DW_EH_PE_omit; + aug = cie.augmentation; + if (aug[0] != 'e' || aug[1] != 'h') + { + if (*aug == 'z') + { + aug++; + read_uleb128 (cie.augmentation_size, buf); + ENSURE_NO_RELOCS (buf); + } + + while (*aug != '\0') + switch (*aug++) + { + case 'L': + cie.lsda_encoding = *buf++; + ENSURE_NO_RELOCS (buf); + if (get_DW_EH_PE_width (cie.lsda_encoding, ptr_size) == 0) + goto free_no_table; + break; + case 'R': + cie.fde_encoding = *buf++; + ENSURE_NO_RELOCS (buf); + if (get_DW_EH_PE_width (cie.fde_encoding, ptr_size) == 0) + goto free_no_table; + break; + case 'P': + { + int per_width; + + cie.per_encoding = *buf++; + per_width = get_DW_EH_PE_width (cie.per_encoding, + ptr_size); + if (per_width == 0) + goto free_no_table; + if ((cie.per_encoding & 0xf0) == DW_EH_PE_aligned) + buf = (ehbuf + + ((buf - ehbuf + per_width - 1) + & ~((bfd_size_type) per_width - 1))); + ENSURE_NO_RELOCS (buf); + rel = GET_RELOC (buf); + /* Ensure we have a reloc here, against + a global symbol. */ + if (rel != NULL) + { + unsigned long r_symndx; + +#ifdef BFD64 + if (ptr_size == 8) + r_symndx = ELF64_R_SYM (cookie->rel->r_info); + else +#endif + r_symndx = ELF32_R_SYM (cookie->rel->r_info); + if (r_symndx >= cookie->locsymcount) + { + struct elf_link_hash_entry *h; + + r_symndx -= cookie->extsymoff; + h = cookie->sym_hashes[r_symndx]; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) + h->root.u.i.link; + + cie.personality = h; + } + cookie->rel++; + } + buf += per_width; + } + break; + default: + /* Unrecognized augmentation. Better bail out. */ + goto free_no_table; + } + } + + /* For shared libraries, try to get rid of as many RELATIVE relocs + as possible. + FIXME: For this to work, ELF backends need to perform the + relocation if omitting dynamic relocs, not skip it. */ + if (0 + && info->shared + && (cie.fde_encoding & 0xf0) == DW_EH_PE_absptr) + cie.make_relative = 1; + + if (0 + && info->shared + && (cie.lsda_encoding & 0xf0) == DW_EH_PE_absptr) + cie.make_lsda_relative = 1; + + /* If FDE encoding was not specified, it defaults to + DW_EH_absptr. */ + if (cie.fde_encoding == DW_EH_PE_omit) + cie.fde_encoding = DW_EH_PE_absptr; + + initial_insn_length = cie.hdr.length - (buf - last_fde - 4); + if (initial_insn_length <= 50) + { + cie.initial_insn_length = initial_insn_length; + memcpy (cie.initial_instructions, buf, initial_insn_length); + } + buf += initial_insn_length; + ENSURE_NO_RELOCS (buf); + last_cie = last_fde; + } + else + { + /* Ensure this FDE uses the last CIE encountered. */ + if (last_cie == NULL + || hdr.id != (unsigned int) (buf - 4 - last_cie)) + goto free_no_table; + + ENSURE_NO_RELOCS (buf); + rel = GET_RELOC (buf); + if (rel == NULL) + /* This should not happen. */ + goto free_no_table; + if ((*reloc_symbol_deleted_p) (buf - ehbuf, cookie)) + { + cookie->rel = rel; + /* This is a FDE against discarded section, it should + be deleted. */ + new_size -= hdr.length + 4; + sec_info->entry[sec_info->count].removed = 1; + } + else + { + cie_usage_count++; + hdr_info->fde_count++; + } + cookie->rel = rel; + if (cie.lsda_encoding != DW_EH_PE_omit) + { + unsigned int dummy; + + aug = buf; + buf += 2 * get_DW_EH_PE_width (cie.fde_encoding, ptr_size); + if (cie.augmentation[0] == 'z') + read_uleb128 (dummy, buf); + /* If some new augmentation data is added before LSDA + in FDE augmentation area, this need to be adjusted. */ + sec_info->entry[sec_info->count].lsda_offset = (buf - aug); + } + buf = last_fde + 4 + hdr.length; + SKIP_RELOCS (buf); + } + + sec_info->entry[sec_info->count].fde_encoding = cie.fde_encoding; + sec_info->entry[sec_info->count].lsda_encoding = cie.lsda_encoding; + sec_info->count++; + } + + elf_section_data (sec)->sec_info = sec_info; + elf_section_data (sec)->sec_info_type = ELF_INFO_TYPE_EH_FRAME; + + /* Ok, now we can assign new offsets. */ + offset = 0; + last_cie_ndx = 0; + for (i = 0; i < sec_info->count; i++) + { + if (! sec_info->entry[i].removed) + { + sec_info->entry[i].new_offset = offset; + offset += sec_info->entry[i].size; + if (sec_info->entry[i].cie) + { + last_cie_ndx = i; + make_relative = sec_info->entry[i].make_relative; + make_lsda_relative = sec_info->entry[i].make_lsda_relative; + } + else + { + sec_info->entry[i].make_relative = make_relative; + sec_info->entry[i].make_lsda_relative = make_lsda_relative; + } + } + else if (sec_info->entry[i].cie && sec_info->entry[i].sec == sec) + { + /* Need to adjust new_offset too. */ + BFD_ASSERT (sec_info->entry[last_cie_ndx].offset + == sec_info->entry[i].new_offset); + sec_info->entry[i].new_offset + = sec_info->entry[last_cie_ndx].new_offset; + } + } + if (hdr_info->last_cie_sec == sec) + { + BFD_ASSERT (sec_info->entry[last_cie_ndx].offset + == hdr_info->last_cie_offset); + hdr_info->last_cie_offset = sec_info->entry[last_cie_ndx].new_offset; + } + + /* FIXME: Currently it is not possible to shrink sections to zero size at + this point, so build a fake minimal CIE. */ + if (new_size == 0) + new_size = 16; + + /* Shrink the sec as needed. */ + sec->_cooked_size = new_size; + if (sec->_cooked_size == 0) + sec->flags |= SEC_EXCLUDE; + + free (ehbuf); + return new_size != sec->_raw_size; + +free_no_table: + if (ehbuf) + free (ehbuf); + if (sec_info) + free (sec_info); + hdr_info->table = false; + hdr_info->last_cie.hdr.length = 0; + return false; +} + +/* This function is called for .eh_frame_hdr section after + _bfd_elf_discard_section_eh_frame has been called on all .eh_frame + input sections. It finalizes the size of .eh_frame_hdr section. */ + +boolean +_bfd_elf_discard_section_eh_frame_hdr (abfd, info, sec) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; +{ + struct eh_frame_hdr_info *hdr_info; + unsigned int ptr_size; + + ptr_size = (elf_elfheader (abfd)->e_ident[EI_CLASS] + == ELFCLASS64) ? 8 : 4; + + if ((elf_section_data (sec)->sec_info_type + != ELF_INFO_TYPE_EH_FRAME_HDR) + || ! info->eh_frame_hdr) + { + _bfd_strip_section_from_output (info, sec); + return false; + } + + hdr_info = (struct eh_frame_hdr_info *) + elf_section_data (sec)->sec_info; + if (hdr_info->strip) + return false; + sec->_cooked_size = EH_FRAME_HDR_SIZE; + if (hdr_info->table) + sec->_cooked_size += 4 + hdr_info->fde_count * 8; + + /* Request program headers to be recalculated. */ + elf_tdata (abfd)->program_header_size = 0; + elf_tdata (abfd)->eh_frame_hdr = true; + return true; +} + +/* This function is called from size_dynamic_sections. + It needs to decide whether .eh_frame_hdr should be output or not, + because later on it is too late for calling _bfd_strip_section_from_output, + since dynamic symbol table has been sized. */ + +boolean +_bfd_elf_maybe_strip_eh_frame_hdr (info) + struct bfd_link_info *info; +{ + asection *sec, *o; + bfd *abfd; + struct eh_frame_hdr_info *hdr_info; + + sec = bfd_get_section_by_name (elf_hash_table (info)->dynobj, ".eh_frame_hdr"); + if (sec == NULL) + return true; + + hdr_info + = bfd_zmalloc (sizeof (struct eh_frame_hdr_info)); + if (hdr_info == NULL) + return false; + + elf_section_data (sec)->sec_info = hdr_info; + elf_section_data (sec)->sec_info_type = ELF_INFO_TYPE_EH_FRAME_HDR; + + abfd = NULL; + if (info->eh_frame_hdr) + for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link_next) + { + /* 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) + break; + } + + if (abfd == NULL) + { + _bfd_strip_section_from_output (info, sec); + hdr_info->strip = true; + } + else + hdr_info->table = true; + return true; +} + +/* Adjust an address in the .eh_frame section. Given OFFSET within + SEC, this returns the new offset in the adjusted .eh_frame section, + or -1 if the address refers to a CIE/FDE which has been removed + or to offset with dynamic relocation which is no longer needed. */ + +bfd_vma +_bfd_elf_eh_frame_section_offset (output_bfd, sec, offset) + bfd *output_bfd ATTRIBUTE_UNUSED; + asection *sec; + bfd_vma offset; +{ + struct eh_frame_sec_info *sec_info; + unsigned int lo, hi, mid; + + if (elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_EH_FRAME) + return offset; + sec_info = (struct eh_frame_sec_info *) + elf_section_data (sec)->sec_info; + + if (offset >= sec->_raw_size) + return offset - (sec->_cooked_size - sec->_raw_size); + + lo = 0; + hi = sec_info->count; + mid = 0; + while (lo < hi) + { + mid = (lo + hi) / 2; + if (offset < sec_info->entry[mid].offset) + hi = mid; + else if (offset + >= sec_info->entry[mid].offset + sec_info->entry[mid].size) + lo = mid + 1; + else + break; + } + + BFD_ASSERT (lo < hi); + + /* FDE or CIE was removed. */ + if (sec_info->entry[mid].removed) + return (bfd_vma) -1; + + /* If converting to DW_EH_PE_pcrel, there will be no need for run-time + relocation against FDE's initial_location field. */ + if (sec_info->entry[mid].make_relative + && ! sec_info->entry[mid].cie + && offset == sec_info->entry[mid].offset + 8) + return (bfd_vma) -1; + + /* If converting LSDA pointers to DW_EH_PE_pcrel, there will be no need + for run-time relocation against LSDA field. */ + if (sec_info->entry[mid].make_lsda_relative + && ! sec_info->entry[mid].cie + && (offset + == (sec_info->entry[mid].offset + 8 + + sec_info->entry[mid].lsda_offset))) + return (bfd_vma) -1; + + return (offset + sec_info->entry[mid].new_offset + - sec_info->entry[mid].offset); +} + +/* Write out .eh_frame section. This is called with the relocated + contents. */ + +boolean +_bfd_elf_write_section_eh_frame (abfd, sec, ehdrsec, contents) + bfd *abfd; + asection *sec, *ehdrsec; + bfd_byte *contents; +{ + struct eh_frame_sec_info *sec_info; + struct eh_frame_hdr_info *hdr_info; + unsigned int i; + bfd_byte *p, *buf; + unsigned int leb128_tmp; + unsigned int cie_offset = 0; + unsigned int ptr_size; + + ptr_size = (elf_elfheader (sec->owner)->e_ident[EI_CLASS] + == ELFCLASS64) ? 8 : 4; + + if (elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_EH_FRAME) + return bfd_set_section_contents (abfd, sec->output_section, + contents, + (file_ptr) sec->output_offset, + sec->_raw_size); + sec_info = (struct eh_frame_sec_info *) + elf_section_data (sec)->sec_info; + hdr_info = NULL; + if (ehdrsec + && (elf_section_data (ehdrsec)->sec_info_type + == ELF_INFO_TYPE_EH_FRAME_HDR)) + { + hdr_info = (struct eh_frame_hdr_info *) + elf_section_data (ehdrsec)->sec_info; + if (hdr_info->table && hdr_info->array == NULL) + hdr_info->array + = bfd_malloc (hdr_info->fde_count * sizeof(*hdr_info->array)); + if (hdr_info->array == NULL) + hdr_info = NULL; + } + + p = contents; + for (i = 0; i < sec_info->count; ++i) + { + if (sec_info->entry[i].removed) + { + if (sec_info->entry[i].cie) + { + /* If CIE is removed due to no remaining FDEs referencing it + and there were no CIEs kept before it, sec_info->entry[i].sec + will be zero. */ + if (sec_info->entry[i].sec == NULL) + cie_offset = 0; + else + { + cie_offset = sec_info->entry[i].new_offset; + cie_offset += (sec_info->entry[i].sec->output_section->vma + + sec_info->entry[i].sec->output_offset + - sec->output_section->vma + - sec->output_offset); + } + } + continue; + } + + if (sec_info->entry[i].cie) + { + /* CIE */ + cie_offset = sec_info->entry[i].new_offset; + if (sec_info->entry[i].make_relative + || sec_info->entry[i].make_lsda_relative) + { + unsigned char *aug; + unsigned int action; + unsigned int dummy, per_width, per_encoding; + + /* Need to find 'R' or 'L' augmentation's argument and modify + DW_EH_PE_* value. */ + action = (sec_info->entry[i].make_relative ? 1 : 0) + | (sec_info->entry[i].make_lsda_relative ? 2 : 0); + buf = contents + sec_info->entry[i].offset; + /* Skip length, id and version. */ + buf += 9; + aug = buf; + buf = strchr (buf, '\0') + 1; + read_uleb128 (dummy, buf); + read_sleb128 (dummy, buf); + read_uleb128 (dummy, buf); + if (*aug == 'z') + { + read_uleb128 (dummy, buf); + aug++; + } + + while (action) + switch (*aug++) + { + case 'L': + if (action & 2) + { + BFD_ASSERT (*buf == sec_info->entry[i].lsda_encoding); + *buf |= DW_EH_PE_pcrel; + action &= ~2; + } + buf++; + break; + case 'P': + per_encoding = *buf++; + per_width = get_DW_EH_PE_width (per_encoding, + ptr_size); + BFD_ASSERT (per_width != 0); + if ((per_encoding & 0xf0) == DW_EH_PE_aligned) + buf = (contents + + ((buf - contents + per_width - 1) + & ~((bfd_size_type) per_width - 1))); + buf += per_width; + break; + case 'R': + if (action & 1) + { + BFD_ASSERT (*buf == sec_info->entry[i].fde_encoding); + *buf |= DW_EH_PE_pcrel; + action &= ~1; + } + buf++; + break; + default: + BFD_FAIL (); + } + } + } + else + { + /* FDE */ + bfd_vma value = 0, address; + unsigned int width; + + buf = contents + sec_info->entry[i].offset; + /* Skip length. */ + buf += 4; + bfd_put_32 (abfd, + sec_info->entry[i].new_offset + 4 - cie_offset, buf); + buf += 4; + width = get_DW_EH_PE_width (sec_info->entry[i].fde_encoding, + ptr_size); + address = value = read_value (abfd, buf, width); + if (value) + { + switch (sec_info->entry[i].fde_encoding & 0xf0) + { + case DW_EH_PE_indirect: + case DW_EH_PE_textrel: + BFD_ASSERT (hdr_info == NULL); + break; + case DW_EH_PE_datarel: + { + asection *got = bfd_get_section_by_name (abfd, ".got"); + + BFD_ASSERT (got != NULL); + address += got->vma; + } + break; + case DW_EH_PE_pcrel: + value += (sec_info->entry[i].offset + - sec_info->entry[i].new_offset); + address += (sec->output_section->vma + sec->output_offset + + sec_info->entry[i].offset + 8); + break; + } + if (sec_info->entry[i].make_relative) + value -= (sec->output_section->vma + sec->output_offset + + sec_info->entry[i].new_offset + 8); + write_value (abfd, buf, value, width); + } + + if (hdr_info) + { + hdr_info->array[hdr_info->array_count].initial_loc = address; + hdr_info->array[hdr_info->array_count++].fde + = (sec->output_section->vma + sec->output_offset + + sec_info->entry[i].new_offset); + } + + if ((sec_info->entry[i].lsda_encoding & 0xf0) == DW_EH_PE_pcrel + || sec_info->entry[i].make_lsda_relative) + { + buf += sec_info->entry[i].lsda_offset; + width = get_DW_EH_PE_width (sec_info->entry[i].lsda_encoding, + ptr_size); + value = read_value (abfd, buf, width); + if (value) + { + if ((sec_info->entry[i].lsda_encoding & 0xf0) + == DW_EH_PE_pcrel) + value += (sec_info->entry[i].offset + - sec_info->entry[i].new_offset); + else if (sec_info->entry[i].make_lsda_relative) + value -= (sec->output_section->vma + sec->output_offset + + sec_info->entry[i].new_offset + 8 + + sec_info->entry[i].lsda_offset); + write_value (abfd, buf, value, width); + } + } + } + + BFD_ASSERT (p == contents + sec_info->entry[i].new_offset); + memmove (p, contents + sec_info->entry[i].offset, + sec_info->entry[i].size); + p += sec_info->entry[i].size; + } + + /* FIXME: Once _bfd_elf_discard_section_eh_frame will be able to + shrink sections to zero size, this won't be needed any more. */ + if (p == contents && sec->_cooked_size == 16) + { + bfd_put_32 (abfd, 12, p); /* Fake CIE length */ + bfd_put_32 (abfd, 0, p + 4); /* Fake CIE id */ + p[8] = 1; /* Fake CIE version */ + memset (p + 9, 0, 7); /* Fake CIE augmentation, 3xleb128 + and 3xDW_CFA_nop as pad */ + p += 16; + } + + BFD_ASSERT ((bfd_size_type) (p - contents) == sec->_cooked_size); + + return bfd_set_section_contents (abfd, sec->output_section, + contents, (file_ptr) sec->output_offset, + sec->_cooked_size); +} + +/* Helper function used to sort .eh_frame_hdr search table by increasing + VMA of FDE initial location. */ + +static int +vma_compare (a, b) + const PTR a; + const PTR b; +{ + struct eh_frame_array_ent *p = (struct eh_frame_array_ent *) a; + struct eh_frame_array_ent *q = (struct eh_frame_array_ent *) b; + if (p->initial_loc > q->initial_loc) + return 1; + if (p->initial_loc < q->initial_loc) + return -1; + return 0; +} + +/* Write out .eh_frame_hdr section. This must be called after + _bfd_elf_write_section_eh_frame has been called on all input + .eh_frame sections. + .eh_frame_hdr format: + ubyte version (currently 1) + ubyte eh_frame_ptr_enc (DW_EH_PE_* encoding of pointer to start of + .eh_frame section) + ubyte fde_count_enc (DW_EH_PE_* encoding of total FDE count + number (or DW_EH_PE_omit if there is no + binary search table computed)) + ubyte table_enc (DW_EH_PE_* encoding of binary search table, + or DW_EH_PE_omit if not present. + DW_EH_PE_datarel is using address of + .eh_frame_hdr section start as base) + [encoded] eh_frame_ptr (pointer to start of .eh_frame section) + optionally followed by: + [encoded] fde_count (total number of FDEs in .eh_frame section) + fde_count x [encoded] initial_loc, fde + (array of encoded pairs containing + FDE initial_location field and FDE address, + sorted by increasing initial_loc) */ + +boolean +_bfd_elf_write_section_eh_frame_hdr (abfd, sec) + bfd *abfd; + asection *sec; +{ + struct eh_frame_hdr_info *hdr_info; + unsigned int ptr_size; + bfd_byte *contents; + asection *eh_frame_sec; + bfd_size_type size; + + ptr_size = (elf_elfheader (sec->owner)->e_ident[EI_CLASS] + == ELFCLASS64) ? 8 : 4; + + BFD_ASSERT (elf_section_data (sec)->sec_info_type + == ELF_INFO_TYPE_EH_FRAME_HDR); + hdr_info = (struct eh_frame_hdr_info *) + elf_section_data (sec)->sec_info; + if (hdr_info->strip) + return true; + + size = EH_FRAME_HDR_SIZE; + if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count) + size += 4 + hdr_info->fde_count * 8; + contents = bfd_malloc (size); + if (contents == NULL) + return false; + + eh_frame_sec = bfd_get_section_by_name (abfd, ".eh_frame"); + if (eh_frame_sec == NULL) + return false; + + memset (contents, 0, EH_FRAME_HDR_SIZE); + contents[0] = 1; /* Version */ + contents[1] = DW_EH_PE_pcrel | DW_EH_PE_sdata4; /* .eh_frame offset */ + if (hdr_info->array && hdr_info->array_count == hdr_info->fde_count) + { + contents[2] = DW_EH_PE_udata4; /* FDE count encoding */ + contents[3] = DW_EH_PE_datarel | DW_EH_PE_sdata4; /* search table enc */ + } + else + { + contents[2] = DW_EH_PE_omit; + contents[3] = DW_EH_PE_omit; + } + bfd_put_32 (abfd, eh_frame_sec->vma - sec->output_section->vma - 4, + contents + 4); + if (contents[2] != DW_EH_PE_omit) + { + unsigned int i; + + bfd_put_32 (abfd, hdr_info->fde_count, contents + EH_FRAME_HDR_SIZE); + qsort (hdr_info->array, hdr_info->fde_count, sizeof (*hdr_info->array), + vma_compare); + for (i = 0; i < hdr_info->fde_count; i++) + { + bfd_put_32 (abfd, + hdr_info->array[i].initial_loc + - sec->output_section->vma, + contents + EH_FRAME_HDR_SIZE + i * 8 + 4); + bfd_put_32 (abfd, + hdr_info->array[i].fde - sec->output_section->vma, + contents + EH_FRAME_HDR_SIZE + i * 8 + 8); + } + } + + return bfd_set_section_contents (abfd, sec->output_section, + contents, (file_ptr) sec->output_offset, + sec->_cooked_size); +} diff -uprN binutils-2.11.92.0.12.3/bfd/elf-hppa.h binutils-2.11.93.0.2/bfd/elf-hppa.h --- binutils-2.11.92.0.12.3/bfd/elf-hppa.h Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf-hppa.h Sun Feb 3 11:22:30 2002 @@ -1325,10 +1325,7 @@ elf_hppa_relocate_section (output_bfd, i /* This is a local symbol. */ sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - relocation = ((ELF_ST_TYPE (sym->st_info) == STT_SECTION - ? 0 : sym->st_value) - + sym_sec->output_offset - + sym_sec->output_section->vma); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); /* If this symbol has an entry in the PA64 dynamic hash table, then get it. */ diff -uprN binutils-2.11.92.0.12.3/bfd/elf-m10200.c binutils-2.11.93.0.2/bfd/elf-m10200.c --- binutils-2.11.92.0.12.3/bfd/elf-m10200.c Fri Oct 19 23:57:48 2001 +++ binutils-2.11.93.0.2/bfd/elf-m10200.c Sun Feb 3 11:22:30 2002 @@ -30,7 +30,7 @@ static void mn10200_info_to_howto static boolean mn10200_elf_relax_delete_bytes PARAMS ((bfd *, asection *, bfd_vma, int)); static boolean mn10200_elf_symbol_address_p - PARAMS ((bfd *, asection *, Elf32_External_Sym *, bfd_vma)); + PARAMS ((bfd *, asection *, bfd_vma)); static bfd_reloc_status_type mn10200_elf_final_link_relocate PARAMS ((reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *, bfd_vma, bfd_vma, bfd_vma, @@ -394,9 +394,7 @@ mn10200_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -527,6 +525,7 @@ mn10200_elf_relax_section (abfd, sec, li boolean *again; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; @@ -534,6 +533,7 @@ mn10200_elf_relax_section (abfd, sec, li bfd_byte *free_contents = NULL; Elf32_External_Sym *extsyms = NULL; Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; /* Assume nothing changes. */ *again = false; @@ -553,6 +553,7 @@ mn10200_elf_relax_section (abfd, sec, li sec->_cooked_size = sec->_raw_size; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; /* Get a copy of the native relocations. */ internal_relocs = (_bfd_elf32_link_read_relocs @@ -605,29 +606,57 @@ mn10200_elf_relax_section (abfd, sec, li else { /* Go get them off disk. */ - bfd_size_type amt = symtab_hdr->sh_size; + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (extsyms, amt, abfd) != amt) + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) goto error_return; + symtab_hdr->contents = (bfd_byte *) extsyms; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + shndx_hdr->contents = (bfd_byte *) shndx_buf; } } /* Get the value of the symbol referred to by the reloc. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { + /* A local symbol. */ + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; asection *sym_sec; - /* A local symbol. */ - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irel->r_info), - &isym); - - sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); + + if (isym.st_shndx == SHN_UNDEF) + sym_sec = bfd_und_section_ptr; + else if (isym.st_shndx == SHN_ABS) + sym_sec = bfd_abs_section_ptr; + else if (isym.st_shndx == SHN_COMMON) + sym_sec = bfd_com_section_ptr; + else + sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); symval = (isym.st_value + sym_sec->output_section->vma + sym_sec->output_offset); @@ -694,7 +723,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -752,7 +780,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -838,8 +865,7 @@ mn10200_elf_relax_section (abfd, sec, li /* We also have to be sure there is no symbol/label at the unconditional branch. */ - if (mn10200_elf_symbol_address_p (abfd, sec, extsyms, - irel->r_offset + 1)) + if (mn10200_elf_symbol_address_p (abfd, sec, irel->r_offset + 1)) continue; /* Note that we've changed the relocs, section contents, etc. */ @@ -849,7 +875,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Reverse the condition of the first branch. */ @@ -973,7 +998,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1017,7 +1041,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; if ((code & 0xfc) == 0x74) @@ -1105,7 +1128,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1169,7 +1191,6 @@ mn10200_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; bfd_put_8 (abfd, 0xcc + (code & 0x03), @@ -1201,10 +1222,7 @@ mn10200_elf_relax_section (abfd, sec, li } if (free_relocs != NULL) - { - free (free_relocs); - free_relocs = NULL; - } + free (free_relocs); if (free_contents != NULL) { @@ -1215,19 +1233,21 @@ mn10200_elf_relax_section (abfd, sec, li /* Cache the section contents for elf_link_input_bfd. */ elf_section_data (sec)->this_hdr.contents = contents; } - free_contents = NULL; + } + + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); } if (free_extsyms != NULL) { if (! link_info->keep_memory) - free (free_extsyms); - else { - /* Cache the symbols for elf_link_input_bfd. */ - symtab_hdr->contents = (unsigned char *) extsyms; + symtab_hdr->contents = NULL; + free (free_extsyms); } - free_extsyms = NULL; } return true; @@ -1237,8 +1257,17 @@ mn10200_elf_relax_section (abfd, sec, li free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } if (free_extsyms != NULL) - free (free_extsyms); + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } + return false; } @@ -1252,19 +1281,23 @@ mn10200_elf_relax_delete_bytes (abfd, se int count; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf32_External_Sym *extsyms; - int shndx, index; + unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf32_External_Sym *esym, *esymend; - struct elf_link_hash_entry *sym_hash; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; extsyms = (Elf32_External_Sym *) symtab_hdr->contents; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; @@ -1292,40 +1325,41 @@ mn10200_elf_relax_delete_bytes (abfd, se } /* Adjust the local symbols defined in this section. */ + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; esym = extsyms; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; + Elf_External_Sym_Shndx dummy; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value > addr && isym.st_value < toaddr) { isym.st_value -= count; - bfd_elf32_swap_symbol_out (abfd, &isym, esym); + bfd_elf32_swap_symbol_out (abfd, &isym, (PTR) esym, (PTR) &dummy); } } /* Now adjust the global symbols defined in this section. */ - esym = extsyms + symtab_hdr->sh_info; - esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; esym < esymend; esym++, index++) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) { - Elf_Internal_Sym isym; - - bfd_elf32_swap_symbol_in (abfd, esym, &isym); - sym_hash = elf_sym_hashes (abfd)[index]; - if (isym.st_shndx == shndx - && ((sym_hash)->root.type == bfd_link_hash_defined - || (sym_hash)->root.type == bfd_link_hash_defweak) - && (sym_hash)->root.u.def.section == sec - && (sym_hash)->root.u.def.value > addr - && (sym_hash)->root.u.def.value < toaddr) + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value < toaddr) { - (sym_hash)->root.u.def.value -= count; + sym_hash->root.u.def.value -= count; } } @@ -1335,46 +1369,53 @@ mn10200_elf_relax_delete_bytes (abfd, se /* Return true if a symbol exists at the given address, else return false. */ static boolean -mn10200_elf_symbol_address_p (abfd, sec, extsyms, addr) +mn10200_elf_symbol_address_p (abfd, sec, addr) bfd *abfd; asection *sec; - Elf32_External_Sym *extsyms; bfd_vma addr; { Elf_Internal_Shdr *symtab_hdr; - int shndx; + Elf_Internal_Shdr *shndx_hdr; + unsigned int sec_shndx; Elf32_External_Sym *esym, *esymend; - struct elf_link_hash_entry **sym_hash, **sym_hash_end; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); /* Examine all the symbols. */ - esym = extsyms; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; + esym = (Elf32_External_Sym *) symtab_hdr->contents; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value == addr) return true; } - sym_hash = elf_sym_hashes (abfd); - sym_hash_end = (sym_hash - + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) - - symtab_hdr->sh_info)); - for (; sym_hash < sym_hash_end; sym_hash++) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) { - if (((*sym_hash)->root.type == bfd_link_hash_defined - || (*sym_hash)->root.type == bfd_link_hash_defweak) - && (*sym_hash)->root.u.def.section == sec - && (*sym_hash)->root.u.def.value == addr) + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value == addr) return true; } + return false; } @@ -1392,11 +1433,14 @@ mn10200_elf_get_relocated_section_conten asymbol **symbols; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; asection *input_section = link_order->u.indirect.section; bfd *input_bfd = input_section->owner; asection **sections = NULL; Elf_Internal_Rela *internal_relocs = NULL; Elf32_External_Sym *external_syms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *internal_syms = NULL; /* We only need to handle the case of relaxing, or of having a @@ -1409,6 +1453,7 @@ mn10200_elf_get_relocated_section_conten symbols); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; memcpy (data, elf_section_data (input_section)->this_hdr.contents, (size_t) input_section->_raw_size); @@ -1419,19 +1464,31 @@ mn10200_elf_get_relocated_section_conten Elf_Internal_Sym *isymp; asection **secpp; Elf32_External_Sym *esym, *esymend; - bfd_size_type size; + bfd_size_type amt; if (symtab_hdr->contents != NULL) external_syms = (Elf32_External_Sym *) symtab_hdr->contents; - else + else if (symtab_hdr->sh_info != 0) { - size = symtab_hdr->sh_info; - size *= sizeof (Elf32_External_Sym); - external_syms = (Elf32_External_Sym *) bfd_malloc (size); - if (external_syms == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); + external_syms = (Elf32_External_Sym *) bfd_malloc (amt); + if (external_syms == NULL) goto error_return; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (external_syms, size, input_bfd) != size) + || bfd_bread ((PTR) external_syms, amt, input_bfd) != amt) + goto error_return; + } + + if (symtab_hdr->sh_info != 0 && shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; } @@ -1441,41 +1498,35 @@ mn10200_elf_get_relocated_section_conten if (internal_relocs == NULL) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (Elf_Internal_Sym); - internal_syms = (Elf_Internal_Sym *) bfd_malloc (size); - if (internal_syms == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_Internal_Sym); + internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt); + if (internal_syms == NULL && amt != 0) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (asection *); - sections = (asection **) bfd_malloc (size); - if (sections == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (asection *); + sections = (asection **) bfd_malloc (amt); + if (sections == NULL && amt != 0) goto error_return; - isymp = internal_syms; - secpp = sections; - esym = external_syms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; ++esym, ++isymp, ++secpp) + for (isymp = internal_syms, secpp = sections, shndx = shndx_buf, + esym = external_syms, esymend = esym + symtab_hdr->sh_info; + esym < esymend; + ++esym, ++isymp, ++secpp, shndx = (shndx ? shndx + 1 : NULL)) { asection *isec; - bfd_elf32_swap_symbol_in (input_bfd, esym, isymp); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, isymp); if (isymp->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isymp->st_shndx > 0 && isymp->st_shndx < SHN_LORESERVE) - isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); else if (isymp->st_shndx == SHN_ABS) isec = bfd_abs_section_ptr; else if (isymp->st_shndx == SHN_COMMON) isec = bfd_com_section_ptr; else - { - /* Who knows? */ - isec = NULL; - } + isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); *secpp = isec; } @@ -1487,16 +1538,14 @@ mn10200_elf_get_relocated_section_conten if (sections != NULL) free (sections); - sections = NULL; if (internal_syms != NULL) free (internal_syms); - internal_syms = NULL; + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); - external_syms = NULL; if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); - internal_relocs = NULL; } return data; @@ -1505,6 +1554,8 @@ mn10200_elf_get_relocated_section_conten if (internal_relocs != NULL && internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); if (internal_syms != NULL) diff -uprN binutils-2.11.92.0.12.3/bfd/elf-m10300.c binutils-2.11.93.0.2/bfd/elf-m10300.c --- binutils-2.11.92.0.12.3/bfd/elf-m10300.c Fri Oct 19 23:57:48 2001 +++ binutils-2.11.93.0.2/bfd/elf-m10300.c Sun Feb 3 11:22:30 2002 @@ -125,7 +125,7 @@ static asection *mn10300_elf_gc_mark_hoo static boolean mn10300_elf_relax_delete_bytes PARAMS ((bfd *, asection *, bfd_vma, int)); static boolean mn10300_elf_symbol_address_p - PARAMS ((bfd *, asection *, Elf32_External_Sym *, bfd_vma)); + PARAMS ((bfd *, asection *, bfd_vma)); static boolean elf32_mn10300_finish_hash_table_entry PARAMS ((struct bfd_hash_entry *, PTR)); static void compute_function_info @@ -427,13 +427,7 @@ mn10300_elf_gc_mark_hook (abfd, info, re } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -610,9 +604,7 @@ mn10300_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -805,6 +797,7 @@ mn10300_elf_relax_section (abfd, sec, li boolean *again; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs = NULL; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; @@ -812,6 +805,7 @@ mn10300_elf_relax_section (abfd, sec, li bfd_byte *free_contents = NULL; Elf32_External_Sym *extsyms = NULL; Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; struct elf32_mn10300_link_hash_table *hash_table; /* Assume nothing changes. */ @@ -834,20 +828,38 @@ mn10300_elf_relax_section (abfd, sec, li /* We're going to need all the symbols for each bfd. */ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; /* Get cached copy if it exists. */ if (symtab_hdr->contents != NULL) extsyms = (Elf32_External_Sym *) symtab_hdr->contents; else { - bfd_size_type amt = symtab_hdr->sh_size; /* Go get them off disk. */ + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (extsyms, amt, input_bfd) != amt) + || bfd_bread ((PTR) extsyms, amt, input_bfd) != amt) + goto error_return; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; } @@ -923,28 +935,33 @@ mn10300_elf_relax_section (abfd, sec, li if (r_index < symtab_hdr->sh_info) { /* A local symbol. */ + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; struct elf_link_hash_table *elftab; bfd_size_type amt; - bfd_elf32_swap_symbol_in (input_bfd, - extsyms + r_index, &isym); + esym = extsyms + r_index; + shndx = shndx_buf + (shndx_buf ? r_index : 0); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, + &isym); if (isym.st_shndx == SHN_UNDEF) sym_sec = bfd_und_section_ptr; - else if (isym.st_shndx > 0 - && isym.st_shndx < SHN_LORESERVE) - sym_sec - = bfd_section_from_elf_index (input_bfd, - isym.st_shndx); else if (isym.st_shndx == SHN_ABS) sym_sec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) sym_sec = bfd_com_section_ptr; + else + sym_sec + = bfd_section_from_elf_index (input_bfd, + isym.st_shndx); - sym_name = bfd_elf_string_from_elf_section (input_bfd, - symtab_hdr->sh_link, - isym.st_name); + sym_name + = bfd_elf_string_from_elf_section (input_bfd, + (symtab_hdr + ->sh_link), + isym.st_name); /* If it isn't a function, then we don't care about it. */ @@ -1001,21 +1018,24 @@ mn10300_elf_relax_section (abfd, sec, li { Elf32_External_Sym *esym, *esymend; - int idx, shndx; + Elf_External_Sym_Shndx *shndx; + int idx; + unsigned int sec_shndx; - shndx = _bfd_elf_section_from_bfd_section (input_bfd, - section); + sec_shndx = _bfd_elf_section_from_bfd_section (input_bfd, + section); /* Look at each function defined in this section and update info for that function. */ - esym = extsyms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (esym = extsyms, esymend = esym + symtab_hdr->sh_info, + shndx = shndx_buf; + esym < esymend; + esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; - bfd_elf32_swap_symbol_in (input_bfd, esym, &isym); - if (isym.st_shndx == shndx + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, &isym); + if (isym.st_shndx == sec_shndx && ELF_ST_TYPE (isym.st_info) == STT_FUNC) { struct elf_link_hash_table *elftab; @@ -1023,15 +1043,14 @@ mn10300_elf_relax_section (abfd, sec, li if (isym.st_shndx == SHN_UNDEF) sym_sec = bfd_und_section_ptr; - else if (isym.st_shndx > 0 - && isym.st_shndx < SHN_LORESERVE) - sym_sec - = bfd_section_from_elf_index (input_bfd, - isym.st_shndx); else if (isym.st_shndx == SHN_ABS) sym_sec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) sym_sec = bfd_com_section_ptr; + else + sym_sec + = bfd_section_from_elf_index (input_bfd, + isym.st_shndx); sym_name = (bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, @@ -1065,14 +1084,12 @@ mn10300_elf_relax_section (abfd, sec, li { Elf_Internal_Sym isym; - bfd_elf32_swap_symbol_in (input_bfd, esym, &isym); hash = (struct elf32_mn10300_link_hash_entry *) elf_sym_hashes (input_bfd)[idx]; - if (isym.st_shndx == shndx - && ELF_ST_TYPE (isym.st_info) == STT_FUNC - && (hash)->root.root.u.def.section == section - && ((hash)->root.root.type == bfd_link_hash_defined - || (hash)->root.root.type == bfd_link_hash_defweak)) + if ((hash->root.root.type == bfd_link_hash_defined + || hash->root.root.type == bfd_link_hash_defweak) + && hash->root.root.u.def.section == section + && ELF_ST_TYPE (isym.st_info) == STT_FUNC) compute_function_info (input_bfd, hash, (hash)->root.root.u.def.value, contents); @@ -1100,6 +1117,12 @@ mn10300_elf_relax_section (abfd, sec, li } } + if (shndx_buf != NULL) + { + free (shndx_buf); + shndx_buf = NULL; + } + /* Cache or free any memory we allocated for the symbols. */ if (free_extsyms != NULL) { @@ -1136,23 +1159,43 @@ mn10300_elf_relax_section (abfd, sec, li { asection *section; - /* We're going to need all the symbols for each bfd. */ + /* We're going to need all the local symbols for each bfd. */ symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; /* Get cached copy if it exists. */ if (symtab_hdr->contents != NULL) extsyms = (Elf32_External_Sym *) symtab_hdr->contents; else { - bfd_size_type amt = symtab_hdr->sh_size; /* Go get them off disk. */ + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (extsyms, amt, input_bfd) != amt) + || bfd_bread ((PTR) extsyms, amt, input_bfd) != amt) + goto error_return; + symtab_hdr->contents = (bfd_byte *) extsyms; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; + shndx_hdr->contents = (bfd_byte *) shndx_buf; } /* Walk over each section in this bfd. */ @@ -1160,9 +1203,10 @@ mn10300_elf_relax_section (abfd, sec, li section != NULL; section = section->next) { - int shndx; + unsigned int sec_shndx; Elf32_External_Sym *esym, *esymend; - int idx; + Elf_External_Sym_Shndx *shndx; + unsigned int idx; /* Skip non-code sections and empty sections. */ if ((section->flags & SEC_CODE) == 0 || section->_raw_size == 0) @@ -1198,13 +1242,15 @@ mn10300_elf_relax_section (abfd, sec, li goto error_return; } - shndx = _bfd_elf_section_from_bfd_section (input_bfd, section); + sec_shndx = _bfd_elf_section_from_bfd_section (input_bfd, + section); /* Now look for any function in this section which needs insns deleted from its prologue. */ - esym = extsyms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (esym = extsyms, esymend = esym + symtab_hdr->sh_info, + shndx = shndx_buf; + esym < esymend; + esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; struct elf32_mn10300_link_hash_entry *sym_hash; @@ -1214,26 +1260,25 @@ mn10300_elf_relax_section (abfd, sec, li struct elf_link_hash_table *elftab; bfd_size_type amt; - bfd_elf32_swap_symbol_in (input_bfd, esym, &isym); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, &isym); - if (isym.st_shndx != shndx) + if (isym.st_shndx != sec_shndx) continue; if (isym.st_shndx == SHN_UNDEF) sym_sec = bfd_und_section_ptr; - else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE) - sym_sec - = bfd_section_from_elf_index (input_bfd, isym.st_shndx); else if (isym.st_shndx == SHN_ABS) sym_sec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) sym_sec = bfd_com_section_ptr; else - abort (); + sym_sec + = bfd_section_from_elf_index (input_bfd, isym.st_shndx); - sym_name = bfd_elf_string_from_elf_section (input_bfd, - symtab_hdr->sh_link, - isym.st_name); + sym_name + = bfd_elf_string_from_elf_section (input_bfd, + symtab_hdr->sh_link, + isym.st_name); /* Tack on an ID so we can uniquely identify this local symbol in the global hash table. */ @@ -1253,8 +1298,8 @@ mn10300_elf_relax_section (abfd, sec, li if (sym_hash == NULL) continue; - if (! ((sym_hash)->flags & MN10300_CONVERT_CALL_TO_CALLS) - && ! ((sym_hash)->flags & MN10300_DELETED_PROLOGUE_BYTES)) + if (! (sym_hash->flags & MN10300_CONVERT_CALL_TO_CALLS) + && ! (sym_hash->flags & MN10300_DELETED_PROLOGUE_BYTES)) { int bytes = 0; @@ -1265,7 +1310,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (section)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Count how many bytes we're going to delete. */ @@ -1297,23 +1341,23 @@ mn10300_elf_relax_section (abfd, sec, li /* Look for any global functions in this section which need insns deleted from their prologues. */ - esym = extsyms + symtab_hdr->sh_info; - esymend = extsyms + (symtab_hdr->sh_size - / sizeof (Elf32_External_Sym)); - for (idx = 0; esym < esymend; esym++, idx++) + for (idx = 0; + idx < (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + idx++) { - Elf_Internal_Sym isym; struct elf32_mn10300_link_hash_entry *sym_hash; - bfd_elf32_swap_symbol_in (input_bfd, esym, &isym); sym_hash = (struct elf32_mn10300_link_hash_entry *) (elf_sym_hashes (input_bfd)[idx]); - if (isym.st_shndx == shndx - && (sym_hash)->root.root.u.def.section == section - && ! ((sym_hash)->flags & MN10300_CONVERT_CALL_TO_CALLS) - && ! ((sym_hash)->flags & MN10300_DELETED_PROLOGUE_BYTES)) + if ((sym_hash->root.root.type == bfd_link_hash_defined + || sym_hash->root.root.type == bfd_link_hash_defweak) + && sym_hash->root.root.u.def.section == section + && ! (sym_hash->flags & MN10300_CONVERT_CALL_TO_CALLS) + && ! (sym_hash->flags & MN10300_DELETED_PROLOGUE_BYTES)) { int bytes = 0; + bfd_vma symval; /* Note that we've changed things. */ elf_section_data (section)->relocs = internal_relocs; @@ -1322,7 +1366,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (section)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Count how many bytes we're going to delete. */ @@ -1340,9 +1383,10 @@ mn10300_elf_relax_section (abfd, sec, li sym_hash->flags |= MN10300_DELETED_PROLOGUE_BYTES; /* Actually delete the bytes. */ + symval = sym_hash->root.root.u.def.value; if (!mn10300_elf_relax_delete_bytes (input_bfd, section, - (sym_hash)->root.root.u.def.value, + symval, bytes)) goto error_return; @@ -1373,15 +1417,20 @@ mn10300_elf_relax_section (abfd, sec, li } } + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + shndx_buf = NULL; + } + /* Cache or free any memory we allocated for the symbols. */ if (free_extsyms != NULL) { if (! link_info->keep_memory) - free (free_extsyms); - else { - /* Cache the symbols for elf_link_input_bfd. */ - symtab_hdr->contents = (unsigned char *) extsyms; + symtab_hdr->contents = NULL; + free (free_extsyms); } free_extsyms = NULL; } @@ -1411,6 +1460,7 @@ mn10300_elf_relax_section (abfd, sec, li sec->_cooked_size = sec->_raw_size; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; /* Get a copy of the native relocations. */ internal_relocs = (_bfd_elf32_link_read_relocs @@ -1463,41 +1513,60 @@ mn10300_elf_relax_section (abfd, sec, li extsyms = (Elf32_External_Sym *) symtab_hdr->contents; else { - bfd_size_type amt = symtab_hdr->sh_size; /* Go get them off disk. */ + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (extsyms, amt, abfd) != amt) + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) + goto error_return; + symtab_hdr->contents = (bfd_byte *) extsyms; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + shndx_hdr->contents = (bfd_byte *) shndx_buf; } } /* Get the value of the symbol referred to by the reloc. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; asection *sym_sec = NULL; const char *sym_name; char *new_name; /* A local symbol. */ - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irel->r_info), - &isym); + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); if (isym.st_shndx == SHN_UNDEF) sym_sec = bfd_und_section_ptr; - else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE) - sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); else if (isym.st_shndx == SHN_ABS) sym_sec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) sym_sec = bfd_com_section_ptr; else - abort (); + sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); symval = (isym.st_value + sym_sec->output_section->vma @@ -1577,7 +1646,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1642,7 +1710,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1694,7 +1761,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1757,7 +1823,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -1842,8 +1907,7 @@ mn10300_elf_relax_section (abfd, sec, li /* We also have to be sure there is no symbol/label at the unconditional branch. */ - if (mn10300_elf_symbol_address_p (abfd, sec, extsyms, - irel->r_offset + 1)) + if (mn10300_elf_symbol_address_p (abfd, sec, irel->r_offset + 1)) continue; /* Note that we've changed the relocs, section contents, etc. */ @@ -1853,7 +1917,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Reverse the condition of the first branch. */ @@ -1967,7 +2030,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2043,7 +2105,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2127,7 +2188,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2165,7 +2225,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; if ((code & 0xf3) == 0x81) @@ -2220,7 +2279,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2273,7 +2331,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; if ((code & 0xfc) == 0xcc) @@ -2355,7 +2412,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2387,7 +2443,6 @@ mn10300_elf_relax_section (abfd, sec, li elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Fix the opcode. */ @@ -2413,10 +2468,7 @@ mn10300_elf_relax_section (abfd, sec, li } if (free_relocs != NULL) - { - free (free_relocs); - free_relocs = NULL; - } + free (free_relocs); if (free_contents != NULL) { @@ -2427,19 +2479,21 @@ mn10300_elf_relax_section (abfd, sec, li /* Cache the section contents for elf_link_input_bfd. */ elf_section_data (sec)->this_hdr.contents = contents; } - free_contents = NULL; + } + + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); } if (free_extsyms != NULL) { if (! link_info->keep_memory) - free (free_extsyms); - else { - /* Cache the symbols for elf_link_input_bfd. */ - symtab_hdr->contents = (unsigned char *) extsyms; + symtab_hdr->contents = NULL; + free (free_extsyms); } - free_extsyms = NULL; } return true; @@ -2449,8 +2503,17 @@ mn10300_elf_relax_section (abfd, sec, li free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } if (free_extsyms != NULL) - free (free_extsyms); + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } + return false; } @@ -2564,19 +2627,23 @@ mn10300_elf_relax_delete_bytes (abfd, se int count; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf32_External_Sym *extsyms; - int shndx, index; + unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf32_External_Sym *esym, *esymend; - struct elf32_mn10300_link_hash_entry *sym_hash; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; extsyms = (Elf32_External_Sym *) symtab_hdr->contents; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; @@ -2604,41 +2671,41 @@ mn10300_elf_relax_delete_bytes (abfd, se } /* Adjust the local symbols defined in this section. */ + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; esym = extsyms; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; + Elf_External_Sym_Shndx dummy; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value > addr && isym.st_value < toaddr) { isym.st_value -= count; - bfd_elf32_swap_symbol_out (abfd, &isym, esym); + bfd_elf32_swap_symbol_out (abfd, &isym, (PTR) esym, (PTR) &dummy); } } /* Now adjust the global symbols defined in this section. */ - esym = extsyms + symtab_hdr->sh_info; - esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; esym < esymend; esym++, index++) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) { - Elf_Internal_Sym isym; - - bfd_elf32_swap_symbol_in (abfd, esym, &isym); - sym_hash = (struct elf32_mn10300_link_hash_entry *) - (elf_sym_hashes (abfd)[index]); - if (isym.st_shndx == shndx - && ((sym_hash)->root.root.type == bfd_link_hash_defined - || (sym_hash)->root.root.type == bfd_link_hash_defweak) - && (sym_hash)->root.root.u.def.section == sec - && (sym_hash)->root.root.u.def.value > addr - && (sym_hash)->root.root.u.def.value < toaddr) + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value < toaddr) { - (sym_hash)->root.root.u.def.value -= count; + sym_hash->root.u.def.value -= count; } } @@ -2648,46 +2715,53 @@ mn10300_elf_relax_delete_bytes (abfd, se /* Return true if a symbol exists at the given address, else return false. */ static boolean -mn10300_elf_symbol_address_p (abfd, sec, extsyms, addr) +mn10300_elf_symbol_address_p (abfd, sec, addr) bfd *abfd; asection *sec; - Elf32_External_Sym *extsyms; bfd_vma addr; { Elf_Internal_Shdr *symtab_hdr; - int shndx; + Elf_Internal_Shdr *shndx_hdr; + unsigned int sec_shndx; Elf32_External_Sym *esym, *esymend; - struct elf32_mn10300_link_hash_entry **sym_hash, **sym_hash_end; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); /* Examine all the symbols. */ - esym = extsyms; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; + esym = (Elf32_External_Sym *) symtab_hdr->contents; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value == addr) return true; } - sym_hash = (struct elf32_mn10300_link_hash_entry **) (elf_sym_hashes (abfd)); - sym_hash_end = (sym_hash - + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) - - symtab_hdr->sh_info)); - for (; sym_hash < sym_hash_end; sym_hash++) - { - if (((*sym_hash)->root.root.type == bfd_link_hash_defined - || (*sym_hash)->root.root.type == bfd_link_hash_defweak) - && (*sym_hash)->root.root.u.def.section == sec - && (*sym_hash)->root.root.u.def.value == addr) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) + { + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value == addr) return true; } + return false; } @@ -2705,11 +2779,14 @@ mn10300_elf_get_relocated_section_conten asymbol **symbols; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; asection *input_section = link_order->u.indirect.section; bfd *input_bfd = input_section->owner; asection **sections = NULL; Elf_Internal_Rela *internal_relocs = NULL; Elf32_External_Sym *external_syms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *internal_syms = NULL; /* We only need to handle the case of relaxing, or of having a @@ -2722,6 +2799,7 @@ mn10300_elf_get_relocated_section_conten symbols); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; memcpy (data, elf_section_data (input_section)->this_hdr.contents, (size_t) input_section->_raw_size); @@ -2732,19 +2810,31 @@ mn10300_elf_get_relocated_section_conten Elf_Internal_Sym *isymp; asection **secpp; Elf32_External_Sym *esym, *esymend; - bfd_size_type size; + bfd_size_type amt; if (symtab_hdr->contents != NULL) external_syms = (Elf32_External_Sym *) symtab_hdr->contents; - else + else if (symtab_hdr->sh_info != 0) { - size = symtab_hdr->sh_info; - size *= sizeof (Elf32_External_Sym); - external_syms = (Elf32_External_Sym *) bfd_malloc (size); - if (external_syms == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); + external_syms = (Elf32_External_Sym *) bfd_malloc (amt); + if (external_syms == NULL) goto error_return; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (external_syms, size, input_bfd) != size) + || bfd_bread ((PTR) external_syms, amt, input_bfd) != amt) + goto error_return; + } + + if (symtab_hdr->sh_info != 0 && shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; } @@ -2754,41 +2844,35 @@ mn10300_elf_get_relocated_section_conten if (internal_relocs == NULL) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (Elf_Internal_Sym); - internal_syms = (Elf_Internal_Sym *) bfd_malloc (size); - if (internal_syms == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_Internal_Sym); + internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt); + if (internal_syms == NULL && amt != 0) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (asection *); - sections = (asection **) bfd_malloc (size); - if (sections == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (asection *); + sections = (asection **) bfd_malloc (amt); + if (sections == NULL && amt != 0) goto error_return; - isymp = internal_syms; - secpp = sections; - esym = external_syms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; ++esym, ++isymp, ++secpp) + for (isymp = internal_syms, secpp = sections, shndx = shndx_buf, + esym = external_syms, esymend = esym + symtab_hdr->sh_info; + esym < esymend; + ++esym, ++isymp, ++secpp, shndx = (shndx ? shndx + 1 : NULL)) { asection *isec; - bfd_elf32_swap_symbol_in (input_bfd, esym, isymp); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, isymp); if (isymp->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isymp->st_shndx > 0 && isymp->st_shndx < SHN_LORESERVE) - isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); else if (isymp->st_shndx == SHN_ABS) isec = bfd_abs_section_ptr; else if (isymp->st_shndx == SHN_COMMON) isec = bfd_com_section_ptr; else - { - /* Who knows? */ - isec = NULL; - } + isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); *secpp = isec; } @@ -2800,16 +2884,14 @@ mn10300_elf_get_relocated_section_conten if (sections != NULL) free (sections); - sections = NULL; if (internal_syms != NULL) free (internal_syms); - internal_syms = NULL; + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); - external_syms = NULL; if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); - internal_relocs = NULL; } return data; @@ -2818,6 +2900,8 @@ mn10300_elf_get_relocated_section_conten if (internal_relocs != NULL && internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); if (internal_syms != NULL) diff -uprN binutils-2.11.92.0.12.3/bfd/elf-strtab.c binutils-2.11.93.0.2/bfd/elf-strtab.c --- binutils-2.11.92.0.12.3/bfd/elf-strtab.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf-strtab.c Sun Feb 3 11:22:30 2002 @@ -37,6 +37,7 @@ struct elf_strtab_hash_entry bfd_size_type index; /* Entry this is a suffix of (if len is 0). */ struct elf_strtab_hash_entry *suffix; + struct elf_strtab_hash_entry *next; } u; }; @@ -59,7 +60,6 @@ static struct bfd_hash_entry *elf_strtab PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); static int cmplengthentry PARAMS ((const PTR, const PTR)); static int last4_eq PARAMS ((const PTR, const PTR)); -static int last_eq PARAMS ((const PTR, const PTR)); /* Routine to create an entry in a section merge hashtab. */ @@ -313,33 +313,6 @@ last4_eq (a, b) B->root.string, B->len - 5) == 0; } -static int -last_eq (a, b) - const PTR a; - const PTR b; -{ - struct elf_strtab_hash_entry * A = (struct elf_strtab_hash_entry *) a; - struct elf_strtab_hash_entry * B = (struct elf_strtab_hash_entry *) b; - - if (B->len >= 5) - /* Longer strings are just pushed into the hash table, - they'll be used when looking up for very short strings. */ - return 0; - - if (memcmp (A->root.string + A->len - 2, B->root.string + B->len - 2, 1) - != 0) - /* This was a hashtable collision. */ - return 0; - - if (A->len <= B->len) - /* B cannot be a suffix of A unless A is equal to B, which is guaranteed - not to be equal by the hash table. */ - return 0; - - return memcmp (A->root.string + (A->len - B->len), - B->root.string, B->len - 2) == 0; -} - /* This function assigns final string table offsets for used strings, merging strings matching suffixes of longer strings if possible. */ @@ -348,8 +321,9 @@ _bfd_elf_strtab_finalize (tab) struct elf_strtab_hash *tab; { struct elf_strtab_hash_entry **array, **a, **end, *e; - htab_t lasttab = NULL, last4tab = NULL; + htab_t last4tab = NULL; bfd_size_type size, amt; + struct elf_strtab_hash_entry *last[256], **last_ptr[256]; /* GCC 2.91.66 (egcs-1.1.2) on i386 miscompiles this function when i is a 64-bit bfd_size_type: a 64-bit target or --enable-64-bit-bfd. @@ -364,6 +338,9 @@ _bfd_elf_strtab_finalize (tab) if (array == NULL) goto alloc_failure; + memset (last, 0, sizeof (last)); + for (i = 0; i < 256; ++i) + last_ptr[i] = &last[i]; for (i = 1, a = array; i < tab->size; ++i) if (tab->array[i]->refcount) *a++ = tab->array[i]; @@ -375,8 +352,7 @@ _bfd_elf_strtab_finalize (tab) qsort (array, size, sizeof (struct elf_strtab_hash_entry *), cmplengthentry); last4tab = htab_create (size * 4, NULL, last4_eq, NULL); - lasttab = htab_create (size * 4, NULL, last_eq, NULL); - if (lasttab == NULL || last4tab == NULL) + if (last4tab == NULL) goto alloc_failure; /* Now insert the strings into hash tables (strings with last 4 characters @@ -416,27 +392,35 @@ _bfd_elf_strtab_finalize (tab) else *p = (PTR) e; } - c = (unsigned char) e->root.string[e->len - 1]; - p = htab_find_slot_with_hash (lasttab, e, c, INSERT); - if (p == NULL) - goto alloc_failure; - if (*p) + else { - struct elf_strtab_hash_entry *ent; + struct elf_strtab_hash_entry *tem; - ent = (struct elf_strtab_hash_entry *) *p; - e->u.suffix = ent; - e->len = 0; + c = e->root.string[e->len - 2] & 0xff; + + for (tem = last[c]; tem; tem = tem->u.next) + if (tem->len > e->len + && memcmp (tem->root.string + (tem->len - e->len), + e->root.string, e->len - 1) == 0) + break; + if (tem) + { + e->u.suffix = tem; + e->len = 0; + continue; + } } - else - *p = (PTR) e; + + c = e->root.string[e->len - 2] & 0xff; + /* Put longest strings first. */ + *last_ptr[c] = e; + last_ptr[c] = &e->u.next; + e->u.next = NULL; } alloc_failure: if (array) free (array); - if (lasttab) - htab_delete (lasttab); if (last4tab) htab_delete (last4tab); diff -uprN binutils-2.11.92.0.12.3/bfd/elf.c binutils-2.11.93.0.2/bfd/elf.c --- binutils-2.11.92.0.12.3/bfd/elf.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf.c Sun Feb 3 11:22:30 2002 @@ -1,26 +1,25 @@ /* ELF executable support for BFD. - 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. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* - -SECTION +/* SECTION + ELF backends BFD support for ELF formats is being worked on. @@ -29,8 +28,7 @@ SECTION Documentation of the internals of the support code still needs to be written. The code is changing quickly enough that we - haven't bothered yet. - */ + haven't bothered yet. */ /* For sparc64-cross-sparc32. */ #define _SYSCALL32 @@ -53,6 +51,7 @@ static boolean swap_out_syms PARAMS ((bf static boolean copy_private_bfd_data PARAMS ((bfd *, bfd *)); static char *elf_read PARAMS ((bfd *, file_ptr, bfd_size_type)); static boolean setup_group PARAMS ((bfd *, Elf_Internal_Shdr *, asection *)); +static void merge_sections_remove_hook PARAMS ((bfd *, asection *)); static void elf_fake_sections PARAMS ((bfd *, asection *, PTR)); static void set_group_contents PARAMS ((bfd *, asection *, PTR)); static boolean assign_section_numbers PARAMS ((bfd *)); @@ -71,6 +70,11 @@ static boolean elfcore_grok_prfpreg PARA static boolean elfcore_grok_prxfpreg PARAMS ((bfd *, Elf_Internal_Note *)); static boolean elfcore_grok_note PARAMS ((bfd *, Elf_Internal_Note *)); +static boolean elfcore_netbsd_get_lwpid PARAMS ((Elf_Internal_Note *, int *)); +static boolean elfcore_grok_netbsd_procinfo PARAMS ((bfd *, + Elf_Internal_Note *)); +static boolean elfcore_grok_netbsd_note PARAMS ((bfd *, Elf_Internal_Note *)); + /* Swap version information in and out. The version information is currently size independent. If that ever changes, this code will need to move into elfcode.h. */ @@ -375,7 +379,7 @@ setup_group (abfd, hdr, newsect) /* First count the number of groups. If we have a SHT_GROUP section with just a flag word (ie. sh_size is 4), ignore it. */ - shnum = elf_elfheader (abfd)->e_shnum; + shnum = elf_numsections (abfd); num_group = 0; for (i = 0; i < shnum; i++) { @@ -708,11 +712,11 @@ bfd_elf_find_section (abfd, name) i_shdrp = elf_elfsections (abfd); if (i_shdrp != NULL) { - shstrtab = bfd_elf_get_str_section - (abfd, elf_elfheader (abfd)->e_shstrndx); + shstrtab = bfd_elf_get_str_section (abfd, + elf_elfheader (abfd)->e_shstrndx); if (shstrtab != NULL) { - max = elf_elfheader (abfd)->e_shnum; + max = elf_numsections (abfd); for (i = 1; i < max; i++) if (!strcmp (&shstrtab[i_shdrp[i]->sh_name], name)) return i_shdrp[i]; @@ -765,6 +769,20 @@ bfd_elf_generic_reloc (abfd, return bfd_reloc_continue; } +/* Make sure sec_info_type is cleared if sec_info is cleared too. */ + +static void +merge_sections_remove_hook (abfd, sec) + bfd *abfd ATTRIBUTE_UNUSED; + asection *sec; +{ + struct bfd_elf_section_data *sec_data; + + sec_data = elf_section_data (sec); + BFD_ASSERT (sec_data->sec_info_type == ELF_INFO_TYPE_MERGE); + sec_data->sec_info_type = ELF_INFO_TYPE_NONE; +} + /* Finish SHF_MERGE section merging. */ boolean @@ -775,10 +793,33 @@ _bfd_elf_merge_sections (abfd, info) if (!is_elf_hash_table (info)) return false; if (elf_hash_table (info)->merge_info) - _bfd_merge_sections (abfd, elf_hash_table (info)->merge_info); + _bfd_merge_sections (abfd, elf_hash_table (info)->merge_info, + merge_sections_remove_hook); return true; } +/* Copy the program header and other data from one object module to + another. */ + +boolean +_bfd_elf_copy_private_bfd_data (ibfd, obfd) + bfd *ibfd; + bfd *obfd; +{ + if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour + || bfd_get_flavour (obfd) != bfd_target_elf_flavour) + return true; + + BFD_ASSERT (!elf_flags_init (obfd) + || (elf_elfheader (obfd)->e_flags + == elf_elfheader (ibfd)->e_flags)); + + elf_gp (obfd) = elf_gp (ibfd); + elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; + elf_flags_init (obfd) = true; + return true; +} + /* Print out the program headers. */ boolean @@ -812,6 +853,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_GNU_EH_FRAME: pt = "EH_FRAME"; break; default: sprintf (buf, "0x%lx", p->p_type); pt = buf; break; } fprintf (f, "%8s off 0x", pt); @@ -1242,14 +1284,23 @@ _bfd_elf_link_hash_copy_indirect (dir, i } void -_bfd_elf_link_hash_hide_symbol (info, h) - struct bfd_link_info *info ATTRIBUTE_UNUSED; +_bfd_elf_link_hash_hide_symbol (info, h, force_local) + struct bfd_link_info *info; struct elf_link_hash_entry *h; + boolean force_local; { - h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; h->plt.offset = (bfd_vma) -1; - if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0) - h->dynindx = -1; + h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; + if (force_local) + { + h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; + if (h->dynindx != -1) + { + h->dynindx = -1; + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + h->dynstr_index); + } + } } /* Initialize an ELF linker hash table. */ @@ -1549,6 +1600,20 @@ bfd_section_from_shdr (abfd, shindex) section, so that objcopy can handle it. */ return _bfd_elf_make_section_from_shdr (abfd, hdr, name); + case SHT_SYMTAB_SHNDX: /* Symbol section indices when >64k sections */ + if (elf_symtab_shndx (abfd) == shindex) + return true; + + /* Get the associated symbol table. */ + if (! bfd_section_from_shdr (abfd, hdr->sh_link) + || hdr->sh_link != elf_onesymtab (abfd)) + return false; + + elf_symtab_shndx (abfd) = shindex; + elf_tdata (abfd)->symtab_shndx_hdr = *hdr; + elf_elfsections (abfd)[shindex] = &elf_tdata (abfd)->symtab_shndx_hdr; + return true; + case SHT_STRTAB: /* A string table */ if (hdr->bfd_section != NULL) return true; @@ -1559,9 +1624,10 @@ bfd_section_from_shdr (abfd, shindex) return true; } { - unsigned int i; + unsigned int i, num_sec; - for (i = 1; i < ehdr->e_shnum; i++) + num_sec = elf_numsections (abfd); + for (i = 1; i < num_sec; i++) { Elf_Internal_Shdr *hdr2 = elf_elfsections (abfd)[i]; if (hdr2->sh_link == shindex) @@ -1607,9 +1673,11 @@ bfd_section_from_shdr (abfd, shindex) { asection *target_sect; Elf_Internal_Shdr *hdr2; + unsigned int num_sec = elf_numsections (abfd); /* Check for a bogus link to avoid crashing. */ - if (hdr->sh_link >= ehdr->e_shnum) + if ((hdr->sh_link >= SHN_LORESERVE && hdr->sh_link <= SHN_HIRESERVE) + || hdr->sh_link >= num_sec) { ((*_bfd_error_handler) (_("%s: invalid link %lu for reloc section %s (index %u)"), @@ -1627,11 +1695,11 @@ bfd_section_from_shdr (abfd, shindex) if (elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_SYMTAB && elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_DYNSYM) { - int scan; + unsigned int scan; int found; found = 0; - for (scan = 1; scan < ehdr->e_shnum; scan++) + for (scan = 1; scan < num_sec; scan++) { if (elf_elfsections (abfd)[scan]->sh_type == SHT_SYMTAB || elf_elfsections (abfd)[scan]->sh_type == SHT_DYNSYM) @@ -1758,7 +1826,7 @@ bfd_section_from_r_symndx (abfd, cache, asection *sec; unsigned long r_symndx; { - unsigned char esym_shndx[2]; + unsigned char esym_shndx[4]; unsigned int isym_shndx; Elf_Internal_Shdr *symtab_hdr; file_ptr pos; @@ -1775,18 +1843,34 @@ bfd_section_from_r_symndx (abfd, cache, { pos += r_symndx * sizeof (Elf64_External_Sym); pos += offsetof (Elf64_External_Sym, st_shndx); + amt = sizeof (((Elf64_External_Sym *) 0)->st_shndx); } else { pos += r_symndx * sizeof (Elf32_External_Sym); pos += offsetof (Elf32_External_Sym, st_shndx); + amt = sizeof (((Elf32_External_Sym *) 0)->st_shndx); } - amt = sizeof (esym_shndx); if (bfd_seek (abfd, pos, SEEK_SET) != 0 || bfd_bread ((PTR) esym_shndx, amt, abfd) != amt) return NULL; isym_shndx = H_GET_16 (abfd, esym_shndx); + if (isym_shndx == SHN_XINDEX) + { + Elf_Internal_Shdr *shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + pos = shndx_hdr->sh_offset; + pos += r_symndx * sizeof (Elf_External_Sym_Shndx); + amt = sizeof (Elf_External_Sym_Shndx); + if (bfd_seek (abfd, pos, SEEK_SET) != 0 + || bfd_bread ((PTR) esym_shndx, amt, abfd) != amt) + return NULL; + isym_shndx = H_GET_32 (abfd, esym_shndx); + } + } + if (cache->abfd != abfd) { memset (cache->indx, -1, sizeof (cache->indx)); @@ -1794,7 +1878,7 @@ bfd_section_from_r_symndx (abfd, cache, } cache->indx[ent] = r_symndx; cache->sec[ent] = sec; - if (isym_shndx > 0 && isym_shndx < SHN_LORESERVE) + if (isym_shndx < SHN_LORESERVE || isym_shndx > SHN_HIRESERVE) { asection *s; s = bfd_section_from_elf_index (abfd, isym_shndx); @@ -1812,8 +1896,7 @@ bfd_section_from_elf_index (abfd, index) bfd *abfd; unsigned int index; { - BFD_ASSERT (index > 0 && index < SHN_LORESERVE); - if (index >= elf_elfheader (abfd)->e_shnum) + if (index >= elf_numsections (abfd)) return NULL; return elf_elfsections (abfd)[index]->bfd_section; } @@ -2154,8 +2237,9 @@ elf_fake_sections (abfd, asect, failedpt this_hdr->sh_flags |= SHF_GROUP; /* Check for processor-specific section types. */ - if (bed->elf_backend_fake_sections) - (*bed->elf_backend_fake_sections) (abfd, this_hdr, asect); + if (bed->elf_backend_fake_sections + && !(*bed->elf_backend_fake_sections) (abfd, this_hdr, asect)) + *failedptr = true; /* If the section has relocs, set up a section header for the SHT_REL[A] section. If two relocation sections are required for @@ -2268,18 +2352,24 @@ assign_section_numbers (abfd) { struct bfd_elf_section_data *d = elf_section_data (sec); + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; d->this_idx = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->this_hdr.sh_name); if ((sec->flags & SEC_RELOC) == 0) d->rel_idx = 0; else { + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; d->rel_idx = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel_hdr.sh_name); } if (d->rel_hdr2) { + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; d->rel_idx2 = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), d->rel_hdr2->sh_name); } @@ -2287,21 +2377,42 @@ assign_section_numbers (abfd) d->rel_idx2 = 0; } + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; t->shstrtab_section = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->shstrtab_hdr.sh_name); elf_elfheader (abfd)->e_shstrndx = t->shstrtab_section; if (bfd_get_symcount (abfd) > 0) { + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; t->symtab_section = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->symtab_hdr.sh_name); + if (section_number > SHN_LORESERVE - 2) + { + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; + t->symtab_shndx_section = section_number++; + t->symtab_shndx_hdr.sh_name + = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), + ".symtab_shndx", false); + if (t->symtab_shndx_hdr.sh_name == (unsigned int) -1) + return false; + } + if (section_number == SHN_LORESERVE) + section_number += SHN_HIRESERVE + 1 - SHN_LORESERVE; t->strtab_section = section_number++; _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->strtab_hdr.sh_name); } _bfd_elf_strtab_finalize (elf_shstrtab (abfd)); t->shstrtab_hdr.sh_size = _bfd_elf_strtab_size (elf_shstrtab (abfd)); + + elf_numsections (abfd) = section_number; elf_elfheader (abfd)->e_shnum = section_number; + if (section_number > SHN_LORESERVE) + elf_elfheader (abfd)->e_shnum -= SHN_HIRESERVE + 1 - SHN_LORESERVE; /* Set up the list of section header pointers, in agreement with the indices. */ @@ -2325,6 +2436,11 @@ assign_section_numbers (abfd) if (bfd_get_symcount (abfd) > 0) { i_shdrp[t->symtab_section] = &t->symtab_hdr; + if (elf_numsections (abfd) > SHN_LORESERVE) + { + i_shdrp[t->symtab_shndx_section] = &t->symtab_shndx_hdr; + t->symtab_shndx_hdr.sh_link = t->symtab_section; + } i_shdrp[t->strtab_section] = &t->strtab_hdr; t->symtab_hdr.sh_link = t->strtab_section; } @@ -2438,9 +2554,11 @@ assign_section_numbers (abfd) } for (secn = 1; secn < section_number; ++secn) - i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd), - i_shdrp[secn]->sh_name); - + if (i_shdrp[secn] == NULL) + i_shdrp[secn] = i_shdrp[0]; + else + i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd), + i_shdrp[secn]->sh_name); return true; } @@ -2722,6 +2840,10 @@ _bfd_elf_compute_section_file_positions hdr = &elf_tdata (abfd)->symtab_hdr; off = _bfd_elf_assign_file_position_for_section (hdr, off, true); + hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (hdr->sh_size != 0) + off = _bfd_elf_assign_file_position_for_section (hdr, off, true); + hdr = &elf_tdata (abfd)->strtab_hdr; off = _bfd_elf_assign_file_position_for_section (hdr, off, true); @@ -2795,7 +2917,7 @@ map_sections_to_segments (abfd) asection **hdrpp; boolean phdr_in_segment = true; boolean writable; - asection *dynsec; + asection *dynsec, *eh_frame_hdr; bfd_size_type amt; if (elf_tdata (abfd)->segment_map != NULL) @@ -3035,6 +3157,26 @@ map_sections_to_segments (abfd) } } + /* If there is a .eh_frame_hdr section, throw in a PT_GNU_EH_FRAME + segment. */ + eh_frame_hdr = NULL; + if (elf_tdata (abfd)->eh_frame_hdr) + eh_frame_hdr = bfd_get_section_by_name (abfd, ".eh_frame_hdr"); + if (eh_frame_hdr != NULL && (eh_frame_hdr->flags & SEC_LOAD)) + { + amt = sizeof (struct elf_segment_map); + m = (struct elf_segment_map *) bfd_zalloc (abfd, amt); + if (m == NULL) + goto error_return; + m->next = NULL; + m->p_type = PT_GNU_EH_FRAME; + m->count = 1; + m->sections[0] = eh_frame_hdr; + + *pm = m; + pm = &m->next; + } + free (sections); sections = NULL; @@ -3182,8 +3324,13 @@ assign_file_positions_for_segments (abfd asection **secpp; /* If elf_segment_map is not from map_sections_to_segments, the - sections may not be correctly ordered. */ - if (m->count > 0) + sections may not be correctly ordered. NOTE: sorting should + not be done to the PT_NOTE section of a corefile, which may + contain several pseudo-sections artificially created by bfd. + Sorting these pseudo-sections breaks things badly. */ + if (m->count > 1 + && !(elf_elfheader (abfd)->e_type == ET_CORE + && m->p_type == PT_NOTE)) qsort (m->sections, (size_t) m->count, sizeof (asection *), elf_sort_sections); @@ -3376,13 +3523,11 @@ assign_file_positions_for_segments (abfd { if (i == 0) { - (* _bfd_error_handler) - (_("Error: First section in segment (%s) starts at 0x%x"), - bfd_section_name (abfd, sec), sec->lma); - (* _bfd_error_handler) - (_(" whereas segment starts at 0x%x"), - p->p_paddr); - + (* _bfd_error_handler) (_("\ +Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x"), + bfd_section_name (abfd, sec), + sec->lma, + p->p_paddr); return false; } p->p_memsz += adjust; @@ -3551,6 +3696,13 @@ get_program_header_size (abfd) ++segs; } + if (elf_tdata (abfd)->eh_frame_hdr + && bfd_get_section_by_name (abfd, ".eh_frame_hdr") != NULL) + { + /* We need a PT_GNU_EH_FRAME segment. */ + ++segs; + } + for (s = abfd->sections; s != NULL; s = s->next) { if ((s->flags & SEC_LOAD) != 0 @@ -3594,6 +3746,7 @@ assign_file_positions_except_relocs (abf struct elf_obj_tdata * const tdata = elf_tdata (abfd); Elf_Internal_Ehdr * const i_ehdrp = elf_elfheader (abfd); Elf_Internal_Shdr ** const i_shdrpp = elf_elfsections (abfd); + unsigned int num_sec = elf_numsections (abfd); file_ptr off; struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -3609,24 +3762,27 @@ assign_file_positions_except_relocs (abf /* We are not creating an executable, which means that we are not creating a program header, and that the actual order of the sections in the file is unimportant. */ - for (i = 1, hdrpp = i_shdrpp + 1; i < i_ehdrp->e_shnum; i++, hdrpp++) + for (i = 1, hdrpp = i_shdrpp + 1; i < num_sec; i++, hdrpp++) { Elf_Internal_Shdr *hdr; hdr = *hdrpp; - if (hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA) - { - hdr->sh_offset = -1; - continue; - } - if (i == tdata->symtab_section + if (hdr->sh_type == SHT_REL + || hdr->sh_type == SHT_RELA + || i == tdata->symtab_section + || i == tdata->symtab_shndx_section || i == tdata->strtab_section) { hdr->sh_offset = -1; - continue; } + else + off = _bfd_elf_assign_file_position_for_section (hdr, off, true); - off = _bfd_elf_assign_file_position_for_section (hdr, off, true); + if (i == SHN_LORESERVE - 1) + { + i += SHN_HIRESERVE + 1 - SHN_LORESERVE; + hdrpp += SHN_HIRESERVE + 1 - SHN_LORESERVE; + } } } else @@ -3642,7 +3798,7 @@ assign_file_positions_except_relocs (abf /* Assign file positions for the other sections. */ off = elf_tdata (abfd)->next_file_pos; - for (i = 1, hdrpp = i_shdrpp + 1; i < i_ehdrp->e_shnum; i++, hdrpp++) + for (i = 1, hdrpp = i_shdrpp + 1; i < num_sec; i++, hdrpp++) { Elf_Internal_Shdr *hdr; @@ -3668,10 +3824,17 @@ assign_file_positions_except_relocs (abf else if (hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA || hdr == i_shdrpp[tdata->symtab_section] + || hdr == i_shdrpp[tdata->symtab_shndx_section] || hdr == i_shdrpp[tdata->strtab_section]) hdr->sh_offset = -1; else off = _bfd_elf_assign_file_position_for_section (hdr, off, true); + + if (i == SHN_LORESERVE - 1) + { + i += SHN_HIRESERVE + 1 - SHN_LORESERVE; + hdrpp += SHN_HIRESERVE + 1 - SHN_LORESERVE; + } } } @@ -3806,14 +3969,13 @@ _bfd_elf_assign_file_positions_for_reloc bfd *abfd; { file_ptr off; - unsigned int i; + unsigned int i, num_sec; Elf_Internal_Shdr **shdrpp; off = elf_tdata (abfd)->next_file_pos; - for (i = 1, shdrpp = elf_elfsections (abfd) + 1; - i < elf_elfheader (abfd)->e_shnum; - i++, shdrpp++) + num_sec = elf_numsections (abfd); + for (i = 1, shdrpp = elf_elfsections (abfd) + 1; i < num_sec; i++, shdrpp++) { Elf_Internal_Shdr *shdrp; @@ -3834,7 +3996,7 @@ _bfd_elf_write_object_contents (abfd) Elf_Internal_Ehdr *i_ehdrp; Elf_Internal_Shdr **i_shdrp; boolean failed; - unsigned int count; + unsigned int count, num_sec; if (! abfd->output_has_begun && ! _bfd_elf_compute_section_file_positions @@ -3852,7 +4014,8 @@ _bfd_elf_write_object_contents (abfd) _bfd_elf_assign_file_positions_for_relocs (abfd); /* After writing the headers, we need to write the sections too... */ - for (count = 1; count < i_ehdrp->e_shnum; count++) + num_sec = elf_numsections (abfd); + for (count = 1; count < num_sec; count++) { if (bed->elf_backend_section_processing) (*bed->elf_backend_section_processing) (abfd, i_shdrp[count]); @@ -3864,6 +4027,8 @@ _bfd_elf_write_object_contents (abfd) || bfd_bwrite (i_shdrp[count]->contents, amt, abfd) != amt) return false; } + if (count == SHN_LORESERVE - 1) + count += SHN_HIRESERVE + 1 - SHN_LORESERVE; } /* Write out the section header names. */ @@ -3893,43 +4058,47 @@ _bfd_elf_section_from_bfd_section (abfd, bfd *abfd; struct sec *asect; { - struct elf_backend_data *bed = get_elf_backend_data (abfd); - Elf_Internal_Shdr **i_shdrp = elf_elfsections (abfd); + struct elf_backend_data *bed; int index; - Elf_Internal_Shdr *hdr; - int maxindex = elf_elfheader (abfd)->e_shnum; - for (index = 0; index < maxindex; index++) - { - hdr = i_shdrp[index]; - if (hdr->bfd_section == asect) - return index; - } + if (elf_section_data (asect) != NULL + && elf_section_data (asect)->this_idx != 0) + return elf_section_data (asect)->this_idx; - if (bed->elf_backend_section_from_bfd_section) + if (bfd_is_abs_section (asect)) + index = SHN_ABS; + else if (bfd_is_com_section (asect)) + index = SHN_COMMON; + else if (bfd_is_und_section (asect)) + index = SHN_UNDEF; + else { - for (index = 0; index < maxindex; index++) + Elf_Internal_Shdr **i_shdrp = elf_elfsections (abfd); + int maxindex = elf_numsections (abfd); + + for (index = 1; index < maxindex; index++) { - int retval; + Elf_Internal_Shdr *hdr = i_shdrp[index]; - hdr = i_shdrp[index]; - retval = index; - if ((*bed->elf_backend_section_from_bfd_section) - (abfd, hdr, asect, &retval)) - return retval; + if (hdr != NULL && hdr->bfd_section == asect) + return index; } + index = -1; } - if (bfd_is_abs_section (asect)) - return SHN_ABS; - if (bfd_is_com_section (asect)) - return SHN_COMMON; - if (bfd_is_und_section (asect)) - return SHN_UNDEF; + bed = get_elf_backend_data (abfd); + if (bed->elf_backend_section_from_bfd_section) + { + int retval = index; + + if ((*bed->elf_backend_section_from_bfd_section) (abfd, asect, &retval)) + return retval; + } - bfd_set_error (bfd_error_nonrepresentable_section); + if (index == -1) + bfd_set_error (bfd_error_nonrepresentable_section); - return -1; + return index; } /* Given a BFD symbol, return the index in the ELF symbol table, or -1 @@ -3980,7 +4149,7 @@ _bfd_elf_symbol_from_bfd_symbol (abfd, a #if DEBUG & 4 { fprintf (stderr, - _("elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n"), + "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n", (long) asym_ptr, asym_ptr->name, idx, flags, elf_symbol_flags (flags)); fflush (stderr); @@ -4096,7 +4265,7 @@ copy_private_bfd_data (ibfd, obfd) /* Scan through the segments specified in the program header of the input BFD. For this first scan we look for overlaps - in the loadable segments. These can be created by wierd + in the loadable segments. These can be created by weird parameters to objcopy. */ for (i = 0, segment = elf_tdata (ibfd)->phdr; i < num_segments; @@ -4498,7 +4667,7 @@ copy_private_bfd_data (ibfd, obfd) elf_tdata (obfd)->segment_map = map_first; /* If we had to estimate the number of program headers that were - going to be needed, then check our estimate know and adjust + going to be needed, then check our estimate now and adjust the offset if necessary. */ if (phdr_adjust_seg != NULL) { @@ -4611,10 +4780,11 @@ _bfd_elf_copy_private_section_data (ibfd section indices; these definitions are interpreted by the swap_out_syms function. */ -#define MAP_ONESYMTAB (SHN_LORESERVE - 1) -#define MAP_DYNSYMTAB (SHN_LORESERVE - 2) -#define MAP_STRTAB (SHN_LORESERVE - 3) -#define MAP_SHSTRTAB (SHN_LORESERVE - 4) +#define MAP_ONESYMTAB (SHN_HIOS + 1) +#define MAP_DYNSYMTAB (SHN_HIOS + 2) +#define MAP_STRTAB (SHN_HIOS + 3) +#define MAP_SHSTRTAB (SHN_HIOS + 4) +#define MAP_SYM_SHNDX (SHN_HIOS + 5) boolean _bfd_elf_copy_private_symbol_data (ibfd, isymarg, obfd, osymarg) @@ -4647,6 +4817,8 @@ _bfd_elf_copy_private_symbol_data (ibfd, shndx = MAP_STRTAB; else if (shndx == elf_tdata (ibfd)->shstrtab_section) shndx = MAP_SHSTRTAB; + else if (shndx == elf_tdata (ibfd)->symtab_shndx_section) + shndx = MAP_SYM_SHNDX; osym->internal_elf_sym.st_shndx = shndx; } @@ -4666,8 +4838,10 @@ swap_out_syms (abfd, sttp, relocatable_p asymbol **syms; struct bfd_strtab_hash *stt; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *symtab_shndx_hdr; Elf_Internal_Shdr *symstrtab_hdr; char *outbound_syms; + char *outbound_shndx; int idx; bfd_size_type amt; @@ -4697,6 +4871,22 @@ swap_out_syms (abfd, sttp, relocatable_p return false; symtab_hdr->contents = (PTR) outbound_syms; + outbound_shndx = NULL; + symtab_shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (symtab_shndx_hdr->sh_name != 0) + { + amt = (bfd_size_type) (1 + symcount) * sizeof (Elf_External_Sym_Shndx); + outbound_shndx = bfd_alloc (abfd, amt); + if (outbound_shndx == NULL) + return false; + memset (outbound_shndx, 0, (unsigned long) amt); + symtab_shndx_hdr->contents = outbound_shndx; + symtab_shndx_hdr->sh_type = SHT_SYMTAB_SHNDX; + symtab_shndx_hdr->sh_size = amt; + symtab_shndx_hdr->sh_addralign = sizeof (Elf_External_Sym_Shndx); + symtab_shndx_hdr->sh_entsize = sizeof (Elf_External_Sym_Shndx); + } + /* now generate the data (for "contents") */ { /* Fill in zeroth symbol and swap it out. */ @@ -4707,8 +4897,10 @@ swap_out_syms (abfd, sttp, relocatable_p sym.st_info = 0; sym.st_other = 0; sym.st_shndx = SHN_UNDEF; - bed->s->swap_symbol_out (abfd, &sym, (PTR) outbound_syms); + bed->s->swap_symbol_out (abfd, &sym, outbound_syms, outbound_shndx); outbound_syms += bed->s->sizeof_sym; + if (outbound_shndx != NULL) + outbound_shndx += sizeof (Elf_External_Sym_Shndx); } syms = bfd_get_outsymbols (abfd); @@ -4789,6 +4981,9 @@ swap_out_syms (abfd, sttp, relocatable_p case MAP_SHSTRTAB: shndx = elf_tdata (abfd)->shstrtab_section; break; + case MAP_SYM_SHNDX: + shndx = elf_tdata (abfd)->symtab_shndx_section; + break; default: break; } @@ -4866,8 +5061,10 @@ swap_out_syms (abfd, sttp, relocatable_p else sym.st_other = 0; - bed->s->swap_symbol_out (abfd, &sym, (PTR) outbound_syms); + bed->s->swap_symbol_out (abfd, &sym, outbound_syms, outbound_shndx); outbound_syms += bed->s->sizeof_sym; + if (outbound_shndx != NULL) + outbound_shndx += sizeof (Elf_External_Sym_Shndx); } *sttp = stt; @@ -5754,7 +5951,10 @@ elfcore_grok_prstatus (abfd, note) offset = offsetof (prstatus_t, pr_reg); memcpy (&prstat, note->descdata, sizeof (prstat)); - elf_tdata (abfd)->core_signal = prstat.pr_cursig; + /* Do not overwrite the core signal if it + has already been set by another thread. */ + if (elf_tdata (abfd)->core_signal == 0) + elf_tdata (abfd)->core_signal = prstat.pr_cursig; elf_tdata (abfd)->core_pid = prstat.pr_pid; /* pr_who exists on: @@ -5777,7 +5977,10 @@ elfcore_grok_prstatus (abfd, note) offset = offsetof (prstatus32_t, pr_reg); memcpy (&prstat, note->descdata, sizeof (prstat)); - elf_tdata (abfd)->core_signal = prstat.pr_cursig; + /* Do not overwrite the core signal if it + has already been set by another thread. */ + if (elf_tdata (abfd)->core_signal == 0) + elf_tdata (abfd)->core_signal = prstat.pr_cursig; elf_tdata (abfd)->core_pid = prstat.pr_pid; /* pr_who exists on: @@ -6078,7 +6281,7 @@ elfcore_grok_win32pstatus (abfd, note) if (note->descsz < sizeof (pstatus)) return true; - memcpy (&pstatus, note->descdata, note->descsz); + memcpy (&pstatus, note->descdata, sizeof (pstatus)); switch (pstatus.data_type) { @@ -6204,6 +6407,246 @@ elfcore_grok_note (abfd, note) } static boolean +elfcore_netbsd_get_lwpid (note, lwpidp) + Elf_Internal_Note *note; + int *lwpidp; +{ + char *cp; + + cp = strchr (note->namedata, '@'); + if (cp != NULL) + { + *lwpidp = atoi(cp); + return true; + } + return false; +} + +static boolean +elfcore_grok_netbsd_procinfo (abfd, note) + bfd *abfd; + Elf_Internal_Note *note; +{ + + /* Signal number at offset 0x08. */ + elf_tdata (abfd)->core_signal + = bfd_h_get_32 (abfd, (bfd_byte *) note->descdata + 0x08); + + /* Process ID at offset 0x50. */ + elf_tdata (abfd)->core_pid + = bfd_h_get_32 (abfd, (bfd_byte *) note->descdata + 0x50); + + /* Command name at 0x7c (max 32 bytes, including nul). */ + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 0x7c, 31); + + return true; +} + +static boolean +elfcore_grok_netbsd_note (abfd, note) + bfd *abfd; + Elf_Internal_Note *note; +{ + int lwp; + + if (elfcore_netbsd_get_lwpid (note, &lwp)) + elf_tdata (abfd)->core_lwpid = lwp; + + if (note->type == NT_NETBSDCORE_PROCINFO) + { + /* NetBSD-specific core "procinfo". Note that we expect to + find this note before any of the others, which is fine, + since the kernel writes this note out first when it + creates a core file. */ + + return elfcore_grok_netbsd_procinfo (abfd, note); + } + + /* As of Jan 2002 there are no other machine-independent notes + defined for NetBSD core files. If the note type is less + than the start of the machine-dependent note types, we don't + understand it. */ + + if (note->type < NT_NETBSDCORE_FIRSTMACH) + return true; + + + switch (bfd_get_arch (abfd)) + { + /* On the Alpha, SPARC (32-bit and 64-bit), PT_GETREGS == mach+0 and + PT_GETFPREGS == mach+2. */ + + case bfd_arch_alpha: + case bfd_arch_sparc: + switch (note->type) + { + case NT_NETBSDCORE_FIRSTMACH+0: + return elfcore_make_note_pseudosection (abfd, ".reg", note); + + case NT_NETBSDCORE_FIRSTMACH+2: + return elfcore_make_note_pseudosection (abfd, ".reg2", note); + + default: + return true; + } + + /* On all other arch's, PT_GETREGS == mach+1 and + PT_GETFPREGS == mach+3. */ + + default: + switch (note->type) + { + case NT_NETBSDCORE_FIRSTMACH+1: + return elfcore_make_note_pseudosection (abfd, ".reg", note); + + case NT_NETBSDCORE_FIRSTMACH+3: + return elfcore_make_note_pseudosection (abfd, ".reg2", note); + + default: + return true; + } + } + /* NOTREACHED */ +} + +/* Function: elfcore_write_note + + Inputs: + buffer to hold note + name of note + type of note + data for note + size of data for note + + Return: + End of buffer containing note. */ + +char * +elfcore_write_note (abfd, buf, bufsiz, name, type, input, size) + bfd *abfd; + char *buf; + int *bufsiz; + char *name; + int type; + void *input; + int size; +{ + Elf_External_Note *xnp; + int namesz = strlen (name); + int newspace = BFD_ALIGN (sizeof (Elf_External_Note) + size + namesz - 1, 4); + char *p, *dest; + + p = realloc (buf, *bufsiz + newspace); + dest = p + *bufsiz; + *bufsiz += newspace; + xnp = (Elf_External_Note *) dest; + H_PUT_32 (abfd, namesz, xnp->namesz); + H_PUT_32 (abfd, size, xnp->descsz); + H_PUT_32 (abfd, type, xnp->type); + strcpy (xnp->name, name); + memcpy (xnp->name + BFD_ALIGN (namesz, 4), input, size); + return p; +} + +#if defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T) +char * +elfcore_write_prpsinfo (abfd, buf, bufsiz, fname, psargs) + bfd *abfd; + char *buf; + int *bufsiz; + char *fname; + char *psargs; +{ + int note_type; + char *note_name = "CORE"; + +#if defined (HAVE_PSINFO_T) + psinfo_t data; + note_type = NT_PSINFO; +#else + prpsinfo_t data; + note_type = NT_PRPSINFO; +#endif + + memset (&data, 0, sizeof (data)); + strncpy (data.pr_fname, fname, sizeof (data.pr_fname)); + strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs)); + return elfcore_write_note (abfd, buf, bufsiz, + note_name, note_type, &data, sizeof (data)); +} +#endif /* PSINFO_T or PRPSINFO_T */ + +#if defined (HAVE_PRSTATUS_T) +char * +elfcore_write_prstatus (abfd, buf, bufsiz, pid, cursig, gregs) + bfd *abfd; + char *buf; + int *bufsiz; + long pid; + int cursig; + void *gregs; +{ + prstatus_t prstat; + char *note_name = "CORE"; + + memset (&prstat, 0, sizeof (prstat)); + prstat.pr_pid = pid; + prstat.pr_cursig = cursig; + memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg)); + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_PRSTATUS, &prstat, sizeof (prstat)); +} +#endif /* HAVE_PRSTATUS_T */ + +#if defined (HAVE_PSTATUS_T) +char * +elfcore_write_pstatus (abfd, buf, bufsiz, pid, cursig, gregs) + bfd *abfd; + char *buf; + int *bufsiz; + long pid; + int cursig; + void *gregs; +{ + pstatus_t pstat; + char *note_name = "CORE"; + + memset (&pstat, 0, sizeof (prstat)); + pstat.pr_pid = pid; + memcpy (pstat.pr_reg, gregs, sizeof (pstat.pr_reg)); + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_PSTATUS, &pstat, sizeof (pstat)); +} +#endif /* HAVE_PSTATUS_T */ + +char * +elfcore_write_prfpreg (abfd, buf, bufsiz, fpregs, size) + bfd *abfd; + char *buf; + int *bufsiz; + void *fpregs; + int size; +{ + char *note_name = "CORE"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_FPREGSET, fpregs, size); +} + +char * +elfcore_write_prxfpreg (abfd, buf, bufsiz, xfpregs, size) + bfd *abfd; + char *buf; + int *bufsiz; + void *xfpregs; + int size; +{ + char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_PRXFPREG, xfpregs, size); +} + +static boolean elfcore_read_notes (abfd, offset, size) bfd *abfd; file_ptr offset; @@ -6245,8 +6688,16 @@ elfcore_read_notes (abfd, offset, size) in.descdata = in.namedata + BFD_ALIGN (in.namesz, 4); in.descpos = offset + (in.descdata - buf); - if (! elfcore_grok_note (abfd, &in)) - goto error; + if (strncmp (in.namedata, "NetBSD-CORE", 11) == 0) + { + if (! elfcore_grok_netbsd_note (abfd, &in)) + goto error; + } + else + { + if (! elfcore_grok_note (abfd, &in)) + goto error; + } p = in.descdata + BFD_ALIGN (in.descsz, 4); } @@ -6371,3 +6822,76 @@ _bfd_elf_reloc_type_class (rela) { return reloc_class_normal; } + +/* For RELA architectures, return what the relocation value for + relocation against a local symbol. */ + +bfd_vma +_bfd_elf_rela_local_sym (abfd, sym, sec, rel) + bfd *abfd; + Elf_Internal_Sym *sym; + asection *sec; + Elf_Internal_Rela *rel; +{ + bfd_vma relocation; + + relocation = (sec->output_section->vma + + sec->output_offset + + sym->st_value); + if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION + && elf_section_data (sec)->sec_info_type == ELF_INFO_TYPE_MERGE) + { + asection *msec; + + msec = sec; + rel->r_addend = + _bfd_merged_section_offset (abfd, &msec, + elf_section_data (sec)->sec_info, + sym->st_value + rel->r_addend, + (bfd_vma) 0) + - relocation; + rel->r_addend += msec->output_section->vma + msec->output_offset; + } + return relocation; +} + +bfd_vma +_bfd_elf_rel_local_sym (abfd, sym, psec, addend) + bfd *abfd; + Elf_Internal_Sym *sym; + asection **psec; + bfd_vma addend; +{ + asection *sec = *psec; + + if (elf_section_data (sec)->sec_info_type != ELF_INFO_TYPE_MERGE) + return sym->st_value + addend; + + return _bfd_merged_section_offset (abfd, psec, + elf_section_data (sec)->sec_info, + sym->st_value + addend, (bfd_vma) 0); +} + +bfd_vma +_bfd_elf_section_offset (abfd, info, sec, offset) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; + bfd_vma offset; +{ + struct bfd_elf_section_data *sec_data; + + sec_data = elf_section_data (sec); + switch (sec_data->sec_info_type) + { + case ELF_INFO_TYPE_STABS: + return _bfd_stab_section_offset + (abfd, &elf_hash_table (info)->merge_info, sec, &sec_data->sec_info, + offset); + case ELF_INFO_TYPE_EH_FRAME: + return _bfd_elf_eh_frame_section_offset (abfd, sec, offset); + default: + return offset; + } +} diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-arm.h binutils-2.11.93.0.2/bfd/elf32-arm.h --- binutils-2.11.92.0.12.3/bfd/elf32-arm.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-arm.h Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* 32-bit ELF support for ARM - 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. @@ -1149,22 +1149,11 @@ elf32_arm_final_link_relocate (howto, in skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - & elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -1510,6 +1499,47 @@ elf32_arm_final_link_relocate (howto, in } break; + case R_ARM_THM_PC11: + /* Thumb B (branch) instruction). */ + { + bfd_vma relocation; + bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1; + bfd_signed_vma reloc_signed_min = ~ reloc_signed_max; + bfd_vma check; + bfd_signed_vma signed_check; + +#ifdef USE_REL + /* Need to refetch addend. */ + addend = bfd_get_16 (input_bfd, hit_data) & howto->src_mask; + /* ??? Need to determine shift amount from operand size. */ + addend >>= howto->rightshift; +#endif + relocation = value + addend; + + relocation -= (input_section->output_section->vma + + input_section->output_offset + + rel->r_offset); + + check = relocation >> howto->rightshift; + + /* If this is a signed value, the rightshift just + dropped leading 1 bits (assuming twos complement). */ + if ((bfd_signed_vma) relocation >= 0) + signed_check = check; + else + signed_check = check | ~((bfd_vma) -1 >> howto->rightshift); + + relocation |= (bfd_get_16 (input_bfd, hit_data) & (~ howto->dst_mask)); + + bfd_put_16 (input_bfd, relocation, hit_data); + + /* Assumes two's complement. */ + if (signed_check > reloc_signed_max || signed_check < reloc_signed_min) + return bfd_reloc_overflow; + + return bfd_reloc_ok; + } + case R_ARM_GNU_VTINHERIT: case R_ARM_GNU_VTENTRY: return bfd_reloc_ok; @@ -1858,9 +1888,49 @@ elf32_arm_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; +#ifdef USE_REL relocation = (sec->output_section->vma + sec->output_offset + sym->st_value); + if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + asection *msec; + bfd_vma addend, value; + + if (howto->rightshift) + { + (*_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; + } + + value = bfd_get_32 (input_bfd, contents + rel->r_offset); + + /* Get the (signed) value from the instruction. */ + addend = value & howto->src_mask; + if (addend & ((howto->src_mask + 1) >> 1)) + { + bfd_signed_vma mask; + + mask = -1; + mask &= ~ howto->src_mask; + addend |= mask; + } + msec = sec; + addend = + _bfd_elf_rel_local_sym (output_bfd, sym, &msec, addend) + - relocation; + addend += msec->output_section->vma + msec->output_offset; + value = (value & ~ howto->dst_mask) | (addend & howto->dst_mask); + bfd_put_32 (input_bfd, value, contents + rel->r_offset); + } +#else + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); +#endif } else { @@ -2042,11 +2112,11 @@ elf32_arm_set_private_flags (abfd, flags { if (flags & EF_ARM_INTERWORK) (*_bfd_error_handler) (_("\ -Warning: Not setting interwork flag of %s since it has already been specified as non-interworking"), +Warning: Not setting interworking flag of %s since it has already been specified as non-interworking"), bfd_archive_filename (abfd)); else _bfd_error_handler (_("\ -Warning: Clearing the interwork flag of %s due to outside request"), +Warning: Clearing the interworking flag of %s due to outside request"), bfd_archive_filename (abfd)); } } @@ -2094,7 +2164,7 @@ elf32_arm_copy_private_bfd_data (ibfd, o { if (out_flags & EF_ARM_INTERWORK) _bfd_error_handler (_("\ -Warning: Clearing the interwork flag in %s because non-interworking code in %s has been linked with it"), +Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it"), bfd_get_filename (obfd), bfd_archive_filename (ibfd)); @@ -2189,7 +2259,7 @@ elf32_arm_merge_private_bfd_data (ibfd, if (EF_ARM_EABI_VERSION (in_flags) != EF_ARM_EABI_VERSION (out_flags)) { _bfd_error_handler (_("\ -Error: %s compiled for EABI version %d, whereas %s is compiled for version %d"), +ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d"), bfd_archive_filename (ibfd), (in_flags & EF_ARM_EABIMASK) >> 24, bfd_get_filename (obfd), @@ -2203,7 +2273,7 @@ Error: %s compiled for EABI version %d, if ((in_flags & EF_ARM_APCS_26) != (out_flags & EF_ARM_APCS_26)) { _bfd_error_handler (_("\ -Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d"), +ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d"), bfd_archive_filename (ibfd), in_flags & EF_ARM_APCS_26 ? 26 : 32, bfd_get_filename (obfd), @@ -2213,41 +2283,80 @@ Error: %s compiled for APCS-%d, whereas if ((in_flags & EF_ARM_APCS_FLOAT) != (out_flags & EF_ARM_APCS_FLOAT)) { - char *s1 = in_flags & EF_ARM_APCS_FLOAT ? _("float") : _("integer"); - char *s2 = out_flags & EF_ARM_APCS_FLOAT ? _("float") : _("integer"); + if (in_flags & EF_ARM_APCS_FLOAT) + _bfd_error_handler (_("\ +ERROR: %s passes floats in float registers, whereas %s passes them in integer registers"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + else + _bfd_error_handler (_("\ +ERROR: %s passes floats in integer registers, whereas %s passes them in float registers"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + + flags_compatible = false; + } + + if ((in_flags & EF_ARM_VFP_FLOAT) != (out_flags & EF_ARM_VFP_FLOAT)) + { + if (in_flags & EF_ARM_VFP_FLOAT) + _bfd_error_handler (_("\ +ERROR: %s uses VFP instructions, whereas %s uses FPA instructions"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + else + _bfd_error_handler (_("\ +ERROR: %s uses FPA instructions, whereas %s uses VFP instructions"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); - _bfd_error_handler (_("\ -Error: %s passes floats in %s registers, whereas %s passes them in %s registers"), - bfd_archive_filename (ibfd), s1, - bfd_get_filename (obfd), s2); flags_compatible = false; } #ifdef EF_ARM_SOFT_FLOAT if ((in_flags & EF_ARM_SOFT_FLOAT) != (out_flags & EF_ARM_SOFT_FLOAT)) { - char *s1 = in_flags & EF_ARM_SOFT_FLOAT ? _("soft") : _("hard"); - char *s2 = out_flags & EF_ARM_SOFT_FLOAT ? _("soft") : _("hard"); + /* We can allow interworking between code that is VFP format + layout, and uses either soft float or integer regs for + passing floating point arguments and results. We already + know that the APCS_FLOAT flags match; similarly for VFP + flags. */ + if ((in_flags & EF_ARM_APCS_FLOAT) != 0 + || (in_flags & EF_ARM_VFP_FLOAT) == 0) + { + if (in_flags & EF_ARM_SOFT_FLOAT) + _bfd_error_handler (_ ("\ +ERROR: %s uses software FP, whereas %s uses hardware FP"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + else + _bfd_error_handler (_ ("\ +ERROR: %s uses hardware FP, whereas %s uses software FP"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); - _bfd_error_handler (_ ("\ -Error: %s uses %s floating point, whereas %s uses %s floating point"), - bfd_archive_filename (ibfd), s1, - bfd_get_filename (obfd), s2); - flags_compatible = false; + flags_compatible = false; + } } #endif /* Interworking mismatch is only a warning. */ if ((in_flags & EF_ARM_INTERWORK) != (out_flags & EF_ARM_INTERWORK)) { - char *s1 = (in_flags & EF_ARM_INTERWORK - ? _("supports") : _("does not support")); - char *s2 = out_flags & EF_ARM_INTERWORK ? _("does") : _("does not"); - - _bfd_error_handler (_("\ -Warning: %s %s interworking, whereas %s %s"), - bfd_archive_filename (ibfd), s1, - bfd_get_filename (obfd), s2); + if (in_flags & EF_ARM_INTERWORK) + { + _bfd_error_handler (_("\ +Warning: %s supports interworking, whereas %s does not"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + } + else + { + _bfd_error_handler (_("\ +Warning: %s does not support interworking, whereas %s does"), + bfd_archive_filename (ibfd), + bfd_get_filename (obfd)); + } } } @@ -2286,9 +2395,14 @@ elf32_arm_print_private_bfd_data (abfd, fprintf (file, _(" [interworking enabled]")); if (flags & EF_ARM_APCS_26) - fprintf (file, _(" [APCS-26]")); + fprintf (file, " [APCS-26]"); else - fprintf (file, _(" [APCS-32]")); + fprintf (file, " [APCS-32]"); + + if (flags & EF_ARM_VFP_FLOAT) + fprintf (file, _(" [VFP float format]")); + else + fprintf (file, _(" [FPA float format]")); if (flags & EF_ARM_APCS_FLOAT) fprintf (file, _(" [floats passed in float registers]")); @@ -2305,8 +2419,9 @@ elf32_arm_print_private_bfd_data (abfd, if (flags & EF_ARM_SOFT_FLOAT) fprintf (file, _(" [software FP]")); - flags &= ~(EF_ARM_INTERWORK | EF_ARM_APCS_26 | EF_ARM_APCS_FLOAT | EF_ARM_PIC - | EF_ARM_NEW_ABI | EF_ARM_OLD_ABI | EF_ARM_SOFT_FLOAT); + flags &= ~(EF_ARM_INTERWORK | EF_ARM_APCS_26 | EF_ARM_APCS_FLOAT + | EF_ARM_PIC | EF_ARM_NEW_ABI | EF_ARM_OLD_ABI + | EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT); break; case EF_ARM_EABI_VER1: @@ -2420,14 +2535,9 @@ elf32_arm_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } + return NULL; } @@ -3091,12 +3201,16 @@ elf32_arm_size_dynamic_sections (output_ asection ** spp; for (spp = &s->output_section->owner->sections; - *spp != s->output_section; + *spp != NULL; spp = &(*spp)->next) - ; - *spp = s->output_section->next; - --s->output_section->owner->section_count; - + { + if (*spp == s->output_section) + { + bfd_section_list_remove (s->output_section->owner, spp); + --s->output_section->owner->section_count; + break; + } + } continue; } diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-avr.c binutils-2.11.93.0.2/bfd/elf32-avr.c --- binutils-2.11.92.0.12.3/bfd/elf32-avr.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-avr.c Sun Feb 3 11:22:30 2002 @@ -427,14 +427,9 @@ elf32_avr_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && !((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } + return NULL; } @@ -778,9 +773,7 @@ elf32_avr_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-cris.c binutils-2.11.93.0.2/bfd/elf32-cris.c --- binutils-2.11.92.0.12.3/bfd/elf32-cris.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-cris.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* CRIS-specific support for 32-bit ELF. - Copyright 2000, 2001 Free Software Foundation, Inc. + Copyright 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Axis Communications AB. Written by Hans-Peter Nilsson, based on elf32-fr30.c PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c. @@ -90,7 +90,7 @@ static boolean elf_cris_finish_dynamic_s static boolean elf_cris_finish_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); static void elf_cris_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); static enum elf_reloc_type_class elf_cris_reloc_type_class PARAMS ((const Elf_Internal_Rela *)); @@ -870,9 +870,7 @@ cris_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); symname = (bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name)); @@ -1164,6 +1162,20 @@ cris_elf_relocate_section (output_bfd, i return false; } + /* This can happen if we get a link error with the input ELF + variant mismatching the output variant. Emit an error so + it's noticed if it happens elsewhere. */ + if (sgot == NULL) + { + (*_bfd_error_handler) + (_("%s: relocation %s in section %s with no GOT created"), + bfd_archive_filename (input_bfd), + cris_elf_howto_table[r_type].name, + bfd_get_section_name (input_bfd, input_section)); + bfd_set_error (bfd_error_bad_value); + return false; + } + /* This relocation is like a PC-relative one, except the reference point is the location of GOT. Note that sgot->output_offset is not involved in this calculation. We @@ -1285,22 +1297,11 @@ cris_elf_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -1803,13 +1804,7 @@ cris_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -2047,13 +2042,14 @@ elf_cris_try_fold_plt_to_got (h, p) entry. */ static void -elf_cris_hide_symbol (info, h) +elf_cris_hide_symbol (info, h, force_local) struct bfd_link_info *info; struct elf_link_hash_entry *h; + boolean force_local; { elf_cris_adjust_gotplt_to_got ((struct elf_cris_link_hash_entry *) h, info); - _bfd_elf_link_hash_hide_symbol (info, h); + _bfd_elf_link_hash_hide_symbol (info, h, force_local); } /* Adjust a symbol defined by a dynamic object and referenced by a @@ -2940,8 +2936,14 @@ elf_cris_discard_excess_program_dynamics /* If the locally-defined symbol isn't used by a DSO, then we don't have to export it as a dynamic symbol. This was already done for functions; doing this for all symbols would presumably not - introduce new problems. */ - h->root.dynindx = -1; + introduce new problems. Of course we don't do this if we're + exporting all dynamic symbols. */ + if (! info->export_dynamic) + { + h->root.dynindx = -1; + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + h->root.dynstr_index); + } } return true; diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-d10v.c binutils-2.11.93.0.2/bfd/elf32-d10v.c --- binutils-2.11.92.0.12.3/bfd/elf32-d10v.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-d10v.c Sun Feb 3 11:22:30 2002 @@ -52,12 +52,12 @@ static reloc_howto_type elf_d10v_howto_t 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - false, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ - "R_D10V_NONE", /* name */ - false, /* partial_inplace */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_D10V_NONE", /* name */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ false), /* pcrel_offset */ @@ -67,44 +67,44 @@ static reloc_howto_type elf_d10v_howto_t HOWTO (R_D10V_10_PCREL_R, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 10, /* bitsize */ - true, /* pc_relative */ + 8, /* bitsize */ + true, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D10V_10_PCREL_R", /* name */ - false, /* partial_inplace */ - 0xff, /* src_mask */ + false, /* partial_inplace */ + 0xff, /* src_mask */ 0xff, /* dst_mask */ - true), /* pcrel_offset */ + true), /* pcrel_offset */ /* An PC Relative 10-bit relocation, shifted by 2 */ /* left container */ HOWTO (R_D10V_10_PCREL_L, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 10, /* bitsize */ - true, /* pc_relative */ + 8, /* bitsize */ + true, /* pc_relative */ 15, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D10V_10_PCREL_L", /* name */ - false, /* partial_inplace */ - 0x07f8000, /* src_mask */ - 0x07f8000, /* dst_mask */ - true), /* pcrel_offset */ + false, /* partial_inplace */ + 0x07f8000, /* src_mask */ + 0x07f8000, /* dst_mask */ + true), /* pcrel_offset */ /* A 16 bit absolute relocation */ HOWTO (R_D10V_16, /* type */ 0, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ - false, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_D10V_16", /* name */ - false, /* partial_inplace */ + false, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -113,13 +113,13 @@ static reloc_howto_type elf_d10v_howto_t HOWTO (R_D10V_18, /* type */ 2, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ - 18, /* bitsize */ - false, /* pc_relative */ + 16, /* bitsize */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_D10V_18", /* name */ - false, /* partial_inplace */ + false, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -128,13 +128,13 @@ static reloc_howto_type elf_d10v_howto_t HOWTO (R_D10V_18_PCREL, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 18, /* bitsize */ - true, /* pc_relative */ + 16, /* bitsize */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_D10V_18_PCREL", /* name */ - false, /* partial_inplace */ + false, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ true), /* pcrel_offset */ @@ -144,12 +144,12 @@ static reloc_howto_type elf_d10v_howto_t 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - false, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ "R_D10V_32", /* name */ - false, /* partial_inplace */ + false, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ @@ -272,14 +272,8 @@ elf32_d10v_gc_mark_hook (abfd, info, rel } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } return NULL; } @@ -356,7 +350,7 @@ elf32_d10v_check_relocs (abfd, info, sec static boolean elf32_d10v_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, local_syms, local_sections) - bfd *output_bfd ATTRIBUTE_UNUSED; + bfd *output_bfd; struct bfd_link_info *info; bfd *input_bfd; asection *input_section; @@ -422,9 +416,7 @@ elf32_d10v_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-fr30.c binutils-2.11.93.0.2/bfd/elf32-fr30.c --- binutils-2.11.92.0.12.3/bfd/elf32-fr30.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-fr30.c Sun Feb 3 11:22:30 2002 @@ -503,7 +503,7 @@ fr30_final_link_relocate (howto, input_b static boolean fr30_elf_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, local_syms, local_sections) - bfd * output_bfd ATTRIBUTE_UNUSED; + bfd * output_bfd; struct bfd_link_info * info; bfd * input_bfd; asection * input_section; @@ -571,9 +571,7 @@ fr30_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); @@ -716,13 +714,7 @@ fr30_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-h8300.c binutils-2.11.93.0.2/bfd/elf32-h8300.c --- binutils-2.11.92.0.12.3/bfd/elf32-h8300.c Fri Oct 19 23:57:48 2001 +++ binutils-2.11.93.0.2/bfd/elf32-h8300.c Sun Feb 3 11:22:30 2002 @@ -42,7 +42,7 @@ static boolean elf32_h8_relax_section static boolean elf32_h8_relax_delete_bytes PARAMS ((bfd *, asection *, bfd_vma, int)); static boolean elf32_h8_symbol_address_p - PARAMS ((bfd *, asection *, Elf32_External_Sym *, bfd_vma)); + PARAMS ((bfd *, asection *, bfd_vma)); static bfd_byte *elf32_h8_get_relocated_section_contents PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, boolean, asymbol **)); @@ -473,9 +473,7 @@ elf32_h8_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -692,6 +690,7 @@ elf32_h8_relax_section (abfd, sec, link_ boolean *again; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; @@ -699,6 +698,7 @@ elf32_h8_relax_section (abfd, sec, link_ bfd_byte *free_contents = NULL; Elf32_External_Sym *extsyms = NULL; Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; static asection *last_input_section = NULL; static Elf_Internal_Rela *last_reloc = NULL; @@ -720,6 +720,7 @@ elf32_h8_relax_section (abfd, sec, link_ sec->_cooked_size = sec->_raw_size; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; /* Get a copy of the native relocations. */ internal_relocs = (_bfd_elf32_link_read_relocs @@ -766,7 +767,7 @@ elf32_h8_relax_section (abfd, sec, link_ } } - /* Read this BFD's symbols if we haven't done so already. */ + /* Read this BFD's local symbols if we haven't done so already. */ if (extsyms == NULL) { /* Get cached copy if it exists. */ @@ -775,28 +776,46 @@ elf32_h8_relax_section (abfd, sec, link_ else { /* Go get them off disk. */ - extsyms = ((Elf32_External_Sym *) - bfd_malloc (symtab_hdr->sh_size)); + bfd_size_type amt; + + amt = symtab_hdr->sh_info * sizeof (Elf32_External_Sym); + extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) - != symtab_hdr->sh_size)) + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) goto error_return; + symtab_hdr->contents = (PTR) extsyms; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + shndx_hdr->contents = (PTR) shndx_buf; } } /* Get the value of the symbol referred to by the reloc. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; asection *sym_sec; /* A local symbol. */ - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irel->r_info), - &isym); + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); symval = (isym.st_value @@ -864,7 +883,6 @@ elf32_h8_relax_section (abfd, sec, link_ elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* If the previous instruction conditionally jumped around @@ -880,6 +898,8 @@ elf32_h8_relax_section (abfd, sec, link_ && ELF32_R_TYPE (last_reloc->r_info) == R_H8_PCREL8 && ELF32_R_SYM (last_reloc->r_info) < symtab_hdr->sh_info) { + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; bfd_vma last_value; asection *last_sym_sec; Elf_Internal_Sym last_symbol; @@ -887,9 +907,11 @@ elf32_h8_relax_section (abfd, sec, link_ /* We will need to examine the symbol used by the previous relocation. */ - bfd_elf32_swap_symbol_in (abfd, - (extsyms + ELF32_R_SYM (last_reloc->r_info)), - &last_symbol); + esym = extsyms + ELF32_R_SYM (last_reloc->r_info); + shndx = shndx_buf; + if (shndx != NULL) + shndx += ELF32_R_SYM (last_reloc->r_info); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &last_symbol); last_sym_sec = bfd_section_from_elf_index (abfd, last_symbol.st_shndx); @@ -902,8 +924,7 @@ elf32_h8_relax_section (abfd, sec, link_ exists at the current location. */ if (last_value == dot + 4 && last_reloc->r_offset + 2 == irel->r_offset - && ! elf32_h8_symbol_address_p (abfd, sec, - extsyms, dot)) + && ! elf32_h8_symbol_address_p (abfd, sec, dot)) { /* We can eliminate this jump. Twiddle the previous relocation as necessary. */ @@ -991,7 +1012,6 @@ elf32_h8_relax_section (abfd, sec, link_ elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Get the opcode. */ @@ -1053,7 +1073,6 @@ elf32_h8_relax_section (abfd, sec, link_ elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Get the opcode. */ @@ -1116,7 +1135,6 @@ elf32_h8_relax_section (abfd, sec, link_ elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Get the opcode. */ @@ -1173,7 +1191,6 @@ elf32_h8_relax_section (abfd, sec, link_ elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Get the opcode. */ @@ -1223,16 +1240,19 @@ elf32_h8_relax_section (abfd, sec, link_ free_contents = NULL; } + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } + if (free_extsyms != NULL) { if (! link_info->keep_memory) - free (free_extsyms); - else { - /* Cache the symbols for elf_link_input_bfd. */ - symtab_hdr->contents = (unsigned char *) extsyms; + symtab_hdr->contents = NULL; + free (free_extsyms); } - free_extsyms = NULL; } return true; @@ -1242,8 +1262,16 @@ elf32_h8_relax_section (abfd, sec, link_ free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } if (free_extsyms != NULL) - free (free_extsyms); + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } return false; } @@ -1257,19 +1285,23 @@ elf32_h8_relax_delete_bytes (abfd, sec, int count; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf32_External_Sym *extsyms; - int shndx, index; + unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf32_External_Sym *esym, *esymend; - struct elf_link_hash_entry *sym_hash; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; extsyms = (Elf32_External_Sym *) symtab_hdr->contents; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; @@ -1297,40 +1329,41 @@ elf32_h8_relax_delete_bytes (abfd, sec, } /* Adjust the local symbols defined in this section. */ + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; esym = extsyms; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; + Elf_External_Sym_Shndx dummy; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value > addr && isym.st_value < toaddr) { isym.st_value -= count; - bfd_elf32_swap_symbol_out (abfd, &isym, esym); + bfd_elf32_swap_symbol_out (abfd, &isym, esym, &dummy); } } /* Now adjust the global symbols defined in this section. */ - esym = extsyms + symtab_hdr->sh_info; - esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; esym < esymend; esym++, index++) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) { - Elf_Internal_Sym isym; - - bfd_elf32_swap_symbol_in (abfd, esym, &isym); - sym_hash = elf_sym_hashes (abfd)[index]; - if (isym.st_shndx == shndx - && ((sym_hash)->root.type == bfd_link_hash_defined - || (sym_hash)->root.type == bfd_link_hash_defweak) - && (sym_hash)->root.u.def.section == sec - && (sym_hash)->root.u.def.value > addr - && (sym_hash)->root.u.def.value < toaddr) + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value < toaddr) { - (sym_hash)->root.u.def.value -= count; + sym_hash->root.u.def.value -= count; } } @@ -1340,46 +1373,53 @@ elf32_h8_relax_delete_bytes (abfd, sec, /* Return true if a symbol exists at the given address, else return false. */ static boolean -elf32_h8_symbol_address_p (abfd, sec, extsyms, addr) +elf32_h8_symbol_address_p (abfd, sec, addr) bfd *abfd; asection *sec; - Elf32_External_Sym *extsyms; bfd_vma addr; { Elf_Internal_Shdr *symtab_hdr; - int shndx; + Elf_Internal_Shdr *shndx_hdr; + unsigned int sec_shndx; Elf32_External_Sym *esym, *esymend; - struct elf_link_hash_entry **sym_hash, **sym_hash_end; + Elf_External_Sym_Shndx *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; - symtab_hdr = &elf_tdata (abfd)->symtab_hdr; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); /* Examine all the symbols. */ - esym = extsyms; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx = (Elf_External_Sym_Shndx *) shndx_hdr->contents; + esym = (Elf32_External_Sym *) symtab_hdr->contents; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value == addr) return true; } - sym_hash = elf_sym_hashes (abfd); - sym_hash_end = (sym_hash - + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) - - symtab_hdr->sh_info)); - for (; sym_hash < sym_hash_end; sym_hash++) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) { - if (((*sym_hash)->root.type == bfd_link_hash_defined - || (*sym_hash)->root.type == bfd_link_hash_defweak) - && (*sym_hash)->root.u.def.section == sec - && (*sym_hash)->root.u.def.value == addr) + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value == addr) return true; } + return false; } @@ -1397,11 +1437,14 @@ elf32_h8_get_relocated_section_contents asymbol **symbols; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; asection *input_section = link_order->u.indirect.section; bfd *input_bfd = input_section->owner; asection **sections = NULL; Elf_Internal_Rela *internal_relocs = NULL; Elf32_External_Sym *external_syms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *internal_syms = NULL; /* We only need to handle the case of relaxing, or of having a @@ -1414,6 +1457,7 @@ elf32_h8_get_relocated_section_contents symbols); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; memcpy (data, elf_section_data (input_section)->this_hdr.contents, (size_t) input_section->_raw_size); @@ -1424,20 +1468,31 @@ elf32_h8_get_relocated_section_contents Elf_Internal_Sym *isymp; asection **secpp; Elf32_External_Sym *esym, *esymend; + bfd_size_type amt; if (symtab_hdr->contents != NULL) external_syms = (Elf32_External_Sym *) symtab_hdr->contents; - else + else if (symtab_hdr->sh_info != 0) { - bfd_size_type amt; - amt = symtab_hdr->sh_info; amt *= sizeof (Elf32_External_Sym); external_syms = (Elf32_External_Sym *) bfd_malloc (amt); - if (external_syms == NULL && symtab_hdr->sh_info > 0) + if (external_syms == NULL) goto error_return; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (external_syms, amt, input_bfd) != amt) + || bfd_bread ((PTR) external_syms, amt, input_bfd) != amt) + goto error_return; + } + + if (symtab_hdr->sh_info != 0 && shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; } @@ -1447,40 +1502,35 @@ elf32_h8_get_relocated_section_contents if (internal_relocs == NULL) goto error_return; - internal_syms = ((Elf_Internal_Sym *) - bfd_malloc ((bfd_size_type) symtab_hdr->sh_info - * sizeof (Elf_Internal_Sym))); - if (internal_syms == NULL && symtab_hdr->sh_info > 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_Internal_Sym); + internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt); + if (internal_syms == NULL && amt != 0) goto error_return; - sections = (asection **) bfd_malloc ((bfd_size_type) symtab_hdr->sh_info - * sizeof (asection *)); - if (sections == NULL && symtab_hdr->sh_info > 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (asection *); + sections = (asection **) bfd_malloc (amt); + if (sections == NULL && amt != 0) goto error_return; - isymp = internal_syms; - secpp = sections; - esym = external_syms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; ++esym, ++isymp, ++secpp) + for (isymp = internal_syms, secpp = sections, shndx = shndx_buf, + esym = external_syms, esymend = esym + symtab_hdr->sh_info; + esym < esymend; + ++esym, ++isymp, ++secpp, shndx = (shndx ? shndx + 1 : NULL)) { asection *isec; - bfd_elf32_swap_symbol_in (input_bfd, esym, isymp); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, isymp); if (isymp->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isymp->st_shndx > 0 && isymp->st_shndx < SHN_LORESERVE) - isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); else if (isymp->st_shndx == SHN_ABS) isec = bfd_abs_section_ptr; else if (isymp->st_shndx == SHN_COMMON) isec = bfd_com_section_ptr; else - { - /* Who knows? */ - isec = NULL; - } + isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); *secpp = isec; } @@ -1492,16 +1542,14 @@ elf32_h8_get_relocated_section_contents if (sections != NULL) free (sections); - sections = NULL; if (internal_syms != NULL) free (internal_syms); - internal_syms = NULL; + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); - external_syms = NULL; if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); - internal_relocs = NULL; } return data; @@ -1510,6 +1558,8 @@ elf32_h8_get_relocated_section_contents if (internal_relocs != NULL && internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); if (internal_syms != NULL) diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-hppa.c binutils-2.11.93.0.2/bfd/elf32-hppa.c --- binutils-2.11.92.0.12.3/bfd/elf32-hppa.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/elf32-hppa.c Thu Feb 7 10:21:03 2002 @@ -1,6 +1,6 @@ /* BFD back-end for HP PA-RISC ELF files. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001, + 2002 Free Software Foundation, Inc. Original code by Center for Software Science @@ -335,7 +335,7 @@ static boolean elf32_hppa_gc_sweep_hook asection *, const Elf_Internal_Rela *)); static void elf32_hppa_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); static boolean elf32_hppa_adjust_dynamic_symbol PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); @@ -591,20 +591,8 @@ hppa_get_stub_entry (input_section, sym_ stub_entry = hppa_stub_hash_lookup (&htab->stub_hash_table, stub_name, false, false); - if (stub_entry == NULL) - { - if (hash == NULL || hash->elf.root.type != bfd_link_hash_undefweak) - (*_bfd_error_handler) (_("%s(%s+0x%lx): cannot find stub entry %s"), - bfd_archive_filename (input_section->owner), - input_section->name, - (long) rel->r_offset, - stub_name); - } - else - { - if (hash != NULL) - hash->stub_cache = stub_entry; - } + if (hash != NULL) + hash->stub_cache = stub_entry; free (stub_name); } @@ -1650,13 +1638,7 @@ elf32_hppa_gc_mark_hook (abfd, info, rel } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1804,12 +1786,22 @@ elf32_hppa_gc_sweep_hook (abfd, info, se plabels. */ static void -elf32_hppa_hide_symbol (info, h) - struct bfd_link_info *info ATTRIBUTE_UNUSED; +elf32_hppa_hide_symbol (info, h, force_local) + struct bfd_link_info *info; struct elf_link_hash_entry *h; + boolean force_local; { - if ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0) - h->dynindx = -1; + if (force_local) + { + h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; + if (h->dynindx != -1) + { + h->dynindx = -1; + _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, + h->dynstr_index); + } + } + if (! ((struct elf32_hppa_link_hash_entry *) h)->plabel) { h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; @@ -2221,19 +2213,14 @@ clobber_millicode_symbols (h, info) struct elf_link_hash_entry *h; struct bfd_link_info *info; { - /* We only want to remove these from the dynamic symbol table. - Therefore we do not leave ELF_LINK_FORCED_LOCAL set. */ - if (h->type == STT_PARISC_MILLI) + if (h->type == STT_PARISC_MILLI + && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) { - struct elf32_hppa_link_hash_table *htab; - unsigned short oldflags = h->elf_link_hash_flags; + elf32_hppa_hide_symbol (info, h, true); - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - elf32_hppa_hide_symbol (info, h); - htab = hppa_link_hash_table (info); - _bfd_elf_strtab_delref (htab->elf.dynstr, h->dynstr_index); + /* ?!? We only want to remove these from the dynamic symbol table. + Therefore we do not leave ELF_LINK_FORCED_LOCAL set. */ h->elf_link_hash_flags &= ~ELF_LINK_FORCED_LOCAL; - h->elf_link_hash_flags |= oldflags & ELF_LINK_FORCED_LOCAL; } return true; } @@ -2342,10 +2329,12 @@ elf32_hppa_size_dynamic_sections (output linker script /DISCARD/, so we'll be discarding the relocs too. */ } - else + else if (p->count != 0) { srel = elf_section_data (p->sec)->sreloc; srel->_raw_size += p->count * sizeof (Elf32_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; } } } @@ -2518,7 +2507,9 @@ elf32_hppa_size_dynamic_sections (output /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, (PTR) info); + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, + (PTR) info); if ((info->flags & DF_TEXTREL) != 0) { @@ -2579,11 +2570,11 @@ elf32_hppa_size_stubs (output_bfd, stub_ if (stub_group_size == 1) { /* Default values. */ - stub_group_size = 8000000; + stub_group_size = 7680000; if (htab->has_17bit_branch || htab->multi_subspace) - stub_group_size = 250000; + stub_group_size = 240000; if (htab->has_12bit_branch) - stub_group_size = 7812; + stub_group_size = 7500; } /* Count the number of input BFDs and find the top input section id. */ @@ -2696,16 +2687,18 @@ elf32_hppa_size_stubs (output_bfd, stub_ curr = prev; /* OK, the size from the start of CURR to the end is less - than 250000 bytes and thus can be handled by one stub + than 240000 bytes and thus can be handled by one stub section. (or the tail section is itself larger than - 250000 bytes, in which case we may be toast.) + 240000 bytes, 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 total more than 12144 bytes, or - 1518 long branch stubs. It seems unlikely for more than - 1518 different functions to be called, especially from - code only 250000 bytes long. */ + only break if stubs added total more than 22144 bytes, or + 2768 long branch stubs. It seems unlikely for more than + 2768 different functions to be called, especially from + code only 240000 bytes long. This limit used to be + 250000, but c++ code tends to generate lots of little + functions, and sometimes violated the assumption. */ do { prev = PREV_SEC (tail); @@ -2714,7 +2707,7 @@ elf32_hppa_size_stubs (output_bfd, stub_ } while (tail != curr && (tail = prev) != NULL); - /* But wait, there's more! Input sections up to 250000 + /* But wait, there's more! Input sections up to 240000 bytes before the stub section can be handled by it too. */ if (!stubs_always_before_branch) { @@ -2751,8 +2744,10 @@ elf32_hppa_size_stubs (output_bfd, stub_ input_bfd = input_bfd->link_next, bfd_indx++) { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Sym *isym; Elf32_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. */ @@ -2766,32 +2761,50 @@ 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; - } + goto error_ret_free_local; + 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; - } + goto error_ret_free_local; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (ext_syms, sec_size, input_bfd) != sec_size)) + || bfd_bread ((PTR) ext_syms, sec_size, input_bfd) != sec_size) { + error_ret_free_ext_syms: free (ext_syms); goto error_ret_free_local; } + 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. */ - isym = local_syms; - esym = ext_syms; - for (end_sy = esym + symtab_hdr->sh_info; esym < end_sy; esym++, isym++) - bfd_elf32_swap_symbol_in (input_bfd, esym, isym); + 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_elf32_swap_symbol_in (input_bfd, esym, shndx, isym); /* Now we can free the external symbols. */ + free (shndx_buf); free (ext_syms); if (info->shared && htab->multi_subspace) @@ -2924,9 +2937,9 @@ elf32_hppa_size_stubs (output_bfd, stub_ /* 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 (external_relocs, - input_rel_hdr->sh_size, - input_bfd) != input_rel_hdr->sh_size) + || bfd_bread ((PTR) external_relocs, + input_rel_hdr->sh_size, + input_bfd) != input_rel_hdr->sh_size) { free (external_relocs); error_ret_free_internal: @@ -3383,7 +3396,7 @@ final_link_relocate (input_section, cont addend = 8; } else - return bfd_reloc_notsupported; + return bfd_reloc_undefined; } /* Fall thru. */ @@ -3511,7 +3524,7 @@ final_link_relocate (input_section, cont stub_entry = hppa_get_stub_entry (input_section, sym_sec, h, rel, htab); if (stub_entry == NULL) - return bfd_reloc_notsupported; + return bfd_reloc_undefined; /* Munge up the value and addend so that we call the stub rather than the procedure directly. */ @@ -3610,6 +3623,7 @@ elf32_hppa_relocate_section (output_bfd, bfd_reloc_status_type r; const char *sym_name; boolean plabel; + boolean warned_undef; r_type = ELF32_R_TYPE (rel->r_info); if (r_type >= (unsigned int) R_PARISC_UNIMPLEMENTED) @@ -3645,15 +3659,13 @@ elf32_hppa_relocate_section (output_bfd, h = NULL; sym = NULL; sym_sec = NULL; + warned_undef = false; if (r_symndx < symtab_hdr->sh_info) { /* This is a local symbol, h defaults to NULL. */ sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - relocation = ((ELF_ST_TYPE (sym->st_info) == STT_SECTION - ? 0 : sym->st_value) - + sym_sec->output_offset - + sym_sec->output_section->vma); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); } else { @@ -3686,10 +3698,13 @@ elf32_hppa_relocate_section (output_bfd, && h->elf.type != STT_PARISC_MILLI) { if (info->symbolic && !info->allow_shlib_undefined) - if (!((*info->callbacks->undefined_symbol) - (info, h->elf.root.root.string, input_bfd, - input_section, rel->r_offset, false))) - return false; + { + if (!((*info->callbacks->undefined_symbol) + (info, h->elf.root.root.string, input_bfd, + input_section, rel->r_offset, false))) + return false; + warned_undef = true; + } } else { @@ -3697,6 +3712,7 @@ elf32_hppa_relocate_section (output_bfd, (info, h->elf.root.root.string, input_bfd, input_section, rel->r_offset, true))) return false; + warned_undef = true; } } @@ -3956,23 +3972,11 @@ elf32_hppa_relocate_section (output_bfd, are copied into the output file to be resolved at run time. */ - outrel.r_offset = rel->r_offset; outrel.r_addend = rel->r_addend; - skip = false; - if (elf_section_data (input_section)->stab_info != NULL) - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &htab->elf.stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + skip = (outrel.r_offset == (bfd_vma) -1); outrel.r_offset += (input_section->output_offset + input_section->output_section->vma); @@ -4063,15 +4067,18 @@ elf32_hppa_relocate_section (output_bfd, if (r == bfd_reloc_undefined || r == bfd_reloc_notsupported) { - (*_bfd_error_handler) - (_("%s(%s+0x%lx): cannot handle %s for %s"), - bfd_archive_filename (input_bfd), - input_section->name, - (long) rel->r_offset, - howto->name, - sym_name); - bfd_set_error (bfd_error_bad_value); - return false; + if (r == bfd_reloc_notsupported || !warned_undef) + { + (*_bfd_error_handler) + (_("%s(%s+0x%lx): cannot handle %s for %s"), + bfd_archive_filename (input_bfd), + input_section->name, + (long) rel->r_offset, + howto->name, + sym_name); + bfd_set_error (bfd_error_bad_value); + return false; + } } else { diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-i370.c binutils-2.11.93.0.2/bfd/elf32-i370.c --- binutils-2.11.92.0.12.3/bfd/elf32-i370.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-i370.c Sun Feb 3 11:22:30 2002 @@ -301,7 +301,6 @@ i370_elf_reloc_type_lookup (abfd, code) return i370_elf_howto_table[ (int)i370_reloc ]; }; -static boolean i370_elf_copy_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean i370_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean i370_elf_relocate_section PARAMS ((bfd *, @@ -381,24 +380,6 @@ i370_elf_set_private_flags (abfd, flags) return true; } -/* Copy backend specific data from one object module to another */ -static boolean -i370_elf_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking */ static boolean @@ -900,12 +881,16 @@ i370_elf_size_dynamic_sections (output_b asection **spp; for (spp = &s->output_section->owner->sections; - *spp != s->output_section; + *spp != NULL; spp = &(*spp)->next) - ; - *spp = s->output_section->next; - --s->output_section->owner->section_count; - + { + if (*spp == s->output_section) + { + bfd_section_list_remove (s->output_section->owner, spp); + --s->output_section->owner->section_count; + break; + } + } continue; } /* Allocate memory for the section contents. */ @@ -1209,6 +1194,7 @@ i370_elf_finish_dynamic_sections (output for (s = output_bfd->sections; s != NULL; s = s->next) { int indx, dindx; + Elf32_External_Sym *esym; sym.st_value = s->vma; @@ -1224,10 +1210,8 @@ i370_elf_finish_dynamic_sections (output sym.st_shndx = indx; - bfd_elf32_swap_symbol_out (output_bfd, &sym, - (PTR) (((Elf32_External_Sym *) - sdynsym->contents) - + dindx)); + esym = (Elf32_External_Sym *) sdynsym->contents + dindx; + bfd_elf32_swap_symbol_out (output_bfd, &sym, (PTR) esym, (PTR) 0); } } @@ -1367,9 +1351,8 @@ i370_elf_relocate_section (output_bfd, i sec = local_sections[r_symndx]; sym_name = ""; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; } else { @@ -1487,22 +1470,11 @@ i370_elf_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -1688,7 +1660,6 @@ i370_elf_post_process_headers (abfd, lin #define bfd_elf32_bfd_reloc_type_lookup i370_elf_reloc_type_lookup #define bfd_elf32_bfd_set_private_flags i370_elf_set_private_flags -#define bfd_elf32_bfd_copy_private_bfd_data i370_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data i370_elf_merge_private_bfd_data #define elf_backend_relocate_section i370_elf_relocate_section diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-i386.c binutils-2.11.93.0.2/bfd/elf32-i386.c --- binutils-2.11.92.0.12.3/bfd/elf32-i386.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-i386.c Thu Feb 7 10:21:03 2002 @@ -362,7 +362,7 @@ elf_i386_grok_psinfo (abfd, note) default: return false; - case 128: /* Linux/MIPS elf_prpsinfo */ + case 124: /* Linux/i386 elf_prpsinfo */ elf_tdata (abfd)->core_program = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); elf_tdata (abfd)->core_command @@ -987,13 +987,7 @@ elf_i386_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1114,7 +1108,9 @@ elf_i386_adjust_dynamic_symbol (info, h) if (h->plt.refcount <= 0 || (! info->shared && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 - && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)) + && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0 + && h->root.type != bfd_link_hash_undefweak + && h->root.type != bfd_link_hash_undefined)) { /* This case can occur if we saw a PLT32 reloc in an input file, but the symbol was never referred to by a dynamic @@ -1504,10 +1500,12 @@ elf_i386_size_dynamic_sections (output_b linker script /DISCARD/, so we'll be discarding the relocs too. */ } - else + else if (p->count != 0) { srel = elf_section_data (p->sec)->sreloc; srel->_raw_size += p->count * sizeof (Elf32_External_Rel); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; } } } @@ -1629,7 +1627,9 @@ elf_i386_size_dynamic_sections (output_b /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, (PTR) info); + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, + (PTR) info); if ((info->flags & DF_TEXTREL) != 0) { @@ -1770,6 +1770,30 @@ elf_i386_relocate_section (output_bfd, i relocation = (sec->output_section->vma + sec->output_offset + sym->st_value); + if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + asection *msec; + bfd_vma addend; + + if (howto->src_mask != 0xffffffff) + { + (*_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; + } + + 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 += msec->output_section->vma + msec->output_offset; + bfd_put_32 (input_bfd, addend, contents + rel->r_offset); + } } else { @@ -1983,19 +2007,11 @@ elf_i386_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - off = (_bfd_stab_section_offset - (output_bfd, htab->elf.stab_info, input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-i860.c binutils-2.11.93.0.2/bfd/elf32-i860.c --- binutils-2.11.92.0.12.3/bfd/elf32-i860.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-i860.c Sun Feb 3 11:22:30 2002 @@ -934,9 +934,7 @@ elf32_i860_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-m32r.c binutils-2.11.93.0.2/bfd/elf32-m32r.c --- binutils-2.11.92.0.12.3/bfd/elf32-m32r.c Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/elf32-m32r.c Sun Feb 3 11:22:30 2002 @@ -45,7 +45,7 @@ static reloc_howto_type *bfd_elf32_bfd_r static void m32r_info_to_howto_rel PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); boolean _bfd_m32r_elf_section_from_bfd_section - PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *)); + PARAMS ((bfd *, asection *, int *)); void _bfd_m32r_elf_symbol_processing PARAMS ((bfd *, asymbol *)); static boolean m32r_elf_add_symbol_hook @@ -66,8 +66,6 @@ static void m32r_elf_final_write_process PARAMS ((bfd *, boolean)); static boolean m32r_elf_set_private_flags PARAMS ((bfd *, flagword)); -static boolean m32r_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean m32r_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean m32r_elf_print_private_bfd_data @@ -767,9 +765,8 @@ m32r_info_to_howto_rel (abfd, cache_ptr, index. */ boolean -_bfd_m32r_elf_section_from_bfd_section (abfd, hdr, sec, retval) +_bfd_m32r_elf_section_from_bfd_section (abfd, sec, retval) bfd *abfd ATTRIBUTE_UNUSED; - Elf32_Internal_Shdr *hdr ATTRIBUTE_UNUSED; asection *sec; int *retval; { @@ -1106,9 +1103,16 @@ m32r_elf_relocate_section (output_bfd, i sym = local_syms + r_symndx; sec = local_sections[r_symndx]; sym_name = ""; +#ifndef USE_REL + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; +#else + /* FIXME: This won't handle local relocations against SEC_MERGE + symbols. See elf32-i386.c for how to do this. */ relocation = (sec->output_section->vma + sec->output_offset + sym->st_value); +#endif } else { @@ -1849,8 +1853,6 @@ m32r_elf_get_relocated_section_contents if (isymp->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isymp->st_shndx > 0 && isymp->st_shndx < SHN_LORESERVE) - isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); else if (isymp->st_shndx == SHN_ABS) isec = bfd_abs_section_ptr; else if (isymp->st_shndx == SHN_COMMON) @@ -1858,10 +1860,7 @@ m32r_elf_get_relocated_section_contents else if (isymp->st_shndx == SHN_M32R_SCOMMON) isec = &m32r_elf_scom_section; else - { - /* Who knows? */ - isec = NULL; - } + isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); *secpp = isec; } @@ -1949,26 +1948,6 @@ m32r_elf_set_private_flags (abfd, flags) return true; } -/* Copy backend specific data from one object module to another */ -static boolean -m32r_elf_copy_private_bfd_data (ibfd, obfd) - bfd * ibfd; - bfd * obfd; -{ - if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); - - elf_gp (obfd) = elf_gp (ibfd); - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -2088,14 +2067,8 @@ m32r_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } return NULL; } @@ -2196,7 +2169,6 @@ m32r_elf_check_relocs (abfd, info, sec, #define elf_backend_object_p m32r_elf_object_p #define elf_backend_final_write_processing m32r_elf_final_write_processing -#define bfd_elf32_bfd_copy_private_bfd_data m32r_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data m32r_elf_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags m32r_elf_set_private_flags #define bfd_elf32_bfd_print_private_bfd_data m32r_elf_print_private_bfd_data diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-m68k.c binutils-2.11.93.0.2/bfd/elf32-m68k.c --- binutils-2.11.92.0.12.3/bfd/elf32-m68k.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-m68k.c Sun Feb 3 11:22:30 2002 @@ -57,8 +57,6 @@ static boolean elf_m68k_finish_dynamic_s static boolean elf32_m68k_set_private_flags PARAMS ((bfd *, flagword)); -static boolean elf32_m68k_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean elf32_m68k_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean elf32_m68k_print_private_bfd_data @@ -367,26 +365,6 @@ elf32_m68k_set_private_flags (abfd, flag return true; } -/* Copy m68k-specific data from one module to another */ -static boolean -elf32_m68k_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ - flagword in_flags; - - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - in_flags = elf_elfheader (ibfd)->e_flags; - - elf_elfheader (obfd)->e_flags = in_flags; - elf_flags_init (obfd) = true; - - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -805,13 +783,7 @@ elf_m68k_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1389,9 +1361,7 @@ elf_m68k_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -1682,22 +1652,11 @@ elf_m68k_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -2167,8 +2126,10 @@ bfd_m68k_elf32_create_embedded_relocs (a char **errmsg; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf32_External_Sym *extsyms; Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; @@ -2190,22 +2151,34 @@ bfd_m68k_elf32_create_embedded_relocs (a else { /* Go get them off disk. */ + amt = symtab_hdr->sh_info * sizeof (Elf32_External_Sym); if (info->keep_memory) - extsyms = (Elf32_External_Sym *) bfd_alloc (abfd, symtab_hdr->sh_size); + extsyms = (Elf32_External_Sym *) bfd_alloc (abfd, amt); else - extsyms = (Elf32_External_Sym *) bfd_malloc (symtab_hdr->sh_size); + extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; if (! info->keep_memory) free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) - != symtab_hdr->sh_size)) + || bfd_bread (extsyms, amt, abfd) != amt) goto error_return; if (info->keep_memory) symtab_hdr->contents = (unsigned char *) extsyms; } + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + } + /* Get a copy of the native relocations. */ internal_relocs = (_bfd_elf32_link_read_relocs (abfd, datasec, (PTR) NULL, (Elf_Internal_Rela *) NULL, @@ -2244,12 +2217,14 @@ bfd_m68k_elf32_create_embedded_relocs (a /* Get the target section referred to by the reloc. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; /* A local symbol. */ - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irel->r_info), - &isym); + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); targetsec = bfd_section_from_elf_index (abfd, isym.st_shndx); } @@ -2275,6 +2250,8 @@ bfd_m68k_elf32_create_embedded_relocs (a strncpy (p + 4, targetsec->output_section->name, 8); } + if (shndx_buf != NULL) + free (shndx_buf); if (free_extsyms != NULL) free (free_extsyms); if (free_relocs != NULL) @@ -2282,6 +2259,8 @@ bfd_m68k_elf32_create_embedded_relocs (a return true; error_return: + if (shndx_buf != NULL) + free (shndx_buf); if (free_extsyms != NULL) free (free_extsyms); if (free_relocs != NULL) @@ -2328,8 +2307,6 @@ elf32_m68k_reloc_type_class (rela) elf_m68k_finish_dynamic_sections #define elf_backend_gc_mark_hook elf_m68k_gc_mark_hook #define elf_backend_gc_sweep_hook elf_m68k_gc_sweep_hook -#define bfd_elf32_bfd_copy_private_bfd_data \ - elf32_m68k_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data \ elf32_m68k_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags \ diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-mcore.c binutils-2.11.93.0.2/bfd/elf32-mcore.c --- binutils-2.11.92.0.12.3/bfd/elf32-mcore.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-mcore.c Sun Feb 3 11:22:30 2002 @@ -39,8 +39,6 @@ static void mcore_elf_info_to_howto PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *)); static boolean mcore_elf_set_private_flags PARAMS ((bfd *, flagword)); -static boolean mcore_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean mcore_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static bfd_reloc_status_type mcore_elf_unsupported_reloc @@ -301,24 +299,6 @@ mcore_elf_set_private_flags (abfd, flags return true; } -/* Copy backend specific data from one object module to another. */ -static boolean -mcore_elf_copy_private_bfd_data (ibfd, obfd) - bfd * ibfd; - bfd * obfd; -{ - if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (! elf_flags_init (obfd) - || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -410,7 +390,7 @@ mcore_elf_unsupported_reloc (abfd, reloc static boolean mcore_elf_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, local_syms, local_sections) - bfd * output_bfd ATTRIBUTE_UNUSED; + bfd * output_bfd; struct bfd_link_info * info; bfd * input_bfd; asection * input_section; @@ -510,9 +490,8 @@ mcore_elf_relocate_section (output_bfd, { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; } else { @@ -648,13 +627,7 @@ mcore_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -744,7 +717,6 @@ mcore_elf_check_relocs (abfd, info, sec, #define elf_info_to_howto mcore_elf_info_to_howto #define elf_info_to_howto_rel NULL -#define bfd_elf32_bfd_copy_private_bfd_data mcore_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data mcore_elf_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags mcore_elf_set_private_flags #define bfd_elf32_bfd_reloc_type_lookup mcore_elf_reloc_type_lookup diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-mips.c binutils-2.11.93.0.2/bfd/elf32-mips.c --- binutils-2.11.92.0.12.3/bfd/elf32-mips.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-mips.c Thu Feb 7 10:21:03 2002 @@ -1,5 +1,5 @@ /* MIPS-specific support for 32-bit ELF - 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. Most of the information added by Ian Lance Taylor, Cygnus Support, @@ -211,7 +211,7 @@ static boolean mips_elf_stub_section_p static int sort_dynamic_relocs PARAMS ((const void *, const void *)); static void _bfd_mips_elf_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); static void _bfd_mips_elf_copy_indirect_symbol PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); @@ -269,6 +269,8 @@ static bfd *reldyn_sorting_bfd; ((ABI_N32_P (abfd) || ABI_64_P (abfd)) ? ict_irix6 : ict_irix5)) #endif +#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) \ (IRIX_COMPAT (abfd) != ict_none) @@ -490,13 +492,13 @@ static void bfd_elf32_swap_compact_rel_o static void bfd_elf32_swap_crinfo_out PARAMS ((bfd *, const Elf32_crinfo *, Elf32_External_crinfo *)); -#define USE_REL 1 /* MIPS uses REL relocations instead of RELA */ - /* 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) -static reloc_howto_type elf_mips_howto_table[] = +/* The relocation table used for SHT_REL sections. */ + +static reloc_howto_type elf_mips_howto_table_rel[] = { /* No relocation. */ HOWTO (R_MIPS_NONE, /* type */ @@ -516,16 +518,16 @@ static reloc_howto_type elf_mips_howto_t /* 16 bit relocation. */ HOWTO (R_MIPS_16, /* type */ 0, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit relocation. */ @@ -572,8 +574,8 @@ static reloc_howto_type elf_mips_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ true, /* partial_inplace */ - 0x3ffffff, /* src_mask */ - 0x3ffffff, /* dst_mask */ + 0x03ffffff, /* src_mask */ + 0x03ffffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of symbol value. */ @@ -587,8 +589,8 @@ static reloc_howto_type elf_mips_howto_t _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_HI16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of symbol value. */ @@ -602,8 +604,8 @@ static reloc_howto_type elf_mips_howto_t _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_LO16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* GP relative reference. */ @@ -617,8 +619,8 @@ static reloc_howto_type elf_mips_howto_t _bfd_mips_elf_gprel16_reloc, /* special_function */ "R_MIPS_GPREL16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to literal section. */ @@ -632,8 +634,8 @@ static reloc_howto_type elf_mips_howto_t _bfd_mips_elf_gprel16_reloc, /* special_function */ "R_MIPS_LITERAL", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to global offset table. */ @@ -646,9 +648,9 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_signed, /* complain_on_overflow */ _bfd_mips_elf_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ - false, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 16 bit PC relative reference. */ @@ -662,8 +664,8 @@ static reloc_howto_type elf_mips_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ true), /* pcrel_offset */ /* 16 bit call through global offset table. */ @@ -676,9 +678,9 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ - false, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit GP relative reference. */ @@ -696,11 +698,11 @@ static reloc_howto_type elf_mips_howto_t 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ - /* The remaining relocs are defined on Irix 5, although they are - not defined by the ABI. */ - EMPTY_HOWTO (13), - EMPTY_HOWTO (14), - EMPTY_HOWTO (15), + /* The remaining relocs are defined on Irix 5, although they are + not defined by the ABI. */ + EMPTY_HOWTO (13), + EMPTY_HOWTO (14), + EMPTY_HOWTO (15), /* A 5 bit shift field. */ HOWTO (R_MIPS_SHIFT5, /* type */ @@ -774,12 +776,462 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Offset from page pointer in the global offset table. */ + HOWTO (R_MIPS_GOT_OFST, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT_OFST", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* High 16 bits of displacement in global offset table. */ + HOWTO (R_MIPS_GOT_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT_HI16", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Low 16 bits of displacement in global offset table. */ + HOWTO (R_MIPS_GOT_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT_LO16", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* 64 bit subtraction. Used in the N32 ABI. */ + HOWTO (R_MIPS_SUB, /* type */ + 0, /* rightshift */ + 4, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_SUB", /* name */ + true, /* partial_inplace */ + MINUS_ONE, /* src_mask */ + MINUS_ONE, /* dst_mask */ + false), /* pcrel_offset */ + + /* Used to cause the linker to insert and delete instructions? */ + EMPTY_HOWTO (R_MIPS_INSERT_A), + EMPTY_HOWTO (R_MIPS_INSERT_B), + EMPTY_HOWTO (R_MIPS_DELETE), + + /* Get the higher value of a 64 bit addend. */ + HOWTO (R_MIPS_HIGHER, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_HIGHER", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Get the highest value of a 64 bit addend. */ + HOWTO (R_MIPS_HIGHEST, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_HIGHEST", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* High 16 bits of displacement in global offset table. */ + HOWTO (R_MIPS_CALL_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_CALL_HI16", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Low 16 bits of displacement in global offset table. */ + HOWTO (R_MIPS_CALL_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_CALL_LO16", /* name */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Section displacement. */ + HOWTO (R_MIPS_SCN_DISP, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_SCN_DISP", /* name */ + true, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + EMPTY_HOWTO (R_MIPS_REL16), + EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE), + EMPTY_HOWTO (R_MIPS_PJUMP), + EMPTY_HOWTO (R_MIPS_RELGOT), + + /* Protected jump conversion. This is an optimization hint. No + relocation is required for correctness. */ + HOWTO (R_MIPS_JALR, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_JALR", /* name */ + false, /* partial_inplace */ + 0x00000000, /* src_mask */ + 0x00000000, /* dst_mask */ + false), /* pcrel_offset */ +}; + +/* The relocation table used for SHT_RELA sections. */ + +static reloc_howto_type elf_mips_howto_table_rela[] = +{ + /* No relocation. */ + HOWTO (R_MIPS_NONE, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_NONE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* 16 bit relocation. */ + HOWTO (R_MIPS_16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000, /* dst_mask */ + false), /* pcrel_offset */ + + /* 32 bit relocation. */ + HOWTO (R_MIPS_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* 32 bit symbol relative relocation. */ + HOWTO (R_MIPS_REL32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_REL32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* 26 bit jump address. */ + HOWTO (R_MIPS_26, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 26, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + /* This needs complex overflow + detection, because the upper 36 + bits must match the PC + 4. */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_26", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x03ffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* R_MIPS_HI16 and R_MIPS_LO16 are unsupported for 64 bit REL. */ + /* High 16 bits of symbol value. */ + HOWTO (R_MIPS_HI16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_HI16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Low 16 bits of symbol value. */ + HOWTO (R_MIPS_LO16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_LO16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* GP relative reference. */ + HOWTO (R_MIPS_GPREL16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_gprel16_reloc, /* special_function */ + "R_MIPS_GPREL16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Reference to literal section. */ + HOWTO (R_MIPS_LITERAL, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + _bfd_mips_elf_gprel16_reloc, /* special_function */ + "R_MIPS_LITERAL", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Reference to global offset table. */ + /* FIXME: This is not handled correctly. */ + HOWTO (R_MIPS_GOT16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* 16 bit PC relative reference. */ + HOWTO (R_MIPS_PC16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_PC16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + true), /* pcrel_offset */ + + /* 16 bit call through global offset table. */ + /* FIXME: This is not handled correctly. */ + HOWTO (R_MIPS_CALL16, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_CALL16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* 32 bit GP relative reference. */ + HOWTO (R_MIPS_GPREL32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_mips_elf_gprel32_reloc, /* special_function */ + "R_MIPS_GPREL32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + EMPTY_HOWTO (13), + EMPTY_HOWTO (14), + EMPTY_HOWTO (15), + + /* A 5 bit shift field. */ + HOWTO (R_MIPS_SHIFT5, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 5, /* bitsize */ + false, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_SHIFT5", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x000007c0, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 6 bit shift field. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_SHIFT6, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 6, /* bitsize */ + false, /* pc_relative */ + 6, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_SHIFT6", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x000007c4, /* dst_mask */ + false), /* pcrel_offset */ + + /* 64 bit relocation. */ + HOWTO (R_MIPS_64, /* type */ + 0, /* rightshift */ + 4, /* size (0 = byte, 1 = short, 2 = long) */ + 64, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_64", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + MINUS_ONE, /* dst_mask */ + false), /* pcrel_offset */ + + /* Displacement in the global offset table. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_GOT_DISP, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT_DISP", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Displacement to page pointer in the global offset table. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_GOT_PAGE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_GOT_PAGE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Offset from page pointer in the global offset table. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_GOT_OFST, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -789,12 +1241,13 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of displacement in global offset table. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_GOT_HI16, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -804,12 +1257,13 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of displacement in global offset table. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_GOT_LO16, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -819,12 +1273,13 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ - /* 64 bit subtraction. Used in the N32 ABI. */ + /* 64 bit substraction. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_SUB, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ @@ -834,15 +1289,59 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_SUB", /* name */ - true, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ false), /* pcrel_offset */ - /* Used to cause the linker to insert and delete instructions? */ - EMPTY_HOWTO (R_MIPS_INSERT_A), - EMPTY_HOWTO (R_MIPS_INSERT_B), - EMPTY_HOWTO (R_MIPS_DELETE), + /* Insert the addend as an instruction. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_INSERT_A, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_INSERT_A", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Insert the addend as an instruction, and change all relocations + to refer to the old instruction at the address. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_INSERT_B, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_INSERT_B", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* Delete a 32 bit instruction. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_DELETE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_DELETE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ /* Get the higher value of a 64 bit addend. */ HOWTO (R_MIPS_HIGHER, /* type */ @@ -852,11 +1351,11 @@ static reloc_howto_type elf_mips_howto_t false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHER", /* name */ - true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Get the highest value of a 64 bit addend. */ @@ -867,14 +1366,15 @@ static reloc_howto_type elf_mips_howto_t false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_MIPS_HIGHEST", /* name */ - true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of displacement in global offset table. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_CALL_HI16, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -884,12 +1384,13 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of displacement in global offset table. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_CALL_LO16, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -899,13 +1400,14 @@ static reloc_howto_type elf_mips_howto_t complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ - true, /* partial_inplace */ - 0x0000ffff, /* src_mask */ + false, /* partial_inplace */ + 0, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ - /* Section displacement. */ - HOWTO (R_MIPS_SCN_DISP, /* type */ + /* Section displacement, used by an associated event location section. */ + /* FIXME: Not handled correctly. */ + HOWTO (R_MIPS_SCN_DISP, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ @@ -913,31 +1415,60 @@ static reloc_howto_type elf_mips_howto_t 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ - "R_MIPS_SCN_DISP", /* name */ - true, /* partial_inplace */ - 0xffffffff, /* src_mask */ + "R_MIPS_SCN_DISP", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ - EMPTY_HOWTO (R_MIPS_REL16), + HOWTO (R_MIPS_REL16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_REL16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* These two are obsolete. */ EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE), EMPTY_HOWTO (R_MIPS_PJUMP), - EMPTY_HOWTO (R_MIPS_RELGOT), + + /* Similiar to R_MIPS_REL32, but used for relocations in a GOT section. + It must be used for multigot GOT's (and only there). */ + HOWTO (R_MIPS_RELGOT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_MIPS_RELGOT", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ /* Protected jump conversion. This is an optimization hint. No relocation is required for correctness. */ HOWTO (R_MIPS_JALR, /* type */ 0, /* rightshift */ - 0, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_JALR", /* name */ false, /* partial_inplace */ - 0x00000000, /* src_mask */ - 0x00000000, /* dst_mask */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ }; @@ -1109,11 +1640,17 @@ static reloc_howto_type elf_mips_gnu_vte /* Do a R_MIPS_HI16 relocation. This has to be done in combination with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to the HI16. Here we just save the information we need; we do the - actual relocation when we see the LO16. MIPS ELF requires that the - LO16 immediately follow the HI16. As a GNU extension, we permit an + actual relocation when we see the LO16. + + MIPS ELF requires that the LO16 immediately follow the HI16. As a + GNU extension, for non-pc-relative relocations, we permit an arbitrary number of HI16 relocs to be associated with a single LO16 reloc. This extension permits gcc to output the HI and LO relocs - itself. */ + itself. + + This cannot be done for PC-relative relocations because both the HI16 + and LO16 parts of the relocations must be done relative to the LO16 + part, and there can be carry to or borrow from the HI16 part. */ struct mips_hi16 { @@ -1196,8 +1733,6 @@ _bfd_mips_elf_hi16_reloc (abfd, relocation += symbol->section->output_section->vma; relocation += symbol->section->output_offset; relocation += reloc_entry->addend; - if (reloc_entry->howto->pc_relative) - relocation -= reloc_entry->address; if (reloc_entry->address > input_section->_cooked_size) return bfd_reloc_outofrange; @@ -1255,23 +1790,29 @@ _bfd_mips_elf_lo16_reloc (abfd, to know anything about the LO16 itself, except where to find the low 16 bits of the addend needed by the LO16. */ insn = bfd_get_32 (abfd, l->addr); - vallo = (bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address) - & 0xffff); + vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); + + /* The low order 16 bits are always treated as a signed + value. */ + vallo = ((vallo & 0xffff) ^ 0x8000) - 0x8000; val = ((insn & 0xffff) << 16) + vallo; val += l->addend; - /* The low order 16 bits are always treated as a signed - value. Therefore, a negative value in the low order bits - requires an adjustment in the high order bits. We need - to make this adjustment in two ways: once for the bits we - took from the data, and once for the bits we are putting - back in to the data. */ - if ((vallo & 0x8000) != 0) - val -= 0x10000; - if ((val & 0x8000) != 0) - val += 0x10000; + /* If PC-relative, we need to subtract out the address of the LO + half of the HI/LO. (The actual relocation is relative + to that instruction.) */ + if (reloc_entry->howto->pc_relative) + val -= reloc_entry->address; + + /* At this point, "val" has the value of the combined HI/LO + pair. If the low order 16 bits (which will be used for + the LO16 insn) are negative, then we will need an + adjustment for the high order 16 bits. */ + val += 0x8000; + val = (val >> 16) & 0xffff; - insn = (insn &~ (bfd_vma) 0xffff) | ((val >> 16) & 0xffff); + insn &= ~ (bfd_vma) 0xffff; + insn |= val; bfd_put_32 (abfd, (bfd_vma) insn, l->addr); if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0) @@ -1563,8 +2104,8 @@ gprel16_with_gp (abfd, symbol, reloc_ent || (symbol->flags & BSF_SECTION_SYM) != 0) val += relocation - gp; - insn = (insn &~ (bfd_vma) 0xffff) | (val & 0xffff); - bfd_put_32 (abfd, (bfd_vma) insn, (bfd_byte *) data + reloc_entry->address); + insn = (insn & ~0xffff) | (val & 0xffff); + bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address); if (relocateable) reloc_entry->address += input_section->output_offset; @@ -1716,7 +2257,7 @@ mips32_64bit_reloc (abfd, reloc_entry, s reloc32 = *reloc_entry; if (bfd_big_endian (abfd)) reloc32.address += 4; - reloc32.howto = &elf_mips_howto_table[R_MIPS_32]; + reloc32.howto = &elf_mips_howto_table_rel[R_MIPS_32]; r = bfd_perform_relocation (abfd, &reloc32, data, input_section, output_bfd, error_message); @@ -1981,12 +2522,12 @@ static const struct elf_reloc_map mips_r { BFD_RELOC_MIPS_JMP, R_MIPS_26 }, { BFD_RELOC_HI16_S, R_MIPS_HI16 }, { BFD_RELOC_LO16, R_MIPS_LO16 }, - { BFD_RELOC_MIPS_GPREL, R_MIPS_GPREL16 }, + { BFD_RELOC_GPREL16, R_MIPS_GPREL16 }, { BFD_RELOC_MIPS_LITERAL, R_MIPS_LITERAL }, { BFD_RELOC_MIPS_GOT16, R_MIPS_GOT16 }, { BFD_RELOC_16_PCREL, R_MIPS_PC16 }, { BFD_RELOC_MIPS_CALL16, R_MIPS_CALL16 }, - { BFD_RELOC_MIPS_GPREL32, R_MIPS_GPREL32 }, + { BFD_RELOC_GPREL32, R_MIPS_GPREL32 }, { BFD_RELOC_MIPS_GOT_HI16, R_MIPS_GOT_HI16 }, { BFD_RELOC_MIPS_GOT_LO16, R_MIPS_GOT_LO16 }, { BFD_RELOC_MIPS_CALL_HI16, R_MIPS_CALL_HI16 }, @@ -2009,7 +2550,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, c 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[(int) mips_reloc_map[i].elf_reloc_val]; + return &elf_mips_howto_table_rel[(int) mips_reloc_map[i].elf_reloc_val]; } switch (code) @@ -2023,7 +2564,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[(int) R_MIPS_32]; + return &elf_mips_howto_table_rel[(int) R_MIPS_32]; else return &elf_mips_ctor64_howto; @@ -2086,7 +2627,7 @@ mips_rtype_to_howto (r_type) default: BFD_ASSERT (r_type < (unsigned int) R_MIPS_max); - return &elf_mips_howto_table[r_type]; + return &elf_mips_howto_table_rel[r_type]; break; } } @@ -2331,7 +2872,7 @@ boolean _bfd_mips_elf_object_p (abfd) bfd *abfd; { - /* Irix 5 and 6 is broken. Object file symbol tables are not always + /* Irix 5 and 6 are broken. Object file symbol tables are not always sorted correctly such that local symbols precede global symbols, and the sh_info field in the symbol table is not always right. */ if (SGI_COMPAT(abfd)) @@ -2424,7 +2965,7 @@ _bfd_mips_elf_final_write_processing (ab /* Set the sh_info field for .gptab sections and other appropriate info for each special section. */ for (i = 1, hdrpp = elf_elfsections (abfd) + 1; - i < elf_elfheader (abfd)->e_shnum; + i < elf_numsections (abfd); i++, hdrpp++) { switch ((*hdrpp)->sh_type) @@ -2505,27 +3046,6 @@ _bfd_mips_elf_set_private_flags (abfd, f return true; } -/* Copy backend specific data from one object module to another */ - -boolean -_bfd_mips_elf_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); - - elf_gp (obfd) = elf_gp (ibfd); - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ @@ -2649,8 +3169,21 @@ _bfd_mips_elf_merge_private_bfd_data (ib bfd_archive_filename (ibfd), new_isa, old_isa); ok = false; } - } + else + { + /* Do we need to update the mach field? */ + if (old_mach == 0 && new_mach != 0) + elf_elfheader (obfd)->e_flags |= new_mach; + /* Do we need to update the ISA field? */ + if (new_isa > old_isa) + { + elf_elfheader (obfd)->e_flags &= ~EF_MIPS_ARCH; + elf_elfheader (obfd)->e_flags + |= new_flags & EF_MIPS_ARCH; + } + } + } else { (*_bfd_error_handler) @@ -3075,9 +3608,8 @@ _bfd_mips_elf_fake_sections (abfd, hdr, the .scommon section. */ boolean -_bfd_mips_elf_section_from_bfd_section (abfd, hdr, sec, retval) +_bfd_mips_elf_section_from_bfd_section (abfd, sec, retval) bfd *abfd ATTRIBUTE_UNUSED; - Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED; asection *sec; int *retval; { @@ -3994,9 +4526,10 @@ mips_elf_link_hash_newfunc (entry, table } static void -_bfd_mips_elf_hide_symbol (info, entry) +_bfd_mips_elf_hide_symbol (info, entry, force_local) struct bfd_link_info *info; struct elf_link_hash_entry *entry; + boolean force_local; { bfd *dynobj; asection *got; @@ -4007,10 +4540,7 @@ _bfd_mips_elf_hide_symbol (info, entry) got = bfd_get_section_by_name (dynobj, ".got"); g = (struct mips_got_info *) elf_section_data (got)->tdata; - h->root.elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; - h->root.plt.offset = (bfd_vma) -1; - if ((h->root.elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0) - h->root.dynindx = -1; + _bfd_elf_link_hash_hide_symbol (info, &h->root, force_local); /* FIXME: Do we allocate too much GOT space here? */ g->local_gotno++; @@ -4667,7 +5197,7 @@ _bfd_mips_elf_final_link (abfd, info) if (p->type == bfd_indirect_link_order) p->u.indirect.section->flags &= ~SEC_HAS_CONTENTS; (*secpp)->link_order_head = NULL; - *secpp = (*secpp)->next; + bfd_section_list_remove (abfd, secpp); --abfd->section_count; break; @@ -5037,7 +5567,7 @@ _bfd_mips_elf_final_link (abfd, info) *secpp != o; secpp = &(*secpp)->next) ; - *secpp = (*secpp)->next; + bfd_section_list_remove (abfd, secpp); --abfd->section_count; continue; @@ -5827,29 +6357,10 @@ mips_elf_create_dynamic_relocation (outp < sreloc->_raw_size); skip = false; - - /* We begin by assuming that the offset for the dynamic relocation - is the same as for the original relocation. We'll adjust this - later to reflect the correct output offsets. */ - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - /* Except that in a stab section things are more complex. - Because we compress stab information, the offset given in the - relocation may not be the one we want; we must let the stabs - machinery tell us the offset. */ - outrel.r_offset - = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - /* If we didn't need the relocation at all, this value will be - -1. */ - if (outrel.r_offset == (bfd_vma) -1) - skip = true; - } + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; /* If we've decided to skip this relocation, just output an empty record. Note that R_MIPS_NONE == 0, so that this call to memset @@ -6244,7 +6755,8 @@ mips_elf_calculate_relocation (abfd, /* Calls from 16-bit code to 32-bit code and vice versa require the special jalx instruction. */ *require_jalxp = (!info->relocateable - && ((r_type == R_MIPS16_26) != target_is_16_bit_code_p)); + && (((r_type == R_MIPS16_26) && !target_is_16_bit_code_p) + || ((r_type == R_MIPS_26) && target_is_16_bit_code_p))); local_p = mips_elf_local_relocation_p (input_bfd, relocation, local_sections, true); @@ -6289,7 +6801,7 @@ mips_elf_calculate_relocation (abfd, { g = mips_elf_local_got_index (abfd, info, symbol + addend); if (g == (bfd_vma) -1) - return false; + return bfd_reloc_outofrange; } /* Convert GOT indices to actual offsets. */ @@ -6299,6 +6811,7 @@ mips_elf_calculate_relocation (abfd, case R_MIPS_HI16: case R_MIPS_LO16: + case R_MIPS16_GPREL: case R_MIPS_GPREL16: case R_MIPS_GPREL32: case R_MIPS_LITERAL: @@ -6348,7 +6861,7 @@ mips_elf_calculate_relocation (abfd, symbol, &value, input_section)) - return false; + return bfd_reloc_undefined; } else { @@ -6374,6 +6887,11 @@ mips_elf_calculate_relocation (abfd, break; case R_MIPS_GNU_REL_HI16: + /* Instead of subtracting 'p' here, we should be subtracting the + equivalent value for the LO part of the reloc, since the value + here is relative to that address. Because that's not easy to do, + we adjust 'addend' in _bfd_mips_elf_relocate_section(). See also + the comment there for more information. */ value = mips_elf_high (addend + symbol - p); value &= howto->dst_mask; break; @@ -6464,7 +6982,7 @@ mips_elf_calculate_relocation (abfd, local_sections, false); value = mips_elf_got16_entry (abfd, info, symbol + addend, forced); if (value == (bfd_vma) -1) - return false; + return bfd_reloc_outofrange; value = mips_elf_got_offset_from_index (elf_hash_table (info)->dynobj, abfd, @@ -6508,7 +7026,7 @@ mips_elf_calculate_relocation (abfd, case R_MIPS_GOT_PAGE: value = mips_elf_got_page (abfd, info, symbol + addend, NULL); if (value == (bfd_vma) -1) - return false; + return bfd_reloc_outofrange; value = mips_elf_got_offset_from_index (elf_hash_table (info)->dynobj, abfd, value); @@ -6822,7 +7340,7 @@ _bfd_mips_elf_relocate_section (output_b space. Thus, when they use an R_MIPS_64 they mean what is usually meant by R_MIPS_32, with the exception that the stored value is sign-extended to 64 bits. */ - howto = elf_mips_howto_table + R_MIPS_32; + howto = elf_mips_howto_table_rel + R_MIPS_32; /* On big-endian systems, we need to lie about the position of the reloc. */ @@ -6900,6 +7418,16 @@ _bfd_mips_elf_relocate_section (output_b /* Compute the combined addend. */ addend += l; + + /* If PC-relative, subtract the difference between the + address of the LO part of the reloc and the address of + the HI part. The relocation is relative to the LO + part, but mips_elf_calculate_relocation() doesn't know + it address or the difference from the HI part, so + we subtract that difference here. See also the + comment in mips_elf_calculate_relocation(). */ + if (r_type == R_MIPS_GNU_REL_HI16) + addend -= (lo16_relocation->r_offset - rel->r_offset); } else if (r_type == R_MIPS16_GPREL) { @@ -7023,7 +7551,7 @@ _bfd_mips_elf_relocate_section (output_b } if (!mips_elf_perform_relocation (info, howto, rel, addend, - input_bfd, input_section, + input_bfd, input_section, contents, false)) return false; } @@ -8027,13 +8555,7 @@ _bfd_mips_elf_gc_mark_hook (abfd, info, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -9273,7 +9795,7 @@ _bfd_elf32_mips_discard_info (abfd, cook cookie->rel = cookie->rels; cookie->relend = cookie->rels + o->reloc_count * bed->s->int_rels_per_ext_rel; - + for (i = 0, skip = 0; i < o->_raw_size; i ++) { if (_bfd_elf32_reloc_symbol_deleted_p (i * PDR_SIZE, cookie)) @@ -9340,6 +9862,181 @@ _bfd_elf32_mips_write_section (output_bf return true; } +/* Given a data section and an in-memory embedded reloc section, store + relocation information into the embedded reloc section which can be + used at runtime to relocate the data section. This is called by the + linker when the --embedded-relocs switch is used. This is called + after the add_symbols entry point has been called for all the + objects, and before the final_link entry point is called. */ + +boolean +bfd_mips_elf32_create_embedded_relocs (abfd, info, datasec, relsec, errmsg) + bfd *abfd; + struct bfd_link_info *info; + asection *datasec; + asection *relsec; + char **errmsg; +{ + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; + Elf32_External_Sym *extsyms; + Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_Internal_Rela *internal_relocs; + Elf_Internal_Rela *free_relocs = NULL; + Elf_Internal_Rela *irel, *irelend; + bfd_byte *p; + bfd_size_type amt; + + BFD_ASSERT (! info->relocateable); + + *errmsg = NULL; + + if (datasec->reloc_count == 0) + return true; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + /* Read this BFD's symbols if we haven't done so already, or get the cached + copy if it exists. */ + if (symtab_hdr->contents != NULL) + extsyms = (Elf32_External_Sym *) symtab_hdr->contents; + else + { + /* Go get them off disk. */ + if (info->keep_memory) + extsyms = ((Elf32_External_Sym *) + bfd_alloc (abfd, symtab_hdr->sh_size)); + else + extsyms = ((Elf32_External_Sym *) + bfd_malloc (symtab_hdr->sh_size)); + if (extsyms == NULL) + goto error_return; + if (! info->keep_memory) + free_extsyms = extsyms; + if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 + || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) + != symtab_hdr->sh_size)) + goto error_return; + if (info->keep_memory) + symtab_hdr->contents = (unsigned char *) extsyms; + } + + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + } + + /* Get a copy of the native relocations. */ + internal_relocs = (_bfd_elf32_link_read_relocs + (abfd, datasec, (PTR) NULL, (Elf_Internal_Rela *) NULL, + info->keep_memory)); + if (internal_relocs == NULL) + goto error_return; + if (! info->keep_memory) + free_relocs = internal_relocs; + + relsec->contents = (bfd_byte *) bfd_alloc (abfd, datasec->reloc_count * 12); + if (relsec->contents == NULL) + goto error_return; + + p = relsec->contents; + + irelend = internal_relocs + datasec->reloc_count; + + for (irel = internal_relocs; irel < irelend; irel++, p += 12) + { + asection *targetsec; + + /* We are going to write a four byte longword into the runtime + reloc section. The longword will be the address in the data + section which must be relocated. It is followed by the name + of the target section NUL-padded or truncated to 8 + characters. */ + + /* We can only relocate absolute longword relocs at run time. */ + if ((ELF32_R_TYPE (irel->r_info) != (int) R_MIPS_32) && + (ELF32_R_TYPE (irel->r_info) != (int) R_MIPS_64)) + { + *errmsg = _("unsupported reloc type"); + bfd_set_error (bfd_error_bad_value); + goto error_return; + } + /* Get the target section referred to by the reloc. */ + if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) + { + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; + Elf_Internal_Sym isym; + + /* A local symbol. */ + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); + + targetsec = bfd_section_from_elf_index (abfd, isym.st_shndx); + } + else + { + unsigned long indx; + struct elf_link_hash_entry *h; + + /* An external symbol. */ + indx = ELF32_R_SYM (irel->r_info); + h = elf_sym_hashes (abfd)[indx]; + targetsec = NULL; + /* + * For some reason, in certain programs, the symbol will + * not be in the hash table. It seems to happen when you + * declare a static table of pointers to const external structures. + * In this case, the relocs are relative to data, not + * text, so just treating it like an undefined link + * should be sufficient. + */ + BFD_ASSERT(h != NULL); + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + targetsec = h->root.u.def.section; + } + + + /* + * Set the low bit of the relocation offset if it's a MIPS64 reloc. + * Relocations will always be on (at least) 32-bit boundaries. + */ + + bfd_put_32 (abfd, ((irel->r_offset + datasec->output_offset) + + ((ELF32_R_TYPE (irel->r_info) == (int) R_MIPS_64) ? 1 : 0)), + p); + memset (p + 4, 0, 8); + if (targetsec != NULL) + strncpy (p + 4, targetsec->output_section->name, 8); + } + + if (shndx_buf != NULL) + free (shndx_buf); + if (free_extsyms != NULL) + free (free_extsyms); + if (free_relocs != NULL) + free (free_relocs); + return true; + + error_return: + if (shndx_buf != NULL) + free (shndx_buf); + if (free_extsyms != NULL) + free (free_extsyms); + if (free_relocs != NULL) + free (free_relocs); + return false; +} + /* This is almost identical to bfd_generic_get_... except that some MIPS relocations need to be handled specially. Sigh. */ @@ -9569,10 +10266,6 @@ static const struct ecoff_debug_swap mip _bfd_mips_elf_read_ecoff_info }; -#define TARGET_LITTLE_SYM bfd_elf32_littlemips_vec -#define TARGET_LITTLE_NAME "elf32-littlemips" -#define TARGET_BIG_SYM bfd_elf32_bigmips_vec -#define TARGET_BIG_NAME "elf32-bigmips" #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS @@ -9583,24 +10276,19 @@ static const struct ecoff_debug_swap mip #define elf_backend_collect true #define elf_backend_type_change_ok true #define elf_backend_can_gc_sections true -#define elf_backend_sign_extend_vma true #define elf_info_to_howto mips_info_to_howto_rela #define elf_info_to_howto_rel mips_info_to_howto_rel #define elf_backend_sym_is_global mips_elf_sym_is_global #define elf_backend_object_p _bfd_mips_elf_object_p +#define elf_backend_symbol_processing _bfd_mips_elf_symbol_processing +#define elf_backend_section_processing _bfd_mips_elf_section_processing #define elf_backend_section_from_shdr _bfd_mips_elf_section_from_shdr #define elf_backend_fake_sections _bfd_mips_elf_fake_sections #define elf_backend_section_from_bfd_section \ _bfd_mips_elf_section_from_bfd_section -#define elf_backend_section_processing _bfd_mips_elf_section_processing -#define elf_backend_symbol_processing _bfd_mips_elf_symbol_processing -#define elf_backend_additional_program_headers \ - _bfd_mips_elf_additional_program_headers -#define elf_backend_modify_segment_map _bfd_mips_elf_modify_segment_map -#define elf_backend_final_write_processing \ - _bfd_mips_elf_final_write_processing -#define elf_backend_ecoff_debug_swap &mips_elf32_ecoff_debug_swap #define elf_backend_add_symbol_hook _bfd_mips_elf_add_symbol_hook +#define elf_backend_link_output_symbol_hook \ + _bfd_mips_elf_link_output_symbol_hook #define elf_backend_create_dynamic_sections \ _bfd_mips_elf_create_dynamic_sections #define elf_backend_check_relocs _bfd_mips_elf_check_relocs @@ -9611,24 +10299,30 @@ static const struct ecoff_debug_swap mip #define elf_backend_size_dynamic_sections \ _bfd_mips_elf_size_dynamic_sections #define elf_backend_relocate_section _bfd_mips_elf_relocate_section -#define elf_backend_link_output_symbol_hook \ - _bfd_mips_elf_link_output_symbol_hook #define elf_backend_finish_dynamic_symbol \ _bfd_mips_elf_finish_dynamic_symbol #define elf_backend_finish_dynamic_sections \ _bfd_mips_elf_finish_dynamic_sections +#define elf_backend_final_write_processing \ + _bfd_mips_elf_final_write_processing +#define elf_backend_additional_program_headers \ + _bfd_mips_elf_additional_program_headers +#define elf_backend_modify_segment_map _bfd_mips_elf_modify_segment_map #define elf_backend_gc_mark_hook _bfd_mips_elf_gc_mark_hook #define elf_backend_gc_sweep_hook _bfd_mips_elf_gc_sweep_hook - -#define elf_backend_got_header_size (4*MIPS_RESERVED_GOTNO) -#define elf_backend_plt_header_size 0 - #define elf_backend_copy_indirect_symbol \ _bfd_mips_elf_copy_indirect_symbol - #define elf_backend_hide_symbol _bfd_mips_elf_hide_symbol #define elf_backend_grok_prstatus _bfd_elf32_mips_grok_prstatus #define elf_backend_grok_psinfo _bfd_elf32_mips_grok_psinfo +#define elf_backend_ecoff_debug_swap &mips_elf32_ecoff_debug_swap + +#define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) +#define elf_backend_plt_header_size 0 +#define elf_backend_may_use_rel_p 1 +#define elf_backend_may_use_rela_p 0 +#define elf_backend_default_use_rela_p 0 +#define elf_backend_sign_extend_vma true #define elf_backend_discard_info _bfd_elf32_mips_discard_info #define elf_backend_ignore_discarded_relocs \ @@ -9642,18 +10336,22 @@ static const struct ecoff_debug_swap mip #define bfd_elf32_bfd_link_hash_table_create \ _bfd_mips_elf_link_hash_table_create #define bfd_elf32_bfd_final_link _bfd_mips_elf_final_link -#define bfd_elf32_bfd_copy_private_bfd_data \ - _bfd_mips_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data \ _bfd_mips_elf_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags _bfd_mips_elf_set_private_flags #define bfd_elf32_bfd_print_private_bfd_data \ _bfd_mips_elf_print_private_bfd_data -#include "elf32-target.h" -/* Support for traditional mips targets */ +/* Support for SGI-ish mips targets. */ +#define TARGET_LITTLE_SYM bfd_elf32_littlemips_vec +#define TARGET_LITTLE_NAME "elf32-littlemips" +#define TARGET_BIG_SYM bfd_elf32_bigmips_vec +#define TARGET_BIG_NAME "elf32-bigmips" + +#include "elf32-target.h" -#define INCLUDED_TARGET_FILE /* More a type of flag */ +/* Support for traditional mips targets. */ +#define INCLUDED_TARGET_FILE /* More a type of flag. */ #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-openrisc.c binutils-2.11.93.0.2/bfd/elf32-openrisc.c --- binutils-2.11.92.0.12.3/bfd/elf32-openrisc.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-openrisc.c Sun Feb 3 11:22:30 2002 @@ -324,7 +324,7 @@ openrisc_final_link_relocate (howto, inp static boolean openrisc_elf_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, local_syms, local_sections) - bfd *output_bfd ATTRIBUTE_UNUSED; + bfd *output_bfd; struct bfd_link_info *info; bfd *input_bfd; asection *input_section; @@ -394,8 +394,7 @@ openrisc_elf_relocate_section (output_bf { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); @@ -517,13 +516,7 @@ openrisc_elf_gc_mark_hook (abfd, info, r } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && !((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-or32.c binutils-2.11.93.0.2/bfd/elf32-or32.c --- binutils-2.11.92.0.12.3/bfd/elf32-or32.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/elf32-or32.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,542 @@ +/* OR32-specific support for 32-bit ELF + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by Ivan Guzvinec + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/or32.h" +#include "libiberty.h" + +static reloc_howto_type * bfd_elf32_bfd_reloc_type_lookup PARAMS ((bfd *, bfd_reloc_code_real_type)); +static void or32_info_to_howto_rel PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); +static boolean or32_elf_object_p PARAMS ((bfd *)); +static void or32_elf_final_write_processing PARAMS ((bfd *, boolean)); +static bfd_reloc_status_type or32_elf_32_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type or32_elf_16_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type or32_elf_8_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type or32_elf_const_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type or32_elf_consth_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type or32_elf_jumptarg_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + +/* Try to minimize the amount of space occupied by relocation tables + on the ROM (not that the ROM won't be swamped by other ELF overhead). */ +#define USE_REL + +static reloc_howto_type elf_or32_howto_table[] = +{ + /* This reloc does nothing. */ + HOWTO (R_OR32_NONE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_OR32_NONE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard 32 bit relocation. */ + HOWTO (R_OR32_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + or32_elf_32_reloc, /* special_function */ + "R_OR32_32", /* name */ + false, /* partial_inplace */ + 0xffffffff, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard 16 bit relocation. */ + HOWTO (R_OR32_16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + or32_elf_16_reloc, /* special_function */ + "R_OR32_16", /* name */ + false, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard 8 bit relocation. */ + HOWTO (R_OR32_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + or32_elf_8_reloc, /* special_function */ + "R_OR32_8", /* name */ + false, /* partial_inplace */ + 0x000000ff, /* src_mask */ + 0x000000ff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard low 16 bit relocation. */ + HOWTO (R_OR32_CONST, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + or32_elf_const_reloc, /* special_function */ + "R_OR32_CONST", /* name */ + false, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard high 16 bit relocation. */ + HOWTO (R_OR32_CONSTH, /* type */ + 16, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + or32_elf_consth_reloc, /* special_function */ + "R_OR32_CONSTH", /* name */ + false, /* partial_inplace */ + 0xffff0000, /* src_mask */ + 0x0000ffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A standard branch relocation. */ + HOWTO (R_OR32_JUMPTARG, /* type */ + 2, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 28, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + or32_elf_jumptarg_reloc,/* special_function */ + "R_OR32_JUMPTARG", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0x03ffffff, /* dst_mask */ + true), /* pcrel_offset */ + + /* GNU extension to record C++ vtable hierarchy. */ + HOWTO (R_OR32_GNU_VTINHERIT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_OR32_GNU_VTINHERIT", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* GNU extension to record C++ vtable member usage. */ + HOWTO (R_OR32_GNU_VTENTRY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_OR32_GNU_VTENTRY", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ +}; + +/* Map BFD reloc types to OR32 ELF reloc types. */ + +struct or32_reloc_map +{ + bfd_reloc_code_real_type bfd_reloc_val; + unsigned char elf_reloc_val; +}; + +static const struct or32_reloc_map or32_reloc_map[] = +{ + { BFD_RELOC_NONE, R_OR32_NONE }, + { BFD_RELOC_32, R_OR32_32 }, + { BFD_RELOC_16, R_OR32_16 }, + { BFD_RELOC_8, R_OR32_8 }, + { BFD_RELOC_LO16, R_OR32_CONST }, + { BFD_RELOC_HI16, R_OR32_CONSTH }, + { BFD_RELOC_32_GOT_PCREL, R_OR32_JUMPTARG }, + { BFD_RELOC_VTABLE_INHERIT, R_OR32_GNU_VTINHERIT }, + { BFD_RELOC_VTABLE_ENTRY, R_OR32_GNU_VTENTRY }, +}; + +static reloc_howto_type * +bfd_elf32_bfd_reloc_type_lookup (abfd, code) + bfd *abfd ATTRIBUTE_UNUSED; + bfd_reloc_code_real_type code; +{ + unsigned int i; + + for (i = ARRAY_SIZE (or32_reloc_map); i--;) + { + if (or32_reloc_map[i].bfd_reloc_val == code) + return &elf_or32_howto_table[or32_reloc_map[i].elf_reloc_val]; + } + + return NULL; +} + +/* Set the howto pointer for an OR32 ELF reloc. */ + +static void +or32_info_to_howto_rel (abfd, cache_ptr, dst) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *cache_ptr; + Elf32_Internal_Rel *dst; +{ + unsigned int r_type; + + r_type = ELF32_R_TYPE (dst->r_info); + BFD_ASSERT (r_type < (unsigned int) R_OR32_max); + cache_ptr->howto = &elf_or32_howto_table[r_type]; +} + +/* Set the right machine number for an OR32 ELF file. */ + +static boolean +or32_elf_object_p (abfd) + bfd *abfd; +{ + (void) bfd_default_set_arch_mach (abfd, bfd_arch_or32, 0); + return true; +} + +/* The final processing done just before writing out an OR32 ELF object file. + This gets the OR32 architecture right based on the machine number. */ + +static void +or32_elf_final_write_processing (abfd, linker) + bfd *abfd; + boolean linker ATTRIBUTE_UNUSED; +{ + int mach; + unsigned long val; + + switch (mach = bfd_get_mach (abfd)) + { + /* + case bfd_mach_arc_base: + val = E_OR32_MACH_BASE; + break; + */ + default: + val = 0; + return; + } + + elf_elfheader (abfd)->e_flags &=~ EF_OR32_MACH; + elf_elfheader (abfd)->e_flags |= val; +} + +bfd_reloc_status_type +or32_elf_32_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + if (output_bfd != (bfd *) NULL) + { + unsigned long insn; + bfd_size_type addr = reloc_entry->address; + + reloc_entry->address += input_section->output_offset; + + insn = bfd_get_32 (abfd, (bfd_byte *) data + addr); + insn += symbol->section->output_section->vma; + insn += symbol->section->output_offset; + insn += symbol->value; + bfd_put_32 (abfd, insn, (bfd_byte *) data + addr); + + return bfd_reloc_ok; + } + + return bfd_reloc_continue; +} + +bfd_reloc_status_type +or32_elf_16_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + if (output_bfd != (bfd *) NULL) + { + unsigned short insn; + bfd_size_type addr = reloc_entry->address; + + reloc_entry->address += input_section->output_offset; + + insn = bfd_get_16 (abfd, (bfd_byte *) data + addr); + insn += symbol->section->output_section->vma; + insn += symbol->section->output_offset; + insn += symbol->value; + bfd_put_16 (abfd, insn, (bfd_byte *) data + addr); + + return bfd_reloc_ok; + } + + return bfd_reloc_continue; +} + +bfd_reloc_status_type +or32_elf_8_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + if (output_bfd != (bfd *) NULL) + { + unsigned char insn; + bfd_size_type addr = reloc_entry->address; + + reloc_entry->address += input_section->output_offset; + + insn = bfd_get_8 (abfd, (bfd_byte *) data + addr); + insn += symbol->section->output_section->vma; + insn += symbol->section->output_offset; + insn += symbol->value; + bfd_put_8 (abfd, insn, (bfd_byte *) data + addr); + + return bfd_reloc_ok; + } + + return bfd_reloc_continue; +} + +/* Do a R_OR32_CONSTH relocation. This has to be done in combination + with a R_OR32_CONST reloc, because there is a carry from the LO16 to + the HI16. Here we just save the information we need; we do the + actual relocation when we see the LO16. OR32 ELF requires that the + LO16 immediately follow the HI16. As a GNU extension, we permit an + arbitrary number of HI16 relocs to be associated with a single LO16 + reloc. This extension permits gcc to output the HI and LO relocs + itself. This code is copied from the elf32-mips.c. */ + +struct or32_consth +{ + struct or32_consth *next; + bfd_byte *addr; + bfd_vma addend; +}; + +/* FIXME: This should not be a static variable. */ + +static struct or32_consth *or32_consth_list; + +bfd_reloc_status_type +or32_elf_consth_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + bfd_reloc_status_type ret; + bfd_vma relocation; + struct or32_consth *n; + + ret = bfd_reloc_ok; + + if (bfd_is_und_section (symbol->section) + && output_bfd == (bfd *) NULL) + ret = bfd_reloc_undefined; + + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value; + + relocation += symbol->section->output_section->vma; + relocation += symbol->section->output_offset; + relocation += reloc_entry->addend; + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + /* Save the information, and let LO16 do the actual relocation. */ + n = (struct or32_consth *) bfd_malloc (sizeof *n); + if (n == NULL) + return bfd_reloc_outofrange; + n->addr = (bfd_byte *) data + reloc_entry->address; + n->addend = relocation; + n->next = or32_consth_list; + or32_consth_list = n; + + if (output_bfd != (bfd *) NULL) + reloc_entry->address += input_section->output_offset; + + return ret; +} + +/* Do a R_OR32_CONST relocation. This is a straightforward 16 bit + inplace relocation; this function exists in order to do the + R_OR32_CONSTH relocation described above. */ + +bfd_reloc_status_type +or32_elf_const_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 (or32_consth_list != NULL) + { + struct or32_consth *l; + + l = or32_consth_list; + while (l != NULL) + { + unsigned long insn; + unsigned long val; + unsigned long vallo; + struct or32_consth *next; + + /* Do the HI16 relocation. Note that we actually don't need + to know anything about the LO16 itself, except where to + find the low 16 bits of the addend needed by the LO16. */ + insn = bfd_get_32 (abfd, l->addr); + vallo = (bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address) + & 0xffff); + val = ((insn & 0xffff) << 16) + vallo; + val += l->addend; + + insn = (insn &~ 0xffff) | ((val >> 16) & 0xffff); + bfd_put_32 (abfd, insn, l->addr); + + next = l->next; + free (l); + l = next; + } + + or32_consth_list = NULL; + } + + if (output_bfd != (bfd *) NULL) + { + unsigned long insn, tmp; + bfd_size_type addr = reloc_entry->address; + + reloc_entry->address += input_section->output_offset; + + insn = bfd_get_32 (abfd, (bfd_byte *) data + addr); + tmp = insn & 0x0000ffff; + tmp += symbol->section->output_section->vma; + tmp += symbol->section->output_offset; + tmp += symbol->value; + insn = (insn & 0xffff0000) | (tmp & 0x0000ffff); + bfd_put_32 (abfd, insn, (bfd_byte *) data + addr); + + return bfd_reloc_ok; + } + + /* Now do the LO16 reloc in the usual way. */ + return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); +} + +bfd_reloc_status_type +or32_elf_jumptarg_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol ATTRIBUTE_UNUSED; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + if (output_bfd != (bfd *) NULL) + { + unsigned long insn, tmp; + bfd_size_type addr = reloc_entry->address; + + reloc_entry->address += input_section->output_offset; + + insn = bfd_get_32 (abfd, (bfd_byte *) data + addr); + tmp = insn | 0xfc000000; + tmp -= (input_section->output_offset >> 2); + insn = (insn & 0xfc000000) | (tmp & 0x03ffffff); + bfd_put_32 (abfd, insn, (bfd_byte *) data + addr); + + return bfd_reloc_ok; + } + + return bfd_reloc_continue; +} + +#define TARGET_LITTLE_SYM bfd_elf32_or32_little_vec +#define TARGET_LITTLE_NAME "elf32-littleor32" +#define TARGET_BIG_SYM bfd_elf32_or32_big_vec +#define TARGET_BIG_NAME "elf32-or32" +#define ELF_ARCH bfd_arch_or32 +#define ELF_MACHINE_CODE EM_OR32 +#define ELF_MAXPAGESIZE 0x1000 + +#define elf_info_to_howto 0 +#define elf_info_to_howto_rel or32_info_to_howto_rel +#define elf_backend_object_p or32_elf_object_p +#define elf_backend_final_write_processing \ + or32_elf_final_write_processing + +#include "elf32-target.h" diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-ppc.c binutils-2.11.93.0.2/bfd/elf32-ppc.c --- binutils-2.11.92.0.12.3/bfd/elf32-ppc.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-ppc.c Sun Feb 3 11:22:30 2002 @@ -44,7 +44,6 @@ static boolean ppc_elf_relax_section static bfd_reloc_status_type ppc_elf_addr16_ha_reloc PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static boolean ppc_elf_set_private_flags PARAMS ((bfd *, flagword)); -static boolean ppc_elf_copy_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean ppc_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static int ppc_elf_additional_program_headers PARAMS ((bfd *)); @@ -1394,24 +1393,6 @@ ppc_elf_set_private_flags (abfd, flags) return true; } -/* Copy backend specific data from one object module to another */ -static boolean -ppc_elf_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking */ static boolean @@ -2477,13 +2458,7 @@ ppc_elf_gc_mark_hook (abfd, info, rel, h } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -2998,9 +2973,8 @@ ppc_elf_relocate_section (output_bfd, in sec = local_sections[r_symndx]; sym_name = ""; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; /* Relocs to local symbols are always resolved. */ will_become_local = 1; } @@ -3212,22 +3186,11 @@ ppc_elf_relocate_section (output_bfd, in skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -3818,7 +3781,6 @@ ppc_elf_grok_psinfo (abfd, note) #define elf_backend_got_header_size 12 #define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE -#define bfd_elf32_bfd_copy_private_bfd_data ppc_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data ppc_elf_merge_private_bfd_data #define bfd_elf32_bfd_relax_section ppc_elf_relax_section #define bfd_elf32_bfd_reloc_type_lookup ppc_elf_reloc_type_lookup diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-s390.c binutils-2.11.93.0.2/bfd/elf32-s390.c --- binutils-2.11.92.0.12.3/bfd/elf32-s390.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-s390.c Thu Feb 7 10:21:03 2002 @@ -69,6 +69,7 @@ static enum elf_reloc_type_class elf_s39 static boolean elf_s390_finish_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); static boolean elf_s390_object_p PARAMS ((bfd *)); +static boolean elf_s390_grok_prstatus PARAMS ((bfd *, Elf_Internal_Note *)); #define USE_RELA 1 /* We want RELA relocations, not REL. */ @@ -868,7 +869,7 @@ elf_s390_check_relocs (abfd, info, sec, /* This relocation describes which C++ vtable entries are actually used. Record for later use during GC. */ case R_390_GNU_VTENTRY: - if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_offset)) + if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend)) return false; break; @@ -916,13 +917,7 @@ elf_s390_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1053,7 +1048,9 @@ elf_s390_adjust_dynamic_symbol (info, h) if (h->plt.refcount <= 0 || (! info->shared && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 - && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)) + && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0 + && h->root.type != bfd_link_hash_undefweak + && h->root.type != bfd_link_hash_undefined)) { /* This case can occur if we saw a PLT32 reloc in an input file, but the symbol was never referred to by a dynamic @@ -1443,10 +1440,12 @@ elf_s390_size_dynamic_sections (output_b linker script /DISCARD/, so we'll be discarding the relocs too. */ } - else + else if (p->count != 0) { srela = elf_section_data (p->sec)->sreloc; srela->_raw_size += p->count * sizeof (Elf32_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; } } } @@ -1568,7 +1567,9 @@ elf_s390_size_dynamic_sections (output_b /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, (PTR) info); + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, + (PTR) info); if ((info->flags & DF_TEXTREL) != 0) { @@ -1664,9 +1665,7 @@ elf_s390_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -1893,19 +1892,11 @@ elf_s390_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - off = (_bfd_stab_section_offset - (output_bfd, htab->elf.stab_info, input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -2388,6 +2379,37 @@ elf_s390_object_p (abfd) return bfd_default_set_arch_mach (abfd, bfd_arch_s390, bfd_mach_s390_esa); } +static boolean +elf_s390_grok_prstatus (abfd, note) + bfd * abfd; + Elf_Internal_Note * note; +{ + int offset; + unsigned int raw_size; + + switch (note->descsz) + { + default: + return false; + + case 224: /* S/390 Linux. */ + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); + + /* pr_pid */ + elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24); + + /* pr_reg */ + offset = 72; + raw_size = 144; + break; + } + + /* Make a ".reg/999" section. */ + return _bfd_elfcore_make_pseudosection (abfd, ".reg", + raw_size, note->descpos + offset); +} + #define TARGET_BIG_SYM bfd_elf32_s390_vec #define TARGET_BIG_NAME "elf32-s390" #define ELF_ARCH bfd_arch_s390 @@ -2421,6 +2443,7 @@ elf_s390_object_p (abfd) #define elf_backend_relocate_section elf_s390_relocate_section #define elf_backend_size_dynamic_sections elf_s390_size_dynamic_sections #define elf_backend_reloc_type_class elf_s390_reloc_type_class +#define elf_backend_grok_prstatus elf_s390_grok_prstatus #define elf_backend_object_p elf_s390_object_p diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-sh-nbsd.c binutils-2.11.93.0.2/bfd/elf32-sh-nbsd.c --- binutils-2.11.92.0.12.3/bfd/elf32-sh-nbsd.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/elf32-sh-nbsd.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,29 @@ +/* Hitachi SH specific support for 32-bit NetBSD + Copyright 2002 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#define TARGET_BIG_SYM bfd_elf32_shnbsd_vec +#define TARGET_BIG_NAME "elf32-sh-nbsd" +#define TARGET_LITTLE_SYM bfd_elf32_shlnbsd_vec +#define TARGET_LITTLE_NAME "elf32-shl-nbsd" +#define ELF_ARCH bfd_arch_sh +#define ELF_MACHINE_CODE EM_SH +#define ELF_MAXPAGESIZE 0x10000 +#define elf_symbol_leading_char 0 + +#include "elf32-sh.c" diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-sh.c binutils-2.11.93.0.2/bfd/elf32-sh.c --- binutils-2.11.92.0.12.3/bfd/elf32-sh.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-sh.c Sun Feb 3 11:22:30 2002 @@ -1023,6 +1023,7 @@ sh_elf_relax_section (abfd, sec, link_in boolean *again; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; boolean have_code; @@ -1031,6 +1032,7 @@ sh_elf_relax_section (abfd, sec, link_in bfd_byte *free_contents = NULL; Elf32_External_Sym *extsyms = NULL; Elf32_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; *again = false; @@ -1045,6 +1047,7 @@ sh_elf_relax_section (abfd, sec, link_in sec->_cooked_size = sec->_raw_size; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; internal_relocs = (_bfd_elf32_link_read_relocs (abfd, sec, (PTR) NULL, (Elf_Internal_Rela *) NULL, @@ -1151,26 +1154,47 @@ sh_elf_relax_section (abfd, sec, link_in extsyms = (Elf32_External_Sym *) symtab_hdr->contents; else { - extsyms = (Elf32_External_Sym *) bfd_malloc (symtab_hdr->sh_size); + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); + extsyms = (Elf32_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) - != symtab_hdr->sh_size)) + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) + goto error_return; + symtab_hdr->contents = (bfd_byte *) extsyms; + } + + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + shndx_hdr->contents = (bfd_byte *) shndx_buf; } } /* Get the value of the symbol referred to by the reloc. */ if (ELF32_R_SYM (irelfn->r_info) < symtab_hdr->sh_info) { + /* A local symbol. */ + Elf32_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym isym; - /* A local symbol. */ - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irelfn->r_info), - &isym); + esym = extsyms + ELF32_R_SYM (irelfn->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irelfn->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); if (isym.st_shndx != _bfd_elf_section_from_bfd_section (abfd, sec)) { @@ -1236,7 +1260,6 @@ sh_elf_relax_section (abfd, sec, link_in elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; /* Replace the jsr with a bsr. */ @@ -1362,16 +1385,12 @@ sh_elf_relax_section (abfd, sec, link_in elf_section_data (sec)->this_hdr.contents = contents; free_contents = NULL; - symtab_hdr->contents = (bfd_byte *) extsyms; free_extsyms = NULL; } } if (free_relocs != NULL) - { - free (free_relocs); - free_relocs = NULL; - } + free (free_relocs); if (free_contents != NULL) { @@ -1382,19 +1401,21 @@ sh_elf_relax_section (abfd, sec, link_in /* Cache the section contents for elf_link_input_bfd. */ elf_section_data (sec)->this_hdr.contents = contents; } - free_contents = NULL; + } + + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); } if (free_extsyms != NULL) { if (! link_info->keep_memory) - free (free_extsyms); - else { - /* Cache the symbols for elf_link_input_bfd. */ - symtab_hdr->contents = (unsigned char *) extsyms; + symtab_hdr->contents = NULL; + free (free_extsyms); } - free_extsyms = NULL; } return true; @@ -1404,8 +1425,17 @@ sh_elf_relax_section (abfd, sec, link_in free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } if (free_extsyms != NULL) - free (free_extsyms); + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } + return false; } @@ -1421,20 +1451,27 @@ sh_elf_relax_delete_bytes (abfd, sec, ad int count; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf32_External_Sym *extsyms; - int shndx, index; + unsigned int sec_shndx; bfd_byte *contents; Elf_Internal_Rela *irel, *irelend; Elf_Internal_Rela *irelalign; bfd_vma toaddr; Elf32_External_Sym *esym, *esymend; - struct elf_link_hash_entry *sym_hash; + Elf_External_Sym_Shndx *shndx_buf, *shndx; + struct elf_link_hash_entry **sym_hashes; + struct elf_link_hash_entry **end_hashes; + unsigned int symcount; asection *o; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; extsyms = (Elf32_External_Sym *) symtab_hdr->contents; - shndx = _bfd_elf_section_from_bfd_section (abfd, sec); + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + shndx_buf = (Elf_External_Sym_Shndx *) shndx_hdr->contents; + + sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); contents = elf_section_data (sec)->this_hdr.contents; @@ -1534,10 +1571,11 @@ sh_elf_relax_delete_bytes (abfd, sec, ad range to be adjusted, and hence must be changed. */ if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info) { - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irel->r_info), - &sym); - if (sym.st_shndx == shndx + esym = extsyms + ELF32_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irel->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &sym); + + if (sym.st_shndx == sec_shndx && (sym.st_value <= addr || sym.st_value >= toaddr)) { @@ -1795,11 +1833,12 @@ sh_elf_relax_delete_bytes (abfd, sec, ad if (ELF32_R_SYM (irelscan->r_info) >= symtab_hdr->sh_info) continue; - bfd_elf32_swap_symbol_in (abfd, - extsyms + ELF32_R_SYM (irelscan->r_info), - &sym); - if (sym.st_shndx == shndx + esym = extsyms + ELF32_R_SYM (irelscan->r_info); + shndx = shndx_buf + (shndx_buf ? ELF32_R_SYM (irelscan->r_info) : 0); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &sym); + + if (sym.st_shndx == sec_shndx && (sym.st_value <= addr || sym.st_value >= toaddr)) { @@ -1836,40 +1875,40 @@ sh_elf_relax_delete_bytes (abfd, sec, ad } /* Adjust the local symbols defined in this section. */ + shndx = shndx_buf; esym = extsyms; esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; esym++) + for (; esym < esymend; esym++, shndx = (shndx ? shndx + 1 : NULL)) { Elf_Internal_Sym isym; + Elf_External_Sym_Shndx dummy; - bfd_elf32_swap_symbol_in (abfd, esym, &isym); + bfd_elf32_swap_symbol_in (abfd, esym, shndx, &isym); - if (isym.st_shndx == shndx + if (isym.st_shndx == sec_shndx && isym.st_value > addr && isym.st_value < toaddr) { isym.st_value -= count; - bfd_elf32_swap_symbol_out (abfd, &isym, esym); + bfd_elf32_swap_symbol_out (abfd, &isym, (PTR) esym, (PTR) &dummy); } } /* Now adjust the global symbols defined in this section. */ - esym = extsyms + symtab_hdr->sh_info; - esymend = extsyms + (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)); - for (index = 0; esym < esymend; esym++, index++) - { - Elf_Internal_Sym isym; - - bfd_elf32_swap_symbol_in (abfd, esym, &isym); - sym_hash = elf_sym_hashes (abfd)[index]; - if (isym.st_shndx == shndx - && ((sym_hash)->root.type == bfd_link_hash_defined - || (sym_hash)->root.type == bfd_link_hash_defweak) - && (sym_hash)->root.u.def.section == sec - && (sym_hash)->root.u.def.value > addr - && (sym_hash)->root.u.def.value < toaddr) + symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym) + - symtab_hdr->sh_info); + sym_hashes = elf_sym_hashes (abfd); + end_hashes = sym_hashes + symcount; + for (; sym_hashes < end_hashes; sym_hashes++) + { + struct elf_link_hash_entry *sym_hash = *sym_hashes; + if ((sym_hash->root.type == bfd_link_hash_defined + || sym_hash->root.type == bfd_link_hash_defweak) + && sym_hash->root.u.def.section == sec + && sym_hash->root.u.def.value > addr + && sym_hash->root.u.def.value < toaddr) { - (sym_hash)->root.u.def.value -= count; + sym_hash->root.u.def.value -= count; } } @@ -2960,7 +2999,7 @@ sh_elf_discard_copies (h, ignore) static boolean sh_elf_relocate_section (output_bfd, info, input_bfd, input_section, contents, relocs, local_syms, local_sections) - bfd *output_bfd ATTRIBUTE_UNUSED; + bfd *output_bfd; struct bfd_link_info *info; bfd *input_bfd; asection *input_section; @@ -3041,7 +3080,6 @@ sh_elf_relocate_section (output_bfd, inf relocation = (sec->output_section->vma + sec->output_offset + sym->st_value); - if (info->relocateable) { /* This is a relocateable link. We don't have to change @@ -3079,6 +3117,35 @@ sh_elf_relocate_section (output_bfd, inf continue; } + else if (! howto->partial_inplace) + { + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; + } + else if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION) + { + asection *msec; + + if (howto->rightshift || howto->src_mask != 0xffffffff) + { + (*_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; + } + + 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 += msec->output_section->vma + msec->output_offset; + bfd_put_32 (input_bfd, addend, contents + rel->r_offset); + addend = 0; + } } else { @@ -3254,22 +3321,11 @@ sh_elf_relocate_section (output_bfd, inf skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -3554,11 +3610,14 @@ sh_elf_get_relocated_section_contents (o asymbol **symbols; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; asection *input_section = link_order->u.indirect.section; bfd *input_bfd = input_section->owner; asection **sections = NULL; Elf_Internal_Rela *internal_relocs = NULL; Elf32_External_Sym *external_syms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *internal_syms = NULL; /* We only need to handle the case of relaxing, or of having a @@ -3571,6 +3630,7 @@ sh_elf_get_relocated_section_contents (o symbols); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; memcpy (data, elf_section_data (input_section)->this_hdr.contents, (size_t) input_section->_raw_size); @@ -3581,19 +3641,31 @@ sh_elf_get_relocated_section_contents (o Elf_Internal_Sym *isymp; asection **secpp; Elf32_External_Sym *esym, *esymend; - bfd_size_type size; + bfd_size_type amt; if (symtab_hdr->contents != NULL) external_syms = (Elf32_External_Sym *) symtab_hdr->contents; - else + else if (symtab_hdr->sh_info != 0) { - size = symtab_hdr->sh_info; - size *= sizeof (Elf32_External_Sym); - external_syms = (Elf32_External_Sym *) bfd_malloc (size); - if (external_syms == NULL && size != 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); + external_syms = (Elf32_External_Sym *) bfd_malloc (amt); + if (external_syms == NULL) goto error_return; if (bfd_seek (input_bfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || bfd_bread (external_syms, size, input_bfd) != size) + || bfd_bread ((PTR) external_syms, amt, input_bfd) != amt) + goto error_return; + } + + if (symtab_hdr->sh_info != 0 && shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, input_bfd) != amt) goto error_return; } @@ -3603,41 +3675,35 @@ sh_elf_get_relocated_section_contents (o if (internal_relocs == NULL) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (Elf_Internal_Sym); - internal_syms = (Elf_Internal_Sym *) bfd_malloc (size); - if (internal_syms == NULL && symtab_hdr->sh_info > 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_Internal_Sym); + internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt); + if (internal_syms == NULL && amt != 0) goto error_return; - size = symtab_hdr->sh_info; - size *= sizeof (asection *); - sections = (asection **) bfd_malloc (size); - if (sections == NULL && symtab_hdr->sh_info > 0) + amt = symtab_hdr->sh_info; + amt *= sizeof (asection *); + sections = (asection **) bfd_malloc (amt); + if (sections == NULL && amt != 0) goto error_return; - isymp = internal_syms; - secpp = sections; - esym = external_syms; - esymend = esym + symtab_hdr->sh_info; - for (; esym < esymend; ++esym, ++isymp, ++secpp) + for (isymp = internal_syms, secpp = sections, shndx = shndx_buf, + esym = external_syms, esymend = esym + symtab_hdr->sh_info; + esym < esymend; + ++esym, ++isymp, ++secpp, shndx = (shndx ? shndx + 1 : NULL)) { asection *isec; - bfd_elf32_swap_symbol_in (input_bfd, esym, isymp); + bfd_elf32_swap_symbol_in (input_bfd, esym, shndx, isymp); if (isymp->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isymp->st_shndx > 0 && isymp->st_shndx < SHN_LORESERVE) - isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); else if (isymp->st_shndx == SHN_ABS) isec = bfd_abs_section_ptr; else if (isymp->st_shndx == SHN_COMMON) isec = bfd_com_section_ptr; else - { - /* Who knows? */ - isec = NULL; - } + isec = bfd_section_from_elf_index (input_bfd, isymp->st_shndx); *secpp = isec; } @@ -3649,16 +3715,14 @@ sh_elf_get_relocated_section_contents (o if (sections != NULL) free (sections); - sections = NULL; if (internal_syms != NULL) free (internal_syms); - internal_syms = NULL; + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); - external_syms = NULL; if (internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); - internal_relocs = NULL; } return data; @@ -3667,6 +3731,8 @@ sh_elf_get_relocated_section_contents (o if (internal_relocs != NULL && internal_relocs != elf_section_data (input_section)->relocs) free (internal_relocs); + if (shndx_buf != NULL) + free (shndx_buf); if (external_syms != NULL && symtab_hdr->contents == NULL) free (external_syms); if (internal_syms != NULL) @@ -3709,12 +3775,9 @@ sh_elf_gc_mark_hook (abfd, info, rel, h, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - return bfd_section_from_elf_index (abfd, sym->st_shndx); + return bfd_section_from_elf_index (abfd, sym->st_shndx); } + return NULL; } diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-sparc.c binutils-2.11.93.0.2/bfd/elf32-sparc.c --- binutils-2.11.92.0.12.3/bfd/elf32-sparc.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf32-sparc.c Sun Feb 3 11:22:30 2002 @@ -76,7 +76,7 @@ reloc_howto_type _bfd_sparc_elf_howto_ta HOWTO(R_SPARC_32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_32", false,0,0xffffffff,true), HOWTO(R_SPARC_DISP8, 0,0, 8,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP8", false,0,0x000000ff,true), HOWTO(R_SPARC_DISP16, 0,1,16,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP16", false,0,0x0000ffff,true), - HOWTO(R_SPARC_DISP32, 0,2,32,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP32", false,0,0x00ffffff,true), + HOWTO(R_SPARC_DISP32, 0,2,32,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP32", false,0,0xffffffff,true), HOWTO(R_SPARC_WDISP30, 2,2,30,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_WDISP30", false,0,0x3fffffff,true), HOWTO(R_SPARC_WDISP22, 2,2,22,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_WDISP22", false,0,0x003fffff,true), HOWTO(R_SPARC_HI22, 10,2,22,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_HI22", false,0,0x003fffff,true), @@ -94,7 +94,7 @@ reloc_howto_type _bfd_sparc_elf_howto_ta HOWTO(R_SPARC_JMP_SLOT, 0,0,00,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_JMP_SLOT",false,0,0x00000000,true), HOWTO(R_SPARC_RELATIVE, 0,0,00,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_RELATIVE",false,0,0x00000000,true), HOWTO(R_SPARC_UA32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_UA32", false,0,0xffffffff,true), - HOWTO(R_SPARC_PLT32, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsupported_reloc, "R_SPARC_PLT32", false,0,0x00000000,true), + HOWTO(R_SPARC_PLT32, 0,0,00,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_PLT32", false,0,0xffffffff,true), HOWTO(R_SPARC_HIPLT22, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsupported_reloc, "R_SPARC_HIPLT22", false,0,0x00000000,true), HOWTO(R_SPARC_LOPLT10, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsupported_reloc, "R_SPARC_LOPLT10", false,0,0x00000000,true), HOWTO(R_SPARC_PCPLT32, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsupported_reloc, "R_SPARC_PCPLT32", false,0,0x00000000,true), @@ -146,6 +146,7 @@ static const struct elf_reloc_map sparc_ { { BFD_RELOC_NONE, R_SPARC_NONE, }, { BFD_RELOC_16, R_SPARC_16, }, + { BFD_RELOC_16_PCREL, R_SPARC_DISP16 }, { BFD_RELOC_8, R_SPARC_8 }, { BFD_RELOC_8_PCREL, R_SPARC_DISP8 }, { BFD_RELOC_CTOR, R_SPARC_32 }, @@ -154,6 +155,7 @@ static const struct elf_reloc_map sparc_ { BFD_RELOC_HI22, R_SPARC_HI22 }, { BFD_RELOC_LO10, R_SPARC_LO10, }, { BFD_RELOC_32_PCREL_S2, R_SPARC_WDISP30 }, + { BFD_RELOC_SPARC_PLT32, R_SPARC_PLT32 }, { BFD_RELOC_SPARC22, R_SPARC_22 }, { BFD_RELOC_SPARC13, R_SPARC_13 }, { BFD_RELOC_SPARC_GOT10, R_SPARC_GOT10 }, @@ -494,6 +496,7 @@ elf32_sparc_check_relocs (abfd, info, se break; + case R_SPARC_PLT32: case R_SPARC_WPLT30: /* This symbol requires a procedure linkage table entry. We actually build the entry in adjust_dynamic_symbol, @@ -507,6 +510,8 @@ elf32_sparc_check_relocs (abfd, info, se reloc for a local symbol if you assemble a call from one section to another when using -K pic. We treat it as WDISP30. */ + if (ELF32_R_TYPE (rel->r_info) != R_SPARC_WPLT30) + goto r_sparc_plt32; break; } @@ -519,6 +524,8 @@ elf32_sparc_check_relocs (abfd, info, se h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + if (ELF32_R_TYPE (rel->r_info) != R_SPARC_WPLT30) + goto r_sparc_plt32; break; case R_SPARC_PC10: @@ -566,6 +573,7 @@ elf32_sparc_check_relocs (abfd, info, se if (h != NULL) h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF; + r_sparc_plt32: if (info->shared && (sec->flags & SEC_ALLOC)) { /* When creating a shared object, we must copy these @@ -662,14 +670,8 @@ elf32_sparc_gc_mark_hook (abfd, info, re } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } return NULL; } @@ -1133,6 +1135,7 @@ elf32_sparc_relocate_section (output_bfd asection *sec; bfd_vma relocation; bfd_reloc_status_type r; + boolean is_plt = false; r_type = ELF32_R_TYPE (rel->r_info); @@ -1176,9 +1179,7 @@ elf32_sparc_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -1190,7 +1191,8 @@ elf32_sparc_relocate_section (output_bfd || h->root.type == bfd_link_hash_defweak) { sec = h->root.u.def.section; - if ((r_type == R_SPARC_WPLT30 + if (((r_type == R_SPARC_WPLT30 + || r_type == R_SPARC_PLT32) && h->plt.offset != (bfd_vma) -1) || ((r_type == R_SPARC_GOT10 || r_type == R_SPARC_GOT13 @@ -1223,7 +1225,15 @@ elf32_sparc_relocate_section (output_bfd || ((r_type == R_SPARC_PC10 || r_type == R_SPARC_PC22) && strcmp (h->root.root.string, - "_GLOBAL_OFFSET_TABLE_") != 0)))) + "_GLOBAL_OFFSET_TABLE_") != 0)) + && ((input_section->flags & SEC_ALLOC) != 0 + /* DWARF will emit R_SPARC_32 relocations in its + sections against symbols defined externally + in shared libraries. We can't do anything + with them here. */ + || ((input_section->flags & SEC_DEBUGGING) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0)))) { /* In these cases, we don't need the relocation value. We check specially because in some @@ -1351,6 +1361,13 @@ elf32_sparc_relocate_section (output_bfd break; + case R_SPARC_PLT32: + if (h == NULL || h->plt.offset == (bfd_vma) -1) + { + r_type = R_SPARC_32; + goto r_sparc_plt32; + } + /* Fall through. */ case R_SPARC_WPLT30: /* Relocation is to the entry for this symbol in the procedure linkage table. */ @@ -1379,6 +1396,12 @@ elf32_sparc_relocate_section (output_bfd relocation = (splt->output_section->vma + splt->output_offset + h->plt.offset); + if (r_type == R_SPARC_PLT32) + { + r_type = R_SPARC_32; + is_plt = true; + goto r_sparc_plt32; + } break; case R_SPARC_PC10: @@ -1409,6 +1432,7 @@ elf32_sparc_relocate_section (output_bfd case R_SPARC_LO10: case R_SPARC_UA16: case R_SPARC_UA32: + r_sparc_plt32: if (info->shared && r_symndx != 0 && (input_section->flags & SEC_ALLOC)) @@ -1442,22 +1466,11 @@ elf32_sparc_relocate_section (output_bfd skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -1487,7 +1500,7 @@ elf32_sparc_relocate_section (output_bfd memset (&outrel, 0, sizeof outrel); /* h->dynindx may be -1 if the symbol was marked to become local. */ - else if (h != NULL + else if (h != NULL && ! is_plt && ((! info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)) @@ -1498,7 +1511,7 @@ elf32_sparc_relocate_section (output_bfd } else { - if (r_type == R_SPARC_32 || r_type == R_SPARC_UA32) + if (r_type == R_SPARC_32) { outrel.r_info = ELF32_R_INFO (0, R_SPARC_RELATIVE); outrel.r_addend = relocation + rel->r_addend; @@ -1507,7 +1520,9 @@ elf32_sparc_relocate_section (output_bfd { long indx; - if (h == NULL) + if (is_plt) + sec = splt; + else if (h == NULL) sec = local_sections[r_symndx]; else { diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-v850.c binutils-2.11.93.0.2/bfd/elf32-v850.c --- binutils-2.11.92.0.12.3/bfd/elf32-v850.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf32-v850.c Sun Feb 3 11:22:30 2002 @@ -64,14 +64,12 @@ static void v850_elf_final_write_process PARAMS ((bfd *, boolean)); static boolean v850_elf_set_private_flags PARAMS ((bfd *, flagword)); -static boolean v850_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean v850_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean v850_elf_print_private_bfd_data PARAMS ((bfd *, PTR)); static boolean v850_elf_section_from_bfd_section - PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *)); + PARAMS ((bfd *, asection *, int *)); static void v850_elf_symbol_processing PARAMS ((bfd *, asymbol *)); static boolean v850_elf_add_symbol_hook @@ -1597,9 +1595,7 @@ v850_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); #if 0 { char * name; @@ -1776,14 +1772,9 @@ v850_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } + return NULL; } @@ -1839,28 +1830,6 @@ v850_elf_set_private_flags (abfd, flags) return true; } -/* Copy backend specific data from one object module to another. */ - -static boolean -v850_elf_copy_private_bfd_data (ibfd, obfd) - bfd * ibfd; - bfd * obfd; -{ - if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); - - elf_gp (obfd) = elf_gp (ibfd); - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -1961,9 +1930,8 @@ static asymbol * v850_elf_zcom_symbol_pt corresponding ELF section index. */ static boolean -v850_elf_section_from_bfd_section (abfd, hdr, sec, retval) +v850_elf_section_from_bfd_section (abfd, sec, retval) bfd * abfd ATTRIBUTE_UNUSED; - Elf32_Internal_Shdr * hdr ATTRIBUTE_UNUSED; asection * sec; int * retval; { @@ -1987,9 +1955,9 @@ v850_elf_symbol_processing (abfd, asym) asymbol * asym; { elf_symbol_type * elfsym = (elf_symbol_type *) asym; - unsigned short index; + unsigned int indx; - index = elfsym->internal_elf_sym.st_shndx; + indx = elfsym->internal_elf_sym.st_shndx; /* If the section index is an "ordinary" index, then it may refer to a v850 specific section created by the assembler. @@ -1997,26 +1965,26 @@ v850_elf_symbol_processing (abfd, asym) FIXME: Should we alter the st_shndx field as well ? */ - if (index < elf_elfheader(abfd)[0].e_shnum) - switch (elf_elfsections(abfd)[index]->sh_type) + if (indx < elf_numsections (abfd)) + switch (elf_elfsections(abfd)[indx]->sh_type) { case SHT_V850_SCOMMON: - index = SHN_V850_SCOMMON; + indx = SHN_V850_SCOMMON; break; case SHT_V850_TCOMMON: - index = SHN_V850_TCOMMON; + indx = SHN_V850_TCOMMON; break; case SHT_V850_ZCOMMON: - index = SHN_V850_ZCOMMON; + indx = SHN_V850_ZCOMMON; break; default: break; } - switch (index) + switch (indx) { case SHN_V850_SCOMMON: if (v850_elf_scom_section.name == NULL) @@ -2087,7 +2055,7 @@ v850_elf_add_symbol_hook (abfd, info, sy asection ** secp; bfd_vma * valp; { - int index = sym->st_shndx; + unsigned int indx = sym->st_shndx; /* If the section index is an "ordinary" index, then it may refer to a v850 specific section created by the assembler. @@ -2095,26 +2063,26 @@ v850_elf_add_symbol_hook (abfd, info, sy FIXME: Should we alter the st_shndx field as well ? */ - if (index < elf_elfheader(abfd)[0].e_shnum) - switch (elf_elfsections(abfd)[index]->sh_type) + if (indx < elf_numsections (abfd)) + switch (elf_elfsections(abfd)[indx]->sh_type) { case SHT_V850_SCOMMON: - index = SHN_V850_SCOMMON; + indx = SHN_V850_SCOMMON; break; case SHT_V850_TCOMMON: - index = SHN_V850_TCOMMON; + indx = SHN_V850_TCOMMON; break; case SHT_V850_ZCOMMON: - index = SHN_V850_ZCOMMON; + indx = SHN_V850_ZCOMMON; break; default: break; } - switch (index) + switch (indx) { case SHN_V850_SCOMMON: *secp = bfd_make_section_old_way (abfd, ".scommon"); @@ -2245,7 +2213,6 @@ v850_elf_fake_sections (abfd, hdr, sec) #define bfd_elf32_bfd_is_local_label_name v850_elf_is_local_label_name #define bfd_elf32_bfd_reloc_type_lookup v850_elf_reloc_type_lookup -#define bfd_elf32_bfd_copy_private_bfd_data v850_elf_copy_private_bfd_data #define bfd_elf32_bfd_merge_private_bfd_data v850_elf_merge_private_bfd_data #define bfd_elf32_bfd_set_private_flags v850_elf_set_private_flags #define bfd_elf32_bfd_print_private_bfd_data v850_elf_print_private_bfd_data diff -uprN binutils-2.11.92.0.12.3/bfd/elf32-xstormy16.c binutils-2.11.93.0.2/bfd/elf32-xstormy16.c --- binutils-2.11.92.0.12.3/bfd/elf32-xstormy16.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/elf32-xstormy16.c Sun Feb 3 11:22:30 2002 @@ -0,0 +1,1109 @@ +/* XSTORMY16-specific support for 32-bit ELF. + Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "elf-bfd.h" +#include "elf/xstormy16.h" +#include "libiberty.h" + +/* Forward declarations. */ +static reloc_howto_type * xstormy16_reloc_type_lookup + PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); +static void xstormy16_info_to_howto_rela + PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *)); +static bfd_reloc_status_type xstormy16_elf_24_reloc + PARAMS ((bfd *abfd, arelent *reloc_entry, asymbol *symbol, + PTR data, asection *input_section, bfd *output_bfd, + char **error_message)); +static boolean xstormy16_elf_check_relocs + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); +static boolean xstormy16_relax_plt_check + PARAMS ((struct elf_link_hash_entry *, PTR)); +static boolean xstormy16_relax_plt_realloc + PARAMS ((struct elf_link_hash_entry *, PTR)); +static boolean xstormy16_elf_relax_section + PARAMS ((bfd *abfd, asection *sec, struct bfd_link_info *link_info, + boolean *again)); +static boolean xstormy16_elf_always_size_sections + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean xstormy16_elf_relocate_section + PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); +static boolean xstormy16_elf_finish_dynamic_sections + PARAMS((bfd *, struct bfd_link_info *)); +static boolean xstormy16_elf_gc_sweep_hook + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); +static asection * xstormy16_elf_gc_mark_hook + PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *)); + +static reloc_howto_type xstormy16_elf_howto_table [] = +{ + /* This reloc does nothing. */ + HOWTO (R_XSTORMY16_NONE, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_NONE", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 32 bit absolute relocation. */ + HOWTO (R_XSTORMY16_32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 16 bit absolute relocation. */ + HOWTO (R_XSTORMY16_16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* An 8 bit absolute relocation. */ + HOWTO (R_XSTORMY16_8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_8", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ + + /* A 32 bit pc-relative relocation. */ + HOWTO (R_XSTORMY16_PC32, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_PC32", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + true), /* pcrel_offset */ + + /* A 16 bit pc-relative relocation. */ + HOWTO (R_XSTORMY16_PC16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_PC16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + true), /* pcrel_offset */ + + /* An 8 bit pc-relative relocation. */ + HOWTO (R_XSTORMY16_PC8, /* type */ + 0, /* rightshift */ + 0, /* size (0 = byte, 1 = short, 2 = long) */ + 8, /* bitsize */ + true, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_PC8", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + true), /* pcrel_offset */ + + /* A 12-bit pc-relative relocation suitable for the branch instructions. */ + HOWTO (R_XSTORMY16_REL_12, /* type */ + 1, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 11, /* bitsize */ + true, /* pc_relative */ + 1, /* bitpos */ + complain_overflow_signed, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_REL_12", /* name */ + true, /* partial_inplace */ + 0, /* src_mask */ + 0x0fff, /* dst_mask */ + true), /* pcrel_offset */ + + /* A 24-bit absolute relocation suitable for the jump instructions. */ + HOWTO (R_XSTORMY16_24, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 24, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_unsigned, /* complain_on_overflow */ + xstormy16_elf_24_reloc, /* special_function */ + "R_XSTORMY16_24", /* name */ + true, /* partial_inplace */ + 0, /* src_mask */ + 0xffff00ff, /* dst_mask */ + true), /* pcrel_offset */ + + /* A 16 bit absolute relocation to a function pointer. */ + HOWTO (R_XSTORMY16_FPTR16, /* type */ + 0, /* rightshift */ + 1, /* size (0 = byte, 1 = short, 2 = long) */ + 16, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_bitfield, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_XSTORMY16_FPTR16", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0xffffffff, /* dst_mask */ + false), /* pcrel_offset */ +}; + +static reloc_howto_type xstormy16_elf_howto_table2 [] = +{ + /* GNU extension to record C++ vtable hierarchy */ + HOWTO (R_XSTORMY16_GNU_VTINHERIT, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + NULL, /* special_function */ + "R_XSTORMY16_GNU_VTINHERIT", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + + /* GNU extension to record C++ vtable member usage */ + HOWTO (R_XSTORMY16_GNU_VTENTRY, /* type */ + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 0, /* bitsize */ + false, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + _bfd_elf_rel_vtable_reloc_fn, /* special_function */ + "R_XSTORMY16_GNU_VTENTRY", /* name */ + false, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + false), /* pcrel_offset */ + +}; + +/* Map BFD reloc types to XSTORMY16 ELF reloc types. */ + +typedef struct xstormy16_reloc_map +{ + bfd_reloc_code_real_type bfd_reloc_val; + unsigned int xstormy16_reloc_val; + reloc_howto_type * table; +} reloc_map; + +static const reloc_map xstormy16_reloc_map [] = +{ + { BFD_RELOC_NONE, R_XSTORMY16_NONE, xstormy16_elf_howto_table }, + { BFD_RELOC_32, R_XSTORMY16_32, xstormy16_elf_howto_table }, + { BFD_RELOC_16, R_XSTORMY16_16, xstormy16_elf_howto_table }, + { BFD_RELOC_8, R_XSTORMY16_8, xstormy16_elf_howto_table }, + { BFD_RELOC_32_PCREL, R_XSTORMY16_PC32, xstormy16_elf_howto_table }, + { BFD_RELOC_16_PCREL, R_XSTORMY16_PC16, xstormy16_elf_howto_table }, + { BFD_RELOC_8_PCREL, R_XSTORMY16_PC8, xstormy16_elf_howto_table }, + { BFD_RELOC_XSTORMY16_REL_12, R_XSTORMY16_REL_12, xstormy16_elf_howto_table }, + { BFD_RELOC_XSTORMY16_24, R_XSTORMY16_24, xstormy16_elf_howto_table }, + { BFD_RELOC_XSTORMY16_FPTR16, R_XSTORMY16_FPTR16, xstormy16_elf_howto_table }, + { BFD_RELOC_VTABLE_INHERIT, R_XSTORMY16_GNU_VTINHERIT, xstormy16_elf_howto_table2 }, + { BFD_RELOC_VTABLE_ENTRY, R_XSTORMY16_GNU_VTENTRY, xstormy16_elf_howto_table2 }, +}; + +static reloc_howto_type * +xstormy16_reloc_type_lookup (abfd, code) + bfd * abfd ATTRIBUTE_UNUSED; + bfd_reloc_code_real_type code; +{ + unsigned int i; + + for (i = ARRAY_SIZE (xstormy16_reloc_map); --i;) + { + const reloc_map * entry; + + entry = xstormy16_reloc_map + i; + + if (entry->bfd_reloc_val == code) + return entry->table + (entry->xstormy16_reloc_val + - entry->table[0].type); + } + + return NULL; +} + +/* Set the howto pointer for an XSTORMY16 ELF reloc. */ + +static void +xstormy16_info_to_howto_rela (abfd, cache_ptr, dst) + bfd * abfd ATTRIBUTE_UNUSED; + arelent * cache_ptr; + Elf32_Internal_Rela * dst; +{ + unsigned int r_type = ELF32_R_TYPE (dst->r_info); + + if (r_type <= (unsigned int) R_XSTORMY16_FPTR16) + cache_ptr->howto = &xstormy16_elf_howto_table [r_type]; + else if (r_type - R_XSTORMY16_GNU_VTINHERIT + <= (unsigned int) R_XSTORMY16_GNU_VTENTRY) + cache_ptr->howto + = &xstormy16_elf_howto_table2 [r_type - R_XSTORMY16_GNU_VTINHERIT]; + else + abort (); +} + +/* Handle the R_XSTORMY16_24 reloc, which has an odd bit arrangement. */ + +static bfd_reloc_status_type +xstormy16_elf_24_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + bfd_vma relocation, x; + + if (output_bfd != NULL) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value; + + relocation += symbol->section->output_section->vma; + relocation += symbol->section->output_offset; + relocation += reloc_entry->addend; + + x = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); + x &= 0x0000ff00; + x |= relocation & 0xff; + x |= (relocation << 8) & 0xffff0000; + bfd_put_32 (abfd, x, (bfd_byte *) data + reloc_entry->address); + + if (relocation & ~ (bfd_vma) 0xffffff) + return bfd_reloc_overflow; + + return bfd_reloc_ok; +} + +/* We support 16-bit pointers to code above 64k by generating a thunk + below 64k containing a JMPF instruction to the final address. We + cannot, unfortunately, minimize the number of thunks unless the + -relax switch is given, as otherwise we have no idea where the + sections will fall in the address space. */ + +static boolean +xstormy16_elf_check_relocs (abfd, info, sec, relocs) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; + const Elf_Internal_Rela *relocs; +{ + const Elf_Internal_Rela *rel, *relend; + struct elf_link_hash_entry **sym_hashes; + Elf_Internal_Shdr *symtab_hdr; + bfd_vma *local_plt_offsets; + asection *splt; + bfd *dynobj; + + if (info->relocateable) + return true; + + symtab_hdr = &elf_tdata(abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_plt_offsets = elf_local_got_offsets (abfd); + splt = NULL; + dynobj = elf_hash_table(info)->dynobj; + + relend = relocs + sec->reloc_count; + for (rel = relocs; rel < relend; ++rel) + { + unsigned long r_symndx; + struct elf_link_hash_entry *h; + bfd_vma *offset; + + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx < symtab_hdr->sh_info) + h = NULL; + else + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + } + + switch (ELF32_R_TYPE (rel->r_info)) + { + /* This relocation describes a 16-bit pointer to a function. + We may need to allocate a thunk in low memory; reserve memory + for it now. */ + case R_XSTORMY16_FPTR16: + if (rel->r_addend != 0) + { + (*info->callbacks->warning) + (info, _("non-zero addend in @fptr reloc"), 0, + abfd, 0, 0); + } + + if (dynobj == NULL) + elf_hash_table (info)->dynobj = dynobj = abfd; + if (splt == NULL) + { + splt = bfd_get_section_by_name (dynobj, ".plt"); + if (splt == NULL) + { + splt = bfd_make_section (dynobj, ".plt"); + if (splt == NULL + || ! bfd_set_section_flags (dynobj, splt, + (SEC_ALLOC + | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED + | SEC_READONLY + | SEC_CODE)) + || ! bfd_set_section_alignment (dynobj, splt, 1)) + return false; + } + } + + if (h != NULL) + offset = &h->plt.offset; + else + { + if (local_plt_offsets == NULL) + { + size_t size; + unsigned int i; + + size = symtab_hdr->sh_info * sizeof (bfd_vma); + local_plt_offsets = (bfd_vma *) bfd_alloc (abfd, size); + if (local_plt_offsets == NULL) + return false; + elf_local_got_offsets (abfd) = local_plt_offsets; + + for (i = 0; i < symtab_hdr->sh_info; i++) + local_plt_offsets[i] = (bfd_vma) -1; + } + offset = &local_plt_offsets[r_symndx]; + } + + if (*offset == (bfd_vma) -1) + { + *offset = splt->_raw_size; + splt->_raw_size += 4; + } + break; + + /* This relocation describes the C++ object vtable hierarchy. + Reconstruct it for later use during GC. */ + case R_XSTORMY16_GNU_VTINHERIT: + if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset)) + return false; + break; + + /* This relocation describes which C++ vtable entries are actually + used. Record for later use during GC. */ + case R_XSTORMY16_GNU_VTENTRY: + if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend)) + return false; + break; + } + } + + return true; +} + +/* A subroutine of xstormy16_elf_relax_section. If the global symbol H + is within the low 64k, remove any entry for it in the plt. */ + +struct relax_plt_data +{ + asection *splt; + boolean *again; +}; + +static boolean +xstormy16_relax_plt_check (h, xdata) + struct elf_link_hash_entry *h; + PTR xdata; +{ + struct relax_plt_data *data = (struct relax_plt_data *) xdata; + + if (h->plt.offset != (bfd_vma) -1) + { + bfd_vma address; + + if (h->root.type == bfd_link_hash_undefined + || h->root.type == bfd_link_hash_undefweak) + address = 0; + else + address = (h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset + + h->root.u.def.value); + + if (address <= 0xffff) + { + h->plt.offset = -1; + data->splt->_cooked_size -= 4; + *data->again = true; + } + } + + return true; +} + +/* A subroutine of xstormy16_elf_relax_section. If the global symbol H + previously had a plt entry, give it a new entry offset. */ + +static boolean +xstormy16_relax_plt_realloc (h, xdata) + struct elf_link_hash_entry *h; + PTR xdata; +{ + bfd_vma *entry = (bfd_vma *) xdata; + + if (h->plt.offset != (bfd_vma) -1) + { + h->plt.offset = *entry; + *entry += 4; + } + + return true; +} + +static boolean +xstormy16_elf_relax_section (dynobj, splt, info, again) + bfd *dynobj; + asection *splt; + struct bfd_link_info *info; + boolean *again; +{ + struct relax_plt_data relax_plt_data; + bfd *ibfd; + + /* Assume nothing changes. */ + *again = false; + + if (info->relocateable) + return true; + + /* We only relax the .plt section at the moment. */ + if (dynobj != elf_hash_table (info)->dynobj + || strcmp (splt->name, ".plt") != 0) + return true; + + /* Quick check for an empty plt. */ + if (splt->_raw_size == 0) + return true; + + /* If this is the first time we have been called for this section, + initialize the cooked size. */ + if (splt->_cooked_size == 0) + splt->_cooked_size = splt->_raw_size; + + /* Map across all global symbols; see which ones happen to + fall in the low 64k. */ + relax_plt_data.splt = splt; + relax_plt_data.again = again; + elf_link_hash_traverse (elf_hash_table (info), xstormy16_relax_plt_check, + &relax_plt_data); + + /* Likewise for local symbols, though that's somewhat less convenient + as we have walk the list of input bfds and swap in symbol data. */ + for (ibfd = info->input_bfds; ibfd ; ibfd = ibfd->link_next) + { + bfd_vma *local_plt_offsets = elf_local_got_offsets (ibfd); + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; + Elf32_External_Sym *extsyms; + Elf_External_Sym_Shndx *shndx_buf; + unsigned int idx; + + if (! local_plt_offsets) + continue; + + symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; + shndx_hdr = &elf_tdata (ibfd)->symtab_shndx_hdr; + + if (symtab_hdr->contents != NULL) + extsyms = (Elf32_External_Sym *) symtab_hdr->contents; + else + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf32_External_Sym); + extsyms = (Elf32_External_Sym *) bfd_malloc (amt); + if (extsyms == NULL) + return false; + if (bfd_seek (ibfd, symtab_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) extsyms, amt, ibfd) != amt) + { + error_ret_free_extsyms: + free (extsyms); + return false; + } + } + + shndx_buf = NULL; + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_ret_free_extsyms; + if (bfd_seek (ibfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, ibfd) != amt) + { + free (shndx_buf); + goto error_ret_free_extsyms; + } + shndx_hdr->contents = (bfd_byte *) shndx_buf; + } + + for (idx = 0; idx < symtab_hdr->sh_info; ++idx) + { + Elf_External_Sym_Shndx *shndx; + Elf_Internal_Sym isym; + asection *tsec; + bfd_vma address; + + if (local_plt_offsets[idx] == (bfd_vma) -1) + continue; + + shndx = shndx_buf; + if (shndx != NULL) + shndx += idx; + bfd_elf32_swap_symbol_in (ibfd, extsyms + idx, shndx, &isym); + if (isym.st_shndx == SHN_UNDEF) + continue; + else if (isym.st_shndx == SHN_ABS) + tsec = bfd_abs_section_ptr; + else if (isym.st_shndx == SHN_COMMON) + tsec = bfd_com_section_ptr; + else + tsec = bfd_section_from_elf_index (ibfd, isym.st_shndx); + + address = (tsec->output_section->vma + + tsec->output_offset + + isym.st_value); + if (address <= 0xffff) + { + local_plt_offsets[idx] = -1; + splt->_cooked_size -= 4; + *again = true; + } + } + + if (shndx_buf != NULL) + free (shndx_buf); + + if ((Elf32_External_Sym *) symtab_hdr->contents != extsyms) + free (extsyms); + } + + /* If we changed anything, walk the symbols again to reallocate + .plt entry addresses. */ + if (*again && splt->_cooked_size > 0) + { + bfd_vma entry = 0; + + elf_link_hash_traverse (elf_hash_table (info), + xstormy16_relax_plt_realloc, &entry); + + for (ibfd = info->input_bfds; ibfd ; ibfd = ibfd->link_next) + { + bfd_vma *local_plt_offsets = elf_local_got_offsets (ibfd); + unsigned int nlocals = elf_tdata (ibfd)->symtab_hdr.sh_info; + unsigned int idx; + + if (! local_plt_offsets) + continue; + + for (idx = 0; idx < nlocals; ++idx) + if (local_plt_offsets[idx] != (bfd_vma) -1) + { + local_plt_offsets[idx] = entry; + entry += 4; + } + } + } + + splt->_raw_size = splt->_cooked_size; + return true; +} + +static boolean +xstormy16_elf_always_size_sections (output_bfd, info) + bfd *output_bfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info; +{ + bfd *dynobj; + asection *splt; + + if (info->relocateable) + return true; + + dynobj = elf_hash_table (info)->dynobj; + if (dynobj == NULL) + return true; + + splt = bfd_get_section_by_name (dynobj, ".plt"); + BFD_ASSERT (splt != NULL); + + splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->_raw_size); + if (splt->contents == NULL) + return false; + + return true; +} + +/* Relocate an XSTORMY16 ELF section. + There is some attempt to make this function usable for many architectures, + both USE_REL and USE_RELA ['twould be nice if such a critter existed], + if only to serve as a learning tool. + + The RELOCATE_SECTION function is called by the new ELF backend linker + to handle the relocations for a section. + + The relocs are always passed as Rela structures; if the section + actually uses Rel structures, the r_addend field will always be + zero. + + This function is responsible for adjusting the section contents as + necessary, and (if using Rela relocs and generating a relocateable + output file) adjusting the reloc addend as necessary. + + This function does not have to worry about setting the reloc + address or the reloc symbol index. + + LOCAL_SYMS is a pointer to the swapped in local symbols. + + LOCAL_SECTIONS is an array giving the section in the input file + corresponding to the st_shndx field of each local symbol. + + The global hash table entry for the global symbols can be found + via elf_sym_hashes (input_bfd). + + When generating relocateable output, this function must handle + STB_LOCAL/STT_SECTION symbols specially. The output symbol is + going to be the section symbol corresponding to the output + section, which means that the addend must be adjusted + accordingly. */ + +static boolean +xstormy16_elf_relocate_section (output_bfd, info, input_bfd, input_section, + contents, relocs, local_syms, local_sections) + bfd * output_bfd ATTRIBUTE_UNUSED; + struct bfd_link_info * info; + bfd * input_bfd; + asection * input_section; + bfd_byte * contents; + Elf_Internal_Rela * relocs; + Elf_Internal_Sym * local_syms; + asection ** local_sections; +{ + Elf_Internal_Shdr * symtab_hdr; + struct elf_link_hash_entry ** sym_hashes; + Elf_Internal_Rela * rel; + Elf_Internal_Rela * relend; + bfd *dynobj; + asection *splt; + + symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (input_bfd); + relend = relocs + input_section->reloc_count; + + dynobj = elf_hash_table (info)->dynobj; + splt = NULL; + if (dynobj != NULL) + splt = bfd_get_section_by_name (dynobj, ".plt"); + + for (rel = relocs; rel < relend; rel ++) + { + reloc_howto_type * howto; + unsigned long r_symndx; + Elf_Internal_Sym * sym; + asection * sec; + struct elf_link_hash_entry * h; + bfd_vma relocation; + bfd_reloc_status_type r; + const char * name = NULL; + int r_type; + + r_type = ELF32_R_TYPE (rel->r_info); + + if ( r_type == R_XSTORMY16_GNU_VTINHERIT + || r_type == R_XSTORMY16_GNU_VTENTRY) + 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; + sec = NULL; + + if (r_symndx < symtab_hdr->sh_info) + { + sym = local_syms + r_symndx; + sec = local_sections [r_symndx]; + relocation = (sec->output_section->vma + + sec->output_offset + + sym->st_value); + + name = bfd_elf_string_from_elf_section + (input_bfd, symtab_hdr->sh_link, sym->st_name); + name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name; + } + else + { + h = sym_hashes [r_symndx - symtab_hdr->sh_info]; + + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + + name = h->root.root.string; + + if (h->root.type == bfd_link_hash_defined + || h->root.type == bfd_link_hash_defweak) + { + sec = h->root.u.def.section; + relocation = (h->root.u.def.value + + sec->output_section->vma + + sec->output_offset); + } + else if (h->root.type == bfd_link_hash_undefweak) + { + relocation = 0; + } + else + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.string, input_bfd, + input_section, rel->r_offset, true))) + return false; + relocation = 0; + } + } + + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_XSTORMY16_24: + { + bfd_vma reloc = relocation + rel->r_addend; + unsigned int x; + + x = bfd_get_32 (input_bfd, contents + rel->r_offset); + x &= 0x0000ff00; + x |= reloc & 0xff; + x |= (reloc << 8) & 0xffff0000; + bfd_put_32 (input_bfd, x, contents + rel->r_offset); + + if (reloc & ~0xffffff) + r = bfd_reloc_overflow; + else + r = bfd_reloc_ok; + break; + } + + case R_XSTORMY16_FPTR16: + { + bfd_vma *plt_offset; + + if (h != NULL) + plt_offset = &h->plt.offset; + else + plt_offset = elf_local_got_offsets (input_bfd) + r_symndx; + + if (relocation <= 0xffff) + { + /* If the symbol is in range for a 16-bit address, we should + have deallocated the plt entry in relax_section. */ + BFD_ASSERT (*plt_offset == (bfd_vma) -1); + } + else + { + /* If the symbol is out of range for a 16-bit address, + we must have allocated a plt entry. */ + BFD_ASSERT (*plt_offset != (bfd_vma) -1); + + /* If this is the first time we've processed this symbol, + fill in the plt entry with the correct symbol address. */ + if ((*plt_offset & 1) == 0) + { + unsigned int x; + + x = 0x00000200; /* jmpf */ + x |= relocation & 0xff; + x |= (relocation << 8) & 0xffff0000; + bfd_put_32 (input_bfd, x, splt->contents + *plt_offset); + *plt_offset |= 1; + } + + relocation = (splt->output_section->vma + + splt->output_offset + + (*plt_offset & -2)); + } + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, 0); + break; + } + + default: + r = _bfd_final_link_relocate (howto, input_bfd, input_section, + contents, rel->r_offset, + relocation, rel->r_addend); + break; + } + + if (r != bfd_reloc_ok) + { + const char * msg = (const char *) NULL; + + switch (r) + { + case bfd_reloc_overflow: + r = info->callbacks->reloc_overflow + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset); + break; + + case bfd_reloc_undefined: + r = info->callbacks->undefined_symbol + (info, name, input_bfd, input_section, rel->r_offset, + true); + break; + + case bfd_reloc_outofrange: + msg = _("internal error: out of range error"); + break; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + break; + + case bfd_reloc_dangerous: + msg = _("internal error: dangerous relocation"); + break; + + default: + msg = _("internal error: unknown error"); + break; + } + + if (msg) + r = info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + + if (! r) + return false; + } + } + + return true; +} + +/* This must exist if dynobj is ever set. */ + +static boolean +xstormy16_elf_finish_dynamic_sections (abfd, info) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info; +{ + bfd *dynobj; + asection *splt; + + /* As an extra sanity check, verify that all plt entries have + been filled in. */ + + if ((dynobj = elf_hash_table (info)->dynobj) != NULL + && (splt = bfd_get_section_by_name (dynobj, ".plt")) != NULL) + { + bfd_byte *contents = splt->contents; + unsigned int i, size = splt->_raw_size; + for (i = 0; i < size; i += 4) + { + unsigned int x = bfd_get_32 (dynobj, contents + i); + BFD_ASSERT (x != 0); + } + } + + return true; +} + +/* Return the section that should be marked against GC for a given + relocation. */ + +static asection * +xstormy16_elf_gc_mark_hook (abfd, info, rel, h, sym) + bfd * abfd; + struct bfd_link_info * info ATTRIBUTE_UNUSED; + Elf_Internal_Rela * rel; + struct elf_link_hash_entry * h; + Elf_Internal_Sym * sym; +{ + if (h != NULL) + { + switch (ELF32_R_TYPE (rel->r_info)) + { + case R_XSTORMY16_GNU_VTINHERIT: + case R_XSTORMY16_GNU_VTENTRY: + break; + + default: + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + default: + break; + } + } + } + else + { + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } + + return NULL; +} + +/* Update the got entry reference counts for the section being removed. */ + +static boolean +xstormy16_elf_gc_sweep_hook (abfd, info, sec, relocs) + bfd * abfd ATTRIBUTE_UNUSED; + struct bfd_link_info * info ATTRIBUTE_UNUSED; + asection * sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela * relocs ATTRIBUTE_UNUSED; +{ + return true; +} + +#define ELF_ARCH bfd_arch_xstormy16 +#define ELF_MACHINE_CODE EM_XSTORMY16 +#define ELF_MAXPAGESIZE 0x100 + +#define TARGET_LITTLE_SYM bfd_elf32_xstormy16_vec +#define TARGET_LITTLE_NAME "elf32-xstormy16" + +#define elf_info_to_howto_rel NULL +#define elf_info_to_howto xstormy16_info_to_howto_rela +#define elf_backend_relocate_section xstormy16_elf_relocate_section +#define elf_backend_gc_mark_hook xstormy16_elf_gc_mark_hook +#define elf_backend_gc_sweep_hook xstormy16_elf_gc_sweep_hook +#define elf_backend_check_relocs xstormy16_elf_check_relocs +#define elf_backend_always_size_sections \ + xstormy16_elf_always_size_sections +#define elf_backend_finish_dynamic_sections \ + xstormy16_elf_finish_dynamic_sections + +#define elf_backend_can_gc_sections 1 + +#define bfd_elf32_bfd_reloc_type_lookup xstormy16_reloc_type_lookup +#define bfd_elf32_bfd_relax_section xstormy16_elf_relax_section + +#include "elf32-target.h" diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-alpha.c binutils-2.11.93.0.2/bfd/elf64-alpha.c --- binutils-2.11.92.0.12.3/bfd/elf64-alpha.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-alpha.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* Alpha specific support for 64-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Richard Henderson . @@ -170,8 +170,9 @@ struct alpha_elf_link_hash_entry int flags; - /* An additional flag. */ + /* Additional flags. */ #define ALPHA_ELF_GOT_ENTRY_RELOCS_DONE 0x10 +#define ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED 0x20 int use_count; } *got_entries; @@ -940,7 +941,7 @@ elf64_alpha_info_to_howto (abfd, cache_p #define OP_LDQ 0x29 #define OP_BR 0x30 #define OP_BSR 0x34 -#define INSN_UNOP 0x2fe00000 +#define INSN_UNOP 0x2ffe0000 struct alpha_relax_info { @@ -1361,12 +1362,14 @@ elf64_alpha_relax_section (abfd, sec, li boolean *again; { Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; bfd_byte *free_contents = NULL; Elf64_External_Sym *extsyms = NULL; Elf64_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; struct alpha_elf_got_entry **local_got_entries; struct alpha_relax_info info; @@ -1447,17 +1450,33 @@ elf64_alpha_relax_section (abfd, sec, li /* Read this BFD's symbols if we haven't done so already. */ if (extsyms == NULL) { + bfd_size_type amt; + if (symtab_hdr->contents != NULL) extsyms = (Elf64_External_Sym *) symtab_hdr->contents; else { - extsyms = (Elf64_External_Sym *) bfd_malloc (symtab_hdr->sh_size); + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf64_External_Sym); + extsyms = (Elf64_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) - != symtab_hdr->sh_size)) + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) + goto error_return; + } + + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) goto error_return; } } @@ -1466,19 +1485,20 @@ elf64_alpha_relax_section (abfd, sec, li if (ELF64_R_SYM (irel->r_info) < symtab_hdr->sh_info) { /* A local symbol. */ - bfd_elf64_swap_symbol_in (abfd, - extsyms + ELF64_R_SYM (irel->r_info), - &isym); + Elf64_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; + + esym = extsyms + ELF64_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELF64_R_SYM (irel->r_info) : 0); + bfd_elf64_swap_symbol_in (abfd, esym, shndx, &isym); if (isym.st_shndx == SHN_UNDEF) info.tsec = bfd_und_section_ptr; - else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE) - info.tsec = bfd_section_from_elf_index (abfd, isym.st_shndx); else if (isym.st_shndx == SHN_ABS) info.tsec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) info.tsec = bfd_com_section_ptr; else - continue; /* who knows. */ + info.tsec = bfd_section_from_elf_index (abfd, isym.st_shndx); info.h = NULL; info.other = isym.st_other; @@ -1565,6 +1585,9 @@ elf64_alpha_relax_section (abfd, sec, li } } + if (shndx_buf != NULL) + free (shndx_buf); + if (free_extsyms != NULL) { if (! link_info->keep_memory) @@ -1585,6 +1608,8 @@ elf64_alpha_relax_section (abfd, sec, li free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + free (shndx_buf); if (free_extsyms != NULL) free (free_extsyms); return false; @@ -2476,7 +2501,8 @@ elf64_alpha_check_relocs (abfd, info, se rent->srel = sreloc; rent->rtype = r_type; rent->count = 1; - rent->reltext = (sec->flags & SEC_READONLY) != 0; + rent->reltext = ((sec->flags & (SEC_READONLY | SEC_ALLOC)) + == (SEC_READONLY | SEC_ALLOC)); rent->next = h->reloc_entries; h->reloc_entries = rent; @@ -2520,8 +2546,7 @@ elf64_alpha_adjust_dynamic_symbol (info, /* Now that we've seen all of the input symbols, finalize our decision about whether this symbol should get a .plt entry. */ - if (h->root.type != bfd_link_hash_undefweak - && alpha_elf_dynamic_symbol_p (h, info) + if (alpha_elf_dynamic_symbol_p (h, info) && ((h->type == STT_FUNC && !(ah->flags & ALPHA_ELF_LINK_HASH_LU_ADDR)) || (h->type == STT_NOTYPE @@ -3318,9 +3343,7 @@ elf64_alpha_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -3402,6 +3425,38 @@ elf64_alpha_relocate_section (output_bfd gotent = (alpha_elf_tdata(input_bfd)-> local_got_entries[r_symndx]); dynamic_symbol = false; + + /* Need to adjust local GOT entries' addends for SEC_MERGE + unless it has been done already. */ + if ((sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION + && (elf_section_data (sec)->sec_info_type + == ELF_INFO_TYPE_MERGE) + && (gotent->flags & ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED) == 0) + { + struct alpha_elf_got_entry *ent; + asection *msec; + + for (ent = gotent; ent; ent = ent->next) + { + ent->flags |= ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED; + if (ent->use_count == 0) + continue; + msec = sec; + ent->addend = + _bfd_merged_section_offset (output_bfd, &msec, + elf_section_data (sec)-> + sec_info, + sym->st_value + + ent->addend, + (bfd_vma) 0); + ent->addend -= sym->st_value; + ent->addend += msec->output_section->vma + + msec->output_offset + - sec->output_section->vma + - sec->output_offset; + } + } } BFD_ASSERT(gotent != NULL); @@ -3504,7 +3559,6 @@ elf64_alpha_relocate_section (output_bfd case R_ALPHA_REFQUAD: { Elf_Internal_Rela outrel; - boolean skip; /* Careful here to remember RELATIVE relocations for global variables for symbolic shared objects. */ @@ -3539,25 +3593,10 @@ elf64_alpha_relocate_section (output_bfd BFD_ASSERT(srel != NULL); } - skip = false; - - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } - - if (! skip) + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset != (bfd_vma) -1) outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); else @@ -3589,6 +3628,15 @@ elf64_alpha_relocate_section (output_bfd { const char *name; + /* Don't warn if the overflow is due to pc relative reloc + against discarded section. Section optimization code should + handle it. */ + + if (r_symndx < symtab_hdr->sh_info + && sec != NULL && howto->pc_relative + && elf_discarded_section (sec)) + break; + if (h != NULL) name = h->root.root.root.string; else diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-hppa.c binutils-2.11.93.0.2/bfd/elf64-hppa.c --- binutils-2.11.92.0.12.3/bfd/elf64-hppa.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/elf64-hppa.c Sun Feb 3 11:22:30 2002 @@ -585,6 +585,7 @@ elf64_hppa_check_relocs (abfd, info, sec struct elf64_hppa_link_hash_table *hppa_info; const Elf_Internal_Rela *relend; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; const Elf_Internal_Rela *rel; asection *dlt, *plt, *stubs; char *buf; @@ -611,9 +612,10 @@ elf64_hppa_check_relocs (abfd, info, sec if (info->shared && hppa_info->section_syms_bfd != abfd) { unsigned long i; - int highest_shndx; + unsigned int highest_shndx; Elf_Internal_Sym *local_syms, *isym; Elf64_External_Sym *ext_syms, *esym; + Elf_External_Sym_Shndx *shndx_buf, *shndx; bfd_size_type amt; /* We're done with the old cache of section index to section symbol @@ -644,24 +646,49 @@ elf64_hppa_check_relocs (abfd, info, sec if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 || bfd_bread (ext_syms, amt, abfd) != amt) { - free (local_syms); free (ext_syms); + free (local_syms); return false; } + shndx_buf = NULL; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + { + free (ext_syms); + free (local_syms); + return false; + } + + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread (shndx_buf, amt, abfd) != amt) + { + free (shndx_buf); + free (ext_syms); + free (local_syms); + return false; + } + } + /* Swap in the local symbols, also record the highest section index referenced by the local symbols. */ - isym = local_syms; - esym = ext_syms; highest_shndx = 0; - for (i = 0; i < symtab_hdr->sh_info; i++, esym++, isym++) + for (i = 0, isym = local_syms, esym = ext_syms, shndx = shndx_buf; + i < symtab_hdr->sh_info; + i++, esym++, isym++, shndx = (shndx != NULL ? shndx + 1 : NULL)) { - bfd_elf64_swap_symbol_in (abfd, esym, isym); + bfd_elf64_swap_symbol_in (abfd, esym, shndx, isym); if (isym->st_shndx > highest_shndx) highest_shndx = isym->st_shndx; } /* Now we can free the external symbols. */ + free (shndx_buf); free (ext_syms); /* Allocate an array to hold the section index to section symbol index diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-mips.c binutils-2.11.93.0.2/bfd/elf64-mips.c --- binutils-2.11.92.0.12.3/bfd/elf64-mips.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/bfd/elf64-mips.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* MIPS-specific support for 64-bit ELF - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Ian Lance Taylor, Cygnus Support Linker support added by Mark Mitchell, CodeSourcery, LLC. @@ -25,9 +25,21 @@ Foundation, Inc., 59 Temple Place - Suit The MIPS 64-bit ELF ABI uses an unusual reloc format. This file overrides the usual ELF reloc handling, and handles reading and - writing the relocations here. + writing the relocations here. */ - The MIPS 64-bit ELF ABI also uses an unusual archive map format. */ +/* TODO: Many things are unsupported, even if there is some code for it + . (which was mostly stolen from elf32-mips.c and slightly adapted). + . + . - Relocation handling for REL relocs is wrong in many cases and + . generally untested. + . - Relocation handling for RELA relocs related to GOT support are + . also likely to be wrong. + . - Support for MIPS16 is only partially implemented. + . - Embedded PIC is only partially implemented (is it needed?). + . - Combined relocs with RSS_* entries are unsupported. + . - The whole GOT handling for NewABI is missing, some parts of + . the OldABI version is still lying around and shold be removed. + */ #include "bfd.h" #include "sysdep.h" @@ -49,6 +61,8 @@ Foundation, Inc., 59 Temple Place - Suit #define ECOFF_SIGNED_64 #include "ecoffswap.h" +struct mips_elf64_link_hash_entry; + static void mips_elf64_swap_reloc_in PARAMS ((bfd *, const Elf64_Mips_External_Rel *, Elf64_Mips_Internal_Rel *)); @@ -69,17 +83,152 @@ static void mips_elf64_be_swap_reloca_in PARAMS ((bfd *, const bfd_byte *, Elf_Internal_Rela *)); static void mips_elf64_be_swap_reloca_out PARAMS ((bfd *, const Elf_Internal_Rela *, bfd_byte *)); +static bfd_vma mips_elf64_high PARAMS ((bfd_vma)); +static bfd_vma mips_elf64_higher PARAMS ((bfd_vma)); +static bfd_vma mips_elf64_highest PARAMS ((bfd_vma)); static reloc_howto_type *mips_elf64_reloc_type_lookup PARAMS ((bfd *, bfd_reloc_code_real_type)); +static void mips_elf64_info_to_howto_rel + PARAMS ((bfd *, arelent *, Elf64_Internal_Rel *)); +static void mips_elf64_info_to_howto_rela + PARAMS ((bfd *, arelent *, Elf64_Internal_Rela *)); static long mips_elf64_get_reloc_upper_bound PARAMS ((bfd *, asection *)); static boolean mips_elf64_slurp_one_reloc_table PARAMS ((bfd *, asection *, asymbol **, const Elf_Internal_Shdr *)); static boolean mips_elf64_slurp_reloc_table PARAMS ((bfd *, asection *, asymbol **, boolean)); static void mips_elf64_write_relocs PARAMS ((bfd *, asection *, PTR)); -static boolean mips_elf64_slurp_armap PARAMS ((bfd *)); -static boolean mips_elf64_write_armap - PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); +static void mips_elf64_write_rel + PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR)); +static void mips_elf64_write_rela + PARAMS((bfd *, asection *, Elf_Internal_Shdr *, int *, PTR)); +static struct bfd_hash_entry *mips_elf64_link_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); +static bfd_reloc_status_type mips_elf64_hi16_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_higher_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_highest_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_gprel16_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_gprel16_reloca + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_literal_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_gprel32_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_shift6_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static bfd_reloc_status_type mips_elf64_got16_reloc + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); +static boolean mips_elf64_assign_gp PARAMS ((bfd *, bfd_vma *)); +static bfd_reloc_status_type mips_elf64_final_gp + PARAMS ((bfd *, asymbol *, boolean, char **, bfd_vma *)); +static bfd_reloc_status_type gprel16_with_gp + PARAMS ((bfd *, asymbol *, arelent *, asection *, boolean, PTR, bfd_vma)); +static int mips_elf64_additional_program_headers PARAMS ((bfd *)); +static struct bfd_link_hash_table *mips_elf64_link_hash_table_create + PARAMS((bfd *)); +static bfd_vma mips_elf64_got_offset_from_index + PARAMS ((bfd *, bfd *, bfd_vma)); +static struct mips_elf64_got_info *_mips_elf64_got_info + PARAMS ((bfd *, asection **)); +static bfd_vma mips_elf64_sign_extend PARAMS ((bfd_vma, int)); +static boolean mips_elf64_overflow_p PARAMS ((bfd_vma, int)); +static bfd_vma mips_elf64_global_got_index + PARAMS ((bfd *, struct elf_link_hash_entry *)); +static boolean mips_elf64_sort_hash_table_f + PARAMS ((struct mips_elf64_link_hash_entry *, PTR)); +static boolean mips_elf64_sort_hash_table + PARAMS ((struct bfd_link_info *, unsigned long)); +static void mips_elf64_swap_msym_out + PARAMS ((bfd *, const Elf32_Internal_Msym *, Elf32_External_Msym *)); +static bfd_vma mips_elf64_create_local_got_entry + PARAMS ((bfd *abfd, struct mips_elf64_got_info *, asection *, + bfd_vma value)); +static bfd_vma mips_elf64_local_got_index + PARAMS ((bfd *, struct bfd_link_info *, bfd_vma)); +static bfd_vma mips_elf64_got_page + PARAMS ((bfd *, struct bfd_link_info *, bfd_vma, bfd_vma *)); +static bfd_vma mips_elf64_got16_entry + PARAMS ((bfd *, struct bfd_link_info *, bfd_vma, boolean)); +static boolean mips_elf64_local_relocation_p + PARAMS ((bfd *, const Elf_Internal_Rela *, asection **, boolean)); +static const Elf_Internal_Rela *mips_elf64_next_relocation + PARAMS ((unsigned int, const Elf_Internal_Rela *, + const Elf_Internal_Rela *)); +static boolean mips_elf64_create_dynamic_relocation + PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Rela *, + struct mips_elf64_link_hash_entry *, asection *, bfd_vma, + bfd_vma *, asection *)); +static bfd_reloc_status_type mips_elf64_calculate_relocation + PARAMS ((bfd *, bfd *, asection *, struct bfd_link_info *, + const Elf_Internal_Rela *, bfd_vma, reloc_howto_type *, + Elf_Internal_Sym *, asection **, bfd_vma *, const char **, + boolean *)); +static bfd_vma mips_elf64_obtain_contents + PARAMS ((reloc_howto_type *, const Elf_Internal_Rela *, bfd *, bfd_byte *)); +static boolean mips_elf64_perform_relocation + PARAMS ((struct bfd_link_info *, reloc_howto_type *, + const Elf_Internal_Rela *, bfd_vma, + bfd *, asection *, bfd_byte *, boolean)); +static boolean mips_elf64_relocate_section + PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, + Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); +boolean mips_elf64_create_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); +boolean mips_elf64_adjust_dynamic_symbol + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *h)); +boolean mips_elf64_always_size_sections + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean mips_elf64_check_mips16_stubs + PARAMS ((struct mips_elf64_link_hash_entry *, PTR)); +boolean mips_elf64_size_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *)); +boolean mips_elf64_finish_dynamic_symbol + PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *, + Elf_Internal_Sym *)); +boolean mips_elf64_finish_dynamic_sections + PARAMS ((bfd *, struct bfd_link_info *info)); +asection *mips_elf64_gc_mark_hook + PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, + struct elf_link_hash_entry *, Elf_Internal_Sym *)); +boolean mips_elf64_gc_sweep_hook + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); +static boolean mips_elf64_create_got_section + PARAMS ((bfd *, struct bfd_link_info *)); +static boolean mips_elf64_record_global_got_symbol + PARAMS ((struct elf_link_hash_entry *, struct bfd_link_info *, + struct mips_elf64_got_info *)); +static asection *mips_elf64_create_msym_section PARAMS((bfd *)); +static void mips_elf64_allocate_dynamic_relocations + PARAMS ((bfd *, unsigned int)); +static boolean mips_elf64_stub_section_p PARAMS ((bfd *, asection *)); +boolean mips_elf64_check_relocs + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); +static boolean mips_elf64_output_extsym + PARAMS ((struct mips_elf64_link_hash_entry *, PTR)); +static void mips_elf64_swap_gptab_in + PARAMS ((bfd *, const Elf32_External_gptab *, Elf32_gptab *)); +static void mips_elf64_swap_gptab_out + PARAMS ((bfd *, const Elf32_gptab *, Elf32_External_gptab *)); +static int gptab_compare PARAMS ((const PTR, const PTR)); +boolean mips_elf64_final_link PARAMS ((bfd *, struct bfd_link_info *)); + +extern const bfd_target bfd_elf64_bigmips_vec; +extern const bfd_target bfd_elf64_littlemips_vec; + +static bfd_vma prev_reloc_addend = 0; +static bfd_size_type prev_reloc_address = 0; + +/* Whether we are trying to be compatible with IRIX6 (or little endianers + which are otherwise IRIX-ABI compliant). */ +#define SGI_COMPAT(abfd) \ + ((abfd->xvec == &bfd_elf64_bigmips_vec) \ + || (abfd->xvec == &bfd_elf64_littlemips_vec) ? true : false) /* In case we're on a 32-bit machine, construct a 64-bit "-1" value from smaller values. Start with zero, widen, *then* decrement. */ @@ -88,6 +237,14 @@ static boolean mips_elf64_write_armap /* The number of local .got entries we reserve. */ #define MIPS_RESERVED_GOTNO (2) +/* Instructions which appear in a stub. */ +#define ELF_MIPS_GP_OFFSET(abfd) 0x7ff0 +#define STUB_LW 0xdf998010 /* ld t9,0x8010(gp) */ +#define STUB_MOVE 0x03e07825 /* move t7,ra */ +#define STUB_JALR 0x0320f809 /* jal t9 */ +#define STUB_LI16 0x34180000 /* ori t8,zero,0 */ +#define MIPS_FUNCTION_STUB_SIZE (16) + /* The relocation table used for SHT_REL sections. */ #define UNUSED_RELOC(num) { num, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } @@ -112,16 +269,16 @@ static reloc_howto_type mips_elf64_howto /* 16 bit relocation. */ HOWTO (R_MIPS_16, /* type */ 0, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit relocation. */ @@ -168,8 +325,8 @@ static reloc_howto_type mips_elf64_howto bfd_elf_generic_reloc, /* special_function */ "R_MIPS_26", /* name */ true, /* partial_inplace */ - 0x3ffffff, /* src_mask */ - 0x3ffffff, /* dst_mask */ + 0x03ffffff, /* src_mask */ + 0x03ffffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of symbol value. */ @@ -180,11 +337,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_hi16_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_MIPS_HI16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of symbol value. */ @@ -195,11 +352,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_lo16_reloc, /* special_function */ + bfd_elf_generic_reloc, /* special_function */ "R_MIPS_LO16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* GP relative reference. */ @@ -210,11 +367,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_gprel16_reloc, /* special_function */ + mips_elf64_gprel16_reloc, /* special_function */ "R_MIPS_GPREL16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to literal section. */ @@ -225,11 +382,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_gprel16_reloc, /* special_function */ + mips_elf64_literal_reloc, /* special_function */ "R_MIPS_LITERAL", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to global offset table. */ @@ -240,11 +397,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_got16_reloc, /* special_function */ + mips_elf64_got16_reloc, /* special_function */ "R_MIPS_GOT16", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0xffff, /* dst_mask */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 16 bit PC relative reference. */ @@ -258,9 +415,9 @@ static reloc_howto_type mips_elf64_howto bfd_elf_generic_reloc, /* special_function */ "R_MIPS_PC16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ - false), /* pcrel_offset */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ + true), /* pcrel_offset */ /* 16 bit call through global offset table. */ /* FIXME: This is not handled correctly. */ @@ -273,9 +430,9 @@ static reloc_howto_type mips_elf64_howto complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL16", /* name */ - false, /* partial_inplace */ - 0, /* src_mask */ - 0xffff, /* dst_mask */ + true, /* partial_inplace */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit GP relative reference. */ @@ -285,8 +442,8 @@ static reloc_howto_type mips_elf64_howto 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - _bfd_mips_elf_gprel32_reloc, /* special_function */ + complain_overflow_dont, /* complain_on_overflow */ + mips_elf64_gprel32_reloc, /* special_function */ "R_MIPS_GPREL32", /* name */ true, /* partial_inplace */ 0xffffffff, /* src_mask */ @@ -313,8 +470,6 @@ static reloc_howto_type mips_elf64_howto false), /* pcrel_offset */ /* A 6 bit shift field. */ - /* FIXME: This is not handled correctly; a special function is - needed to put the most significant bit in the right place. */ HOWTO (R_MIPS_SHIFT6, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -322,7 +477,7 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + mips_elf64_shift6_reloc, /* special_function */ "R_MIPS_SHIFT6", /* name */ true, /* partial_inplace */ 0x000007c4, /* src_mask */ @@ -355,7 +510,7 @@ static reloc_howto_type mips_elf64_howto complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_DISP", /* name */ - false, /* partial_inplace */ + true, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ @@ -371,7 +526,7 @@ static reloc_howto_type mips_elf64_howto complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_PAGE", /* name */ - false, /* partial_inplace */ + true, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ @@ -387,7 +542,7 @@ static reloc_howto_type mips_elf64_howto complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_OFST", /* name */ - false, /* partial_inplace */ + true, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ @@ -403,7 +558,7 @@ static reloc_howto_type mips_elf64_howto complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_HI16", /* name */ - false, /* partial_inplace */ + true, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ @@ -419,7 +574,7 @@ static reloc_howto_type mips_elf64_howto complain_overflow_dont, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_GOT_LO16", /* name */ - false, /* partial_inplace */ + true, /* partial_inplace */ 0x0000ffff, /* src_mask */ 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ @@ -497,15 +652,14 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + mips_elf64_higher_reloc, /* special_function */ "R_MIPS_HIGHER", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Get the highest value of a 64 bit addend. */ - /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_HIGHEST, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -513,11 +667,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + mips_elf64_highest_reloc, /* special_function */ "R_MIPS_HIGHEST", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of displacement in global offset table. */ @@ -532,8 +686,8 @@ static reloc_howto_type mips_elf64_howto bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_HI16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of displacement in global offset table. */ @@ -548,13 +702,12 @@ static reloc_howto_type mips_elf64_howto bfd_elf_generic_reloc, /* special_function */ "R_MIPS_CALL_LO16", /* name */ true, /* partial_inplace */ - 0xffff, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* src_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ - /* I'm not sure what the remaining relocs are, but they are defined - on Irix 6. */ - + /* Section displacement, used by an associated event location section. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_SCN_DISP, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -587,6 +740,8 @@ static reloc_howto_type mips_elf64_howto EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE), EMPTY_HOWTO (R_MIPS_PJUMP), + /* Similiar to R_MIPS_REL32, but used for relocations in a GOT section. + It must be used for multigot GOT's (and only there). */ HOWTO (R_MIPS_RELGOT, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -606,7 +761,7 @@ static reloc_howto_type mips_elf64_howto HOWTO (R_MIPS_JALR, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ + 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -614,7 +769,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_JALR", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ + 0x00000000, /* dst_mask */ false), /* pcrel_offset */ }; @@ -640,16 +795,16 @@ static reloc_howto_type mips_elf64_howto /* 16 bit relocation. */ HOWTO (R_MIPS_16, /* type */ 0, /* rightshift */ - 1, /* size (0 = byte, 1 = short, 2 = long) */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ + complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_MIPS_16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit relocation. */ @@ -697,9 +852,10 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_26", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0x3ffffff, /* dst_mask */ + 0x03ffffff, /* dst_mask */ false), /* pcrel_offset */ + /* R_MIPS_HI16 and R_MIPS_LO16 are unsupported for 64 bit REL. */ /* High 16 bits of symbol value. */ HOWTO (R_MIPS_HI16, /* type */ 0, /* rightshift */ @@ -712,7 +868,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of symbol value. */ @@ -727,7 +883,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* GP relative reference. */ @@ -738,11 +894,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_gprel16_reloc, /* special_function */ + mips_elf64_gprel16_reloca, /* special_function */ "R_MIPS_GPREL16", /* name */ - true, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to literal section. */ @@ -753,11 +909,11 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_gprel16_reloc, /* special_function */ + mips_elf64_literal_reloc, /* special_function */ "R_MIPS_LITERAL", /* name */ - true, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Reference to global offset table. */ @@ -773,7 +929,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 16 bit PC relative reference. */ @@ -788,8 +944,8 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_PC16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ - false), /* pcrel_offset */ + 0x0000ffff, /* dst_mask */ + true), /* pcrel_offset */ /* 16 bit call through global offset table. */ /* FIXME: This is not handled correctly. */ @@ -804,7 +960,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_CALL16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* 32 bit GP relative reference. */ @@ -814,10 +970,10 @@ static reloc_howto_type mips_elf64_howto 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ - complain_overflow_bitfield, /* complain_on_overflow */ - _bfd_mips_elf_gprel32_reloc, /* special_function */ + complain_overflow_dont, /* complain_on_overflow */ + mips_elf64_gprel32_reloc, /* special_function */ "R_MIPS_GPREL32", /* name */ - true, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ @@ -842,8 +998,6 @@ static reloc_howto_type mips_elf64_howto false), /* pcrel_offset */ /* A 6 bit shift field. */ - /* FIXME: This is not handled correctly; a special function is - needed to put the most significant bit in the right place. */ HOWTO (R_MIPS_SHIFT6, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -851,7 +1005,7 @@ static reloc_howto_type mips_elf64_howto false, /* pc_relative */ 6, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ - bfd_elf_generic_reloc, /* special_function */ + mips_elf64_shift6_reloc, /* special_function */ "R_MIPS_SHIFT6", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1030,7 +1184,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_HIGHER", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Get the highest value of a 64 bit addend. */ @@ -1045,7 +1199,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_HIGHEST", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* High 16 bits of displacement in global offset table. */ @@ -1061,7 +1215,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_CALL_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ /* Low 16 bits of displacement in global offset table. */ @@ -1077,12 +1231,11 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_CALL_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0xffff, /* dst_mask */ + 0x0000ffff, /* dst_mask */ false), /* pcrel_offset */ - /* I'm not sure what the remaining relocs are, but they are defined - on Irix 6. */ - + /* Section displacement, used by an associated event location section. */ + /* FIXME: Not handled correctly. */ HOWTO (R_MIPS_SCN_DISP, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -1115,6 +1268,8 @@ static reloc_howto_type mips_elf64_howto EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE), EMPTY_HOWTO (R_MIPS_PJUMP), + /* Similiar to R_MIPS_REL32, but used for relocations in a GOT section. + It must be used for multigot GOT's (and only there). */ HOWTO (R_MIPS_RELGOT, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -1134,7 +1289,7 @@ static reloc_howto_type mips_elf64_howto HOWTO (R_MIPS_JALR, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ - 0, /* bitsize */ + 32, /* bitsize */ false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ @@ -1142,7 +1297,7 @@ static reloc_howto_type mips_elf64_howto "R_MIPS_JALR", /* name */ false, /* partial_inplace */ 0, /* src_mask */ - 0, /* dst_mask */ + 0x00000000, /* dst_mask */ false), /* pcrel_offset */ }; @@ -1209,7 +1364,7 @@ mips_elf64_swap_reloca_out (abfd, src, d H_PUT_8 (abfd, src->r_type3, dst->r_type3); H_PUT_8 (abfd, src->r_type2, dst->r_type2); H_PUT_8 (abfd, src->r_type, dst->r_type); - H_PUT_64 (abfd, src->r_addend, dst->r_addend); + H_PUT_S64 (abfd, src->r_addend, dst->r_addend); } /* Swap in a MIPS 64-bit Rel reloc. */ @@ -1227,11 +1382,11 @@ mips_elf64_be_swap_reloc_in (abfd, src, &mirel); dst[0].r_offset = mirel.r_offset; - dst[0].r_info = ELF32_R_INFO (mirel.r_sym, mirel.r_type); + dst[0].r_info = ELF64_R_INFO (mirel.r_sym, mirel.r_type); dst[1].r_offset = mirel.r_offset; - dst[1].r_info = ELF32_R_INFO (mirel.r_ssym, mirel.r_type2); + dst[1].r_info = ELF64_R_INFO (mirel.r_ssym, mirel.r_type2); dst[2].r_offset = mirel.r_offset; - dst[2].r_info = ELF32_R_INFO (STN_UNDEF, mirel.r_type3); + dst[2].r_info = ELF64_R_INFO (STN_UNDEF, mirel.r_type3); } /* Swap in a MIPS 64-bit Rela reloc. */ @@ -1249,13 +1404,13 @@ mips_elf64_be_swap_reloca_in (abfd, src, &mirela); dst[0].r_offset = mirela.r_offset; - dst[0].r_info = ELF32_R_INFO (mirela.r_sym, mirela.r_type); + dst[0].r_info = ELF64_R_INFO (mirela.r_sym, mirela.r_type); dst[0].r_addend = mirela.r_addend; dst[1].r_offset = mirela.r_offset; - dst[1].r_info = ELF32_R_INFO (mirela.r_ssym, mirela.r_type2); + dst[1].r_info = ELF64_R_INFO (mirela.r_ssym, mirela.r_type2); dst[1].r_addend = 0; dst[2].r_offset = mirela.r_offset; - dst[2].r_info = ELF32_R_INFO (STN_UNDEF, mirela.r_type3); + dst[2].r_info = ELF64_R_INFO (STN_UNDEF, mirela.r_type3); dst[2].r_addend = 0; } @@ -1269,12 +1424,15 @@ mips_elf64_be_swap_reloc_out (abfd, src, { Elf64_Mips_Internal_Rel mirel; - mirel.r_offset = src->r_offset; - mirel.r_type = ELF32_R_TYPE (src->r_info); - mirel.r_sym = ELF32_R_SYM (src->r_info); - mirel.r_type2 = R_MIPS_NONE; - mirel.r_ssym = STN_UNDEF; - mirel.r_type3 = R_MIPS_NONE; + mirel.r_offset = src[0].r_offset; + BFD_ASSERT(src[0].r_offset == src[1].r_offset); + BFD_ASSERT(src[0].r_offset == src[2].r_offset); + + mirel.r_type = ELF64_MIPS_R_TYPE (src[0].r_info); + mirel.r_sym = ELF64_R_SYM (src[0].r_info); + mirel.r_type2 = ELF64_MIPS_R_TYPE2 (src[1].r_info); + mirel.r_ssym = ELF64_MIPS_R_SSYM (src[1].r_info); + mirel.r_type3 = ELF64_MIPS_R_TYPE3 (src[2].r_info); mips_elf64_swap_reloc_out (abfd, &mirel, (Elf64_Mips_External_Rel *) dst); @@ -1290,170 +1448,854 @@ mips_elf64_be_swap_reloca_out (abfd, src { Elf64_Mips_Internal_Rela mirela; - mirela.r_offset = src->r_offset; - mirela.r_type = ELF32_R_TYPE (src->r_info); - mirela.r_addend = src->r_addend; - mirela.r_sym = ELF32_R_SYM (src->r_info); - mirela.r_type2 = R_MIPS_NONE; - mirela.r_ssym = STN_UNDEF; - mirela.r_type3 = R_MIPS_NONE; + mirela.r_offset = src[0].r_offset; + BFD_ASSERT(src[0].r_offset == src[1].r_offset); + BFD_ASSERT(src[0].r_offset == src[2].r_offset); + + mirela.r_type = ELF64_MIPS_R_TYPE (src[0].r_info); + mirela.r_sym = ELF64_R_SYM (src[0].r_info); + mirela.r_addend = src[0].r_addend; + BFD_ASSERT(src[1].r_addend == 0); + BFD_ASSERT(src[2].r_addend == 0); + + mirela.r_type2 = ELF64_MIPS_R_TYPE2 (src[1].r_info); + mirela.r_ssym = ELF64_MIPS_R_SSYM (src[1].r_info); + mirela.r_type3 = ELF64_MIPS_R_TYPE3 (src[2].r_info); mips_elf64_swap_reloca_out (abfd, &mirela, (Elf64_Mips_External_Rela *) dst); } -/* A mapping from BFD reloc types to MIPS ELF reloc types. */ +/* Calculate the %high function. */ -struct elf_reloc_map +static bfd_vma +mips_elf64_high (value) + bfd_vma value; { - bfd_reloc_code_real_type bfd_reloc_val; - enum elf_mips_reloc_type elf_reloc_val; -}; + return ((value + (bfd_vma) 0x8000) >> 16) & 0xffff; +} + +/* Calculate the %higher function. */ -static const struct elf_reloc_map mips_reloc_map[] = +static bfd_vma +mips_elf64_higher (value) + bfd_vma value; { - { BFD_RELOC_NONE, R_MIPS_NONE, }, - { BFD_RELOC_16, R_MIPS_16 }, - { BFD_RELOC_32, R_MIPS_32 }, - { BFD_RELOC_64, R_MIPS_64 }, - { BFD_RELOC_CTOR, R_MIPS_64 }, - { BFD_RELOC_32_PCREL, R_MIPS_REL32 }, - { BFD_RELOC_MIPS_JMP, R_MIPS_26 }, - { BFD_RELOC_HI16_S, R_MIPS_HI16 }, - { BFD_RELOC_LO16, R_MIPS_LO16 }, - { BFD_RELOC_MIPS_GPREL, R_MIPS_GPREL16 }, - { BFD_RELOC_MIPS_LITERAL, R_MIPS_LITERAL }, - { BFD_RELOC_MIPS_GOT16, R_MIPS_GOT16 }, - { BFD_RELOC_16_PCREL, R_MIPS_PC16 }, - { BFD_RELOC_MIPS_CALL16, R_MIPS_CALL16 }, - { BFD_RELOC_MIPS_GPREL32, R_MIPS_GPREL32 }, - { BFD_RELOC_MIPS_GOT_HI16, R_MIPS_GOT_HI16 }, - { BFD_RELOC_MIPS_GOT_LO16, R_MIPS_GOT_LO16 }, - { BFD_RELOC_MIPS_CALL_HI16, R_MIPS_CALL_HI16 }, - { BFD_RELOC_MIPS_CALL_LO16, R_MIPS_CALL_LO16 }, - { BFD_RELOC_MIPS_SUB, R_MIPS_SUB }, - { BFD_RELOC_MIPS_GOT_PAGE, R_MIPS_GOT_PAGE }, - { BFD_RELOC_MIPS_GOT_OFST, R_MIPS_GOT_OFST }, - { BFD_RELOC_MIPS_GOT_DISP, R_MIPS_GOT_DISP } -}; + return ((value + (bfd_vma) 0x80008000) >> 32) & 0xffff; +} -/* Given a BFD reloc type, return a howto structure. */ +/* Calculate the %highest function. */ -static reloc_howto_type * -mips_elf64_reloc_type_lookup (abfd, code) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_reloc_code_real_type code; +static bfd_vma +mips_elf64_highest (value) + bfd_vma value; { - unsigned int i; + return ((value + (bfd_vma) 0x800080008000) >> 48) & 0xffff; +} + +/* Do a R_MIPS_HI16 relocation. */ - for (i = 0; i < sizeof (mips_reloc_map) / sizeof (struct elf_reloc_map); i++) +bfd_reloc_status_type +mips_elf64_hi16_reloc (abfd, + reloc_entry, + symbol, + data, + input_section, + output_bfd, + error_message) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *reloc_entry; + asymbol *symbol; + PTR data ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + /* If we're relocating, and this is an external symbol, we don't + want to change anything. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) { - if (mips_reloc_map[i].bfd_reloc_val == code) - { - int v; + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } - v = (int) mips_reloc_map[i].elf_reloc_val; - return &mips_elf64_howto_table_rel[v]; - } + if (((reloc_entry->addend & 0xffff) + 0x8000) & ~0xffff) + reloc_entry->addend += 0x8000; + + return bfd_reloc_continue; +} + +/* Do a R_MIPS_HIGHER relocation. */ + +bfd_reloc_status_type +mips_elf64_higher_reloc (abfd, + reloc_entry, + symbol, + data, + input_section, + output_bfd, + error_message) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *reloc_entry; + asymbol *symbol; + PTR data ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + /* If we're relocating, and this is an external symbol, we don't + want to change anything. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; } - return NULL; + if (((reloc_entry->addend & 0xffffffff) + 0x80008000) + & ~0xffffffff) + reloc_entry->addend += 0x80008000; + + return bfd_reloc_continue; } -/* Since each entry in an SHT_REL or SHT_RELA section can represent up - to three relocs, we must tell the user to allocate more space. */ +/* Do a R_MIPS_HIGHEST relocation. */ -static long -mips_elf64_get_reloc_upper_bound (abfd, sec) +bfd_reloc_status_type +mips_elf64_highest_reloc (abfd, + reloc_entry, + symbol, + data, + input_section, + output_bfd, + error_message) bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; + arelent *reloc_entry; + asymbol *symbol; + PTR data ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; { - return (sec->reloc_count * 3 + 1) * sizeof (arelent *); + /* 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 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (((reloc_entry->addend & 0xffffffffffff) + 0x800080008000) + & ~0xffffffffffff) + reloc_entry->addend += 0x800080008000; + + return bfd_reloc_continue; } -/* Read the relocations from one reloc section. */ +/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset + table used for PIC code. If the symbol is an external symbol, the + instruction is modified to contain the offset of the appropriate + entry in the global offset table. If the symbol is a section + symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit + addends are combined to form the real addend against the section + symbol; the GOT16 is modified to contain the offset of an entry in + the global offset table, and the LO16 is modified to offset it + appropriately. Thus an offset larger than 16 bits requires a + modified value in the global offset table. + + This implementation suffices for the assembler, but the linker does + not yet know how to create global offset tables. */ + +bfd_reloc_status_type +mips_elf64_got16_reloc (abfd, + reloc_entry, + symbol, + data, + input_section, + output_bfd, + error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + /* If we're relocating, and this an external symbol, we don't want + to change anything. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && reloc_entry->addend == 0) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + /* If we're relocating, and this is a local symbol, we can handle it + just like HI16. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) != 0) + return mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); + + abort (); +} + +/* Set the GP value for OUTPUT_BFD. Returns false if this is a + dangerous relocation. */ static boolean -mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr) - bfd *abfd; - asection *asect; - asymbol **symbols; - const Elf_Internal_Shdr *rel_hdr; +mips_elf64_assign_gp (output_bfd, pgp) + bfd *output_bfd; + bfd_vma *pgp; { - PTR allocated = NULL; - bfd_byte *native_relocs; - arelent *relents; - arelent *relent; unsigned int count; + asymbol **sym; unsigned int i; - int entsize; - reloc_howto_type *howto_table; - - allocated = (PTR) bfd_malloc (rel_hdr->sh_size); - if (allocated == NULL) - return false; - if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (allocated, rel_hdr->sh_size, abfd) != rel_hdr->sh_size)) - goto error_return; + /* If we've already figured out what GP will be, just return it. */ + *pgp = _bfd_get_gp_value (output_bfd); + if (*pgp) + return true; - native_relocs = (bfd_byte *) allocated; + count = bfd_get_symcount (output_bfd); + sym = bfd_get_outsymbols (output_bfd); - relents = asect->relocation + asect->reloc_count; + /* The linker script will have created a symbol named `_gp' with the + appropriate value. */ + if (sym == (asymbol **) NULL) + i = count; + else + { + for (i = 0; i < count; i++, sym++) + { + register CONST char *name; - entsize = rel_hdr->sh_entsize; - BFD_ASSERT (entsize == sizeof (Elf64_Mips_External_Rel) - || entsize == sizeof (Elf64_Mips_External_Rela)); + name = bfd_asymbol_name (*sym); + if (*name == '_' && strcmp (name, "_gp") == 0) + { + *pgp = bfd_asymbol_value (*sym); + _bfd_set_gp_value (output_bfd, *pgp); + break; + } + } + } - count = rel_hdr->sh_size / entsize; + if (i >= count) + { + /* Only get the error once. */ + *pgp = 4; + _bfd_set_gp_value (output_bfd, *pgp); + return false; + } - if (entsize == sizeof (Elf64_Mips_External_Rel)) - howto_table = mips_elf64_howto_table_rel; - else - howto_table = mips_elf64_howto_table_rela; + return true; +} - relent = relents; - for (i = 0; i < count; i++, native_relocs += entsize) +/* We have to figure out the gp value, so that we can adjust the + symbol value correctly. We look up the symbol _gp in the output + BFD. If we can't find it, we're stuck. We cache it in the ELF + target data. We don't need to adjust the symbol value for an + external symbol if we are producing relocateable output. */ + +static bfd_reloc_status_type +mips_elf64_final_gp (output_bfd, symbol, relocateable, error_message, pgp) + bfd *output_bfd; + asymbol *symbol; + boolean relocateable; + char **error_message; + bfd_vma *pgp; +{ + if (bfd_is_und_section (symbol->section) + && ! relocateable) { - Elf64_Mips_Internal_Rela rela; - boolean used_sym, used_ssym; - int ir; + *pgp = 0; + return bfd_reloc_undefined; + } - if (entsize == sizeof (Elf64_Mips_External_Rela)) - mips_elf64_swap_reloca_in (abfd, - (Elf64_Mips_External_Rela *) native_relocs, - &rela); - else + *pgp = _bfd_get_gp_value (output_bfd); + if (*pgp == 0 + && (! relocateable + || (symbol->flags & BSF_SECTION_SYM) != 0)) + { + if (relocateable) { - Elf64_Mips_Internal_Rel rel; - - mips_elf64_swap_reloc_in (abfd, - (Elf64_Mips_External_Rel *) native_relocs, - &rel); - rela.r_offset = rel.r_offset; - rela.r_sym = rel.r_sym; - rela.r_ssym = rel.r_ssym; - rela.r_type3 = rel.r_type3; - rela.r_type2 = rel.r_type2; - rela.r_type = rel.r_type; - rela.r_addend = 0; + /* Make up a value. */ + *pgp = symbol->section->output_section->vma + 0x4000; + _bfd_set_gp_value (output_bfd, *pgp); + } + else if (!mips_elf64_assign_gp (output_bfd, pgp)) + { + *error_message = + (char *) _("GP relative relocation when _gp not defined"); + return bfd_reloc_dangerous; } + } - /* Each entry represents up to three actual relocations. */ + return bfd_reloc_ok; +} - used_sym = false; - used_ssym = false; - for (ir = 0; ir < 3; ir++) - { - enum elf_mips_reloc_type type; +/* Do a R_MIPS_GPREL16 relocation. This is a 16 bit value which must + become the offset from the gp register. */ - switch (ir) - { - default: - abort (); - case 0: - type = (enum elf_mips_reloc_type) rela.r_type; - break; +bfd_reloc_status_type +mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + boolean relocateable; + bfd_reloc_status_type ret; + bfd_vma gp; + + /* If we're relocating, and this is an external symbol with no + addend, we don't want to change anything. We will only have an + addend if this is a newly created reloc, not read from an ELF + file. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && reloc_entry->addend == 0) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (output_bfd != (bfd *) NULL) + relocateable = true; + else + { + relocateable = false; + output_bfd = symbol->section->output_section->owner; + } + + ret = mips_elf64_final_gp (output_bfd, symbol, relocateable, error_message, + &gp); + if (ret != bfd_reloc_ok) + return ret; + + return gprel16_with_gp (abfd, symbol, reloc_entry, input_section, + relocateable, data, gp); +} + +static bfd_reloc_status_type +gprel16_with_gp (abfd, symbol, reloc_entry, input_section, relocateable, data, + gp) + bfd *abfd; + asymbol *symbol; + arelent *reloc_entry; + asection *input_section; + boolean relocateable; + PTR data; + bfd_vma gp; +{ + bfd_vma relocation; + unsigned long insn; + unsigned long val; + + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value; + + relocation += symbol->section->output_section->vma; + relocation += symbol->section->output_offset; + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); + + /* Set val to the offset into the section or symbol. */ + if (reloc_entry->howto->src_mask == 0) + { + /* This case occurs with the 64-bit MIPS ELF ABI. */ + val = reloc_entry->addend; + } + else + { + val = ((insn & 0xffff) + reloc_entry->addend) & 0xffff; + if (val & 0x8000) + val -= 0x10000; + } + + /* Adjust val for the final section location and GP value. If we + are producing relocateable output, we don't want to do this for + an external symbol. */ + if (! relocateable + || (symbol->flags & BSF_SECTION_SYM) != 0) + val += relocation - gp; + + insn = (insn & ~0xffff) | (val & 0xffff); + bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address); + + if (relocateable) + reloc_entry->address += input_section->output_offset; + + else if ((long) val >= 0x8000 || (long) val < -0x8000) + return bfd_reloc_overflow; + + return bfd_reloc_ok; +} + +/* Do a R_MIPS_GPREL16 RELA relocation. */ + +bfd_reloc_status_type +mips_elf64_gprel16_reloca (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + boolean relocateable; + bfd_vma gp; + + /* This works only for NewABI. */ + BFD_ASSERT (reloc_entry->howto->src_mask == 0); + + /* If we're relocating, and this is an external symbol with no + addend, we don't want to change anything. We will only have an + addend if this is a newly created reloc, not read from an ELF + file. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && reloc_entry->addend == 0) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + if (output_bfd != (bfd *) NULL) + relocateable = true; + else + { + relocateable = false; + output_bfd = symbol->section->output_section->owner; + } + + if (prev_reloc_address != reloc_entry->address) + prev_reloc_address = reloc_entry->address; + else + { + mips_elf64_final_gp (output_bfd, symbol, relocateable, error_message, + &gp); + prev_reloc_addend = reloc_entry->addend + reloc_entry->address - gp; + if (symbol->flags & BSF_LOCAL) + prev_reloc_addend += _bfd_get_gp_value (abfd); +/*fprintf(stderr, "Addend: %lx, Next Addend: %lx\n", reloc_entry->addend, prev_reloc_addend);*/ + } + + return bfd_reloc_ok; +} + +/* Do a R_MIPS_LITERAL relocation. */ + +bfd_reloc_status_type +mips_elf64_literal_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + /* 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 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + /* FIXME: The entries in the .lit8 and .lit4 sections should be merged. + Currently we simply call mips_elf64_gprel16_reloc. */ + return mips_elf64_gprel16_reloc (abfd, reloc_entry, symbol, data, + input_section, output_bfd, error_message); +} + +/* Do a R_MIPS_GPREL32 relocation. Is this 32 bit value the offset + from the gp register? XXX */ + +bfd_reloc_status_type +mips_elf64_gprel32_reloc (abfd, + reloc_entry, + symbol, + data, + input_section, + output_bfd, + error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol; + PTR data; + asection *input_section; + bfd *output_bfd; + char **error_message; +{ + boolean relocateable; + bfd_reloc_status_type ret; + bfd_vma gp; + bfd_vma relocation; + unsigned long val; + + /* If we're relocating, and this is an external symbol with no + addend, we don't want to change anything. We will only have an + addend if this is a newly created reloc, not read from an ELF + file. */ + if (output_bfd != (bfd *) NULL + && (symbol->flags & BSF_SECTION_SYM) == 0 + && reloc_entry->addend == 0) + { + *error_message = (char *) + _("32bits gp relative relocation occurs for an external symbol"); + return bfd_reloc_outofrange; + } + + if (output_bfd != (bfd *) NULL) + { + relocateable = true; + gp = _bfd_get_gp_value (output_bfd); + } + else + { + relocateable = false; + output_bfd = symbol->section->output_section->owner; + + ret = mips_elf64_final_gp (output_bfd, symbol, relocateable, + error_message, &gp); + if (ret != bfd_reloc_ok) + return ret; + } + + if (bfd_is_com_section (symbol->section)) + relocation = 0; + else + relocation = symbol->value; + + relocation += symbol->section->output_section->vma; + relocation += symbol->section->output_offset; + + if (reloc_entry->address > input_section->_cooked_size) + return bfd_reloc_outofrange; + + if (reloc_entry->howto->src_mask == 0) + { + /* This case arises with the 64-bit MIPS ELF ABI. */ + val = 0; + } + else + val = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address); + + /* Set val to the offset into the section or symbol. */ + val += reloc_entry->addend; + + /* Adjust val for the final section location and GP value. If we + are producing relocateable output, we don't want to do this for + an external symbol. */ + if (! relocateable + || (symbol->flags & BSF_SECTION_SYM) != 0) + val += relocation - gp; + + bfd_put_32 (abfd, val, (bfd_byte *) data + reloc_entry->address); + + if (relocateable) + reloc_entry->address += input_section->output_offset; + + return bfd_reloc_ok; +} + +/* Do a R_MIPS_SHIFT6 relocation. The MSB of the shift is stored at bit 2, + the rest is at bits 6-10. The bitpos alredy got right by the howto. */ + +bfd_reloc_status_type +mips_elf64_shift6_reloc (abfd, reloc_entry, symbol, data, input_section, + output_bfd, error_message) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *reloc_entry; + asymbol *symbol; + PTR data ATTRIBUTE_UNUSED; + asection *input_section; + bfd *output_bfd; + char **error_message ATTRIBUTE_UNUSED; +{ + /* 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 + && (! reloc_entry->howto->partial_inplace + || reloc_entry->addend == 0)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + reloc_entry->addend = (reloc_entry->addend & 0x00007c0) + | (reloc_entry->addend & 0x00000800) >> 9; + + return bfd_reloc_continue; +} + +static int +mips_elf64_additional_program_headers (abfd) + bfd *abfd; +{ + int ret = 0; + + /* See if we need a PT_MIPS_OPTIONS segment. */ + if (bfd_get_section_by_name (abfd, ".MIPS.options")) + ++ret; + + return ret; +} + +/* Given a BFD reloc type, return a howto structure. */ + +static reloc_howto_type * +mips_elf64_reloc_type_lookup (abfd, code) + bfd *abfd ATTRIBUTE_UNUSED; + bfd_reloc_code_real_type code; +{ + /* FIXME: We default to RELA here instead of choosing the right + relocation variant. */ + reloc_howto_type *howto_table = mips_elf64_howto_table_rela; + + switch (code) + { + case BFD_RELOC_NONE: + return &howto_table[R_MIPS_NONE]; + case BFD_RELOC_16: + return &howto_table[R_MIPS_16]; + case BFD_RELOC_32: + return &howto_table[R_MIPS_32]; + case BFD_RELOC_64: + case BFD_RELOC_CTOR: + /* We need to handle these specially. 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 &howto_table[R_MIPS_32]; + else + return &howto_table[R_MIPS_64]; + + case BFD_RELOC_16_PCREL: + return &howto_table[R_MIPS_PC16]; + case BFD_RELOC_HI16_S: + return &howto_table[R_MIPS_HI16]; + case BFD_RELOC_LO16: + return &howto_table[R_MIPS_LO16]; + case BFD_RELOC_GPREL16: + return &howto_table[R_MIPS_GPREL16]; + case BFD_RELOC_GPREL32: + return &howto_table[R_MIPS_GPREL32]; + case BFD_RELOC_MIPS_JMP: + return &howto_table[R_MIPS_26]; + case BFD_RELOC_MIPS_LITERAL: + return &howto_table[R_MIPS_LITERAL]; + case BFD_RELOC_MIPS_GOT16: + return &howto_table[R_MIPS_GOT16]; + case BFD_RELOC_MIPS_CALL16: + return &howto_table[R_MIPS_CALL16]; + case BFD_RELOC_MIPS_SHIFT5: + return &howto_table[R_MIPS_SHIFT5]; + case BFD_RELOC_MIPS_SHIFT6: + return &howto_table[R_MIPS_SHIFT6]; + case BFD_RELOC_MIPS_GOT_DISP: + return &howto_table[R_MIPS_GOT_DISP]; + case BFD_RELOC_MIPS_GOT_PAGE: + return &howto_table[R_MIPS_GOT_PAGE]; + case BFD_RELOC_MIPS_GOT_OFST: + return &howto_table[R_MIPS_GOT_OFST]; + case BFD_RELOC_MIPS_GOT_HI16: + return &howto_table[R_MIPS_GOT_HI16]; + case BFD_RELOC_MIPS_GOT_LO16: + return &howto_table[R_MIPS_GOT_LO16]; + case BFD_RELOC_MIPS_SUB: + return &howto_table[R_MIPS_SUB]; + case BFD_RELOC_MIPS_INSERT_A: + return &howto_table[R_MIPS_INSERT_A]; + case BFD_RELOC_MIPS_INSERT_B: + return &howto_table[R_MIPS_INSERT_B]; + case BFD_RELOC_MIPS_DELETE: + return &howto_table[R_MIPS_DELETE]; + case BFD_RELOC_MIPS_HIGHEST: + return &howto_table[R_MIPS_HIGHEST]; + case BFD_RELOC_MIPS_HIGHER: + return &howto_table[R_MIPS_HIGHER]; + case BFD_RELOC_MIPS_CALL_HI16: + return &howto_table[R_MIPS_CALL_HI16]; + case BFD_RELOC_MIPS_CALL_LO16: + return &howto_table[R_MIPS_CALL_LO16]; + case BFD_RELOC_MIPS_SCN_DISP: + return &howto_table[R_MIPS_SCN_DISP]; + case BFD_RELOC_MIPS_REL16: + return &howto_table[R_MIPS_REL16]; + /* Use of R_MIPS_ADD_IMMEDIATE and R_MIPS_PJUMP is deprecated. */ + case BFD_RELOC_MIPS_RELGOT: + return &howto_table[R_MIPS_RELGOT]; + case BFD_RELOC_MIPS_JALR: + return &howto_table[R_MIPS_JALR]; +/* + case BFD_RELOC_MIPS16_JMP: + return &elf_mips16_jump_howto; + case BFD_RELOC_MIPS16_GPREL: + return &elf_mips16_gprel_howto; + case BFD_RELOC_VTABLE_INHERIT: + return &elf_mips_gnu_vtinherit_howto; + case BFD_RELOC_VTABLE_ENTRY: + return &elf_mips_gnu_vtentry_howto; + case BFD_RELOC_PCREL_HI16_S: + return &elf_mips_gnu_rel_hi16; + case BFD_RELOC_PCREL_LO16: + return &elf_mips_gnu_rel_lo16; + case BFD_RELOC_16_PCREL_S2: + return &elf_mips_gnu_rel16_s2; + case BFD_RELOC_64_PCREL: + return &elf_mips_gnu_pcrel64; + case BFD_RELOC_32_PCREL: + return &elf_mips_gnu_pcrel32; +*/ + default: + bfd_set_error (bfd_error_bad_value); + return NULL; + } +} + +/* Prevent relocation handling by bfd for MIPS ELF64. */ + +static void +mips_elf64_info_to_howto_rel (abfd, cache_ptr, dst) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *cache_ptr ATTRIBUTE_UNUSED; + Elf64_Internal_Rel *dst ATTRIBUTE_UNUSED; +{ + BFD_ASSERT (0); +} + +static void +mips_elf64_info_to_howto_rela (abfd, cache_ptr, dst) + bfd *abfd ATTRIBUTE_UNUSED; + arelent *cache_ptr ATTRIBUTE_UNUSED; + Elf64_Internal_Rela *dst ATTRIBUTE_UNUSED; +{ + BFD_ASSERT (0); +} + +/* Since each entry in an SHT_REL or SHT_RELA section can represent up + to three relocs, we must tell the user to allocate more space. */ + +static long +mips_elf64_get_reloc_upper_bound (abfd, sec) + bfd *abfd ATTRIBUTE_UNUSED; + asection *sec; +{ + return (sec->reloc_count * 3 + 1) * sizeof (arelent *); +} + +/* Read the relocations from one reloc section. */ + +static boolean +mips_elf64_slurp_one_reloc_table (abfd, asect, symbols, rel_hdr) + bfd *abfd; + asection *asect; + asymbol **symbols; + const Elf_Internal_Shdr *rel_hdr; +{ + PTR allocated = NULL; + bfd_byte *native_relocs; + arelent *relents; + arelent *relent; + bfd_vma count; + bfd_vma i; + int entsize; + reloc_howto_type *howto_table; + + allocated = (PTR) bfd_malloc (rel_hdr->sh_size); + if (allocated == NULL) + return false; + + if (bfd_seek (abfd, rel_hdr->sh_offset, SEEK_SET) != 0 + || (bfd_bread (allocated, rel_hdr->sh_size, abfd) != rel_hdr->sh_size)) + goto error_return; + + native_relocs = (bfd_byte *) allocated; + + relents = asect->relocation + asect->reloc_count; + + entsize = rel_hdr->sh_entsize; + BFD_ASSERT (entsize == sizeof (Elf64_Mips_External_Rel) + || entsize == sizeof (Elf64_Mips_External_Rela)); + + count = rel_hdr->sh_size / entsize; + + if (entsize == sizeof (Elf64_Mips_External_Rel)) + howto_table = mips_elf64_howto_table_rel; + else + howto_table = mips_elf64_howto_table_rela; + + relent = relents; + for (i = 0; i < count; i++, native_relocs += entsize) + { + Elf64_Mips_Internal_Rela rela; + boolean used_sym, used_ssym; + int ir; + + if (entsize == sizeof (Elf64_Mips_External_Rela)) + mips_elf64_swap_reloca_in (abfd, + (Elf64_Mips_External_Rela *) native_relocs, + &rela); + else + { + Elf64_Mips_Internal_Rel rel; + + mips_elf64_swap_reloc_in (abfd, + (Elf64_Mips_External_Rel *) native_relocs, + &rel); + rela.r_offset = rel.r_offset; + rela.r_sym = rel.r_sym; + rela.r_ssym = rel.r_ssym; + rela.r_type3 = rel.r_type3; + rela.r_type2 = rel.r_type2; + rela.r_type = rel.r_type; + rela.r_addend = 0; + } + + /* Each entry represents up to three actual relocations. */ + + used_sym = false; + used_ssym = false; + for (ir = 0; ir < 3; ir++) + { + enum elf_mips_reloc_type type; + + switch (ir) + { + default: + abort (); + case 0: + type = (enum elf_mips_reloc_type) rela.r_type; + break; case 1: type = (enum elf_mips_reloc_type) rela.r_type2; break; @@ -1628,12 +2470,9 @@ mips_elf64_write_relocs (abfd, sec, data PTR data; { boolean *failedp = (boolean *) data; - unsigned int count; - Elf_Internal_Shdr *rela_hdr; - Elf64_Mips_External_Rela *ext_rela; + int count; + Elf_Internal_Shdr *rel_hdr; unsigned int idx; - asymbol *last_sym = 0; - int last_sym_idx = 0; /* If we have already failed, don't do anything. */ if (*failedp) @@ -1678,21 +2517,45 @@ mips_elf64_write_relocs (abfd, sec, data } } - rela_hdr = &elf_section_data (sec)->rel_hdr; + rel_hdr = &elf_section_data (sec)->rel_hdr; - rela_hdr->sh_size = rela_hdr->sh_entsize * count; - rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size); - if (rela_hdr->contents == NULL) + /* Do the actual relocation. */ + + if (rel_hdr->sh_entsize == sizeof(Elf64_Mips_External_Rel)) + mips_elf64_write_rel (abfd, sec, rel_hdr, &count, data); + else if (rel_hdr->sh_entsize == sizeof(Elf64_Mips_External_Rela)) + mips_elf64_write_rela (abfd, sec, rel_hdr, &count, data); + else + BFD_ASSERT (0); +} + +static void +mips_elf64_write_rel (abfd, sec, rel_hdr, count, data) + bfd *abfd; + asection *sec; + Elf_Internal_Shdr *rel_hdr; + int *count; + PTR data; +{ + boolean *failedp = (boolean *) data; + Elf64_Mips_External_Rel *ext_rel; + unsigned int idx; + asymbol *last_sym = 0; + int last_sym_idx = 0; + + rel_hdr->sh_size = (bfd_vma)(rel_hdr->sh_entsize * *count); + rel_hdr->contents = (PTR) bfd_alloc (abfd, rel_hdr->sh_size); + if (rel_hdr->contents == NULL) { *failedp = true; return; } - ext_rela = (Elf64_Mips_External_Rela *) rela_hdr->contents; - for (idx = 0; idx < sec->reloc_count; idx++, ext_rela++) + ext_rel = (Elf64_Mips_External_Rel *) rel_hdr->contents; + for (idx = 0; idx < sec->reloc_count; idx++, ext_rel++) { arelent *ptr; - Elf64_Mips_Internal_Rela int_rela; + Elf64_Mips_Internal_Rel int_rel; asymbol *sym; int n; unsigned int i; @@ -1703,9 +2566,9 @@ mips_elf64_write_relocs (abfd, sec, data file, and absolute for an executable file or shared library. The address of a BFD reloc is always section relative. */ if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0) - int_rela.r_offset = ptr->address; + int_rel.r_offset = ptr->address; else - int_rela.r_offset = ptr->address + sec->vma; + int_rel.r_offset = ptr->address + sec->vma; sym = *ptr->sym_ptr_ptr; if (sym == last_sym) @@ -1722,11 +2585,8 @@ mips_elf64_write_relocs (abfd, sec, data last_sym_idx = n; } - int_rela.r_sym = n; - - int_rela.r_addend = ptr->addend; - - int_rela.r_ssym = RSS_UNDEF; + int_rel.r_sym = n; + int_rel.r_ssym = RSS_UNDEF; if ((*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec && ! _bfd_elf_validate_reloc (abfd, ptr)) @@ -1735,9 +2595,9 @@ mips_elf64_write_relocs (abfd, sec, data return; } - int_rela.r_type = ptr->howto->type; - int_rela.r_type2 = (int) R_MIPS_NONE; - int_rela.r_type3 = (int) R_MIPS_NONE; + int_rel.r_type = ptr->howto->type; + int_rel.r_type2 = (int) R_MIPS_NONE; + int_rel.r_type3 = (int) R_MIPS_NONE; for (i = 0; i < 2; i++) { @@ -1754,226 +2614,4275 @@ mips_elf64_write_relocs (abfd, sec, data /* We can merge the reloc at IDX + 1 with the reloc at IDX. */ if (i == 0) - int_rela.r_type2 = r->howto->type; + int_rel.r_type2 = r->howto->type; else - int_rela.r_type3 = r->howto->type; + int_rel.r_type3 = r->howto->type; ++idx; } - mips_elf64_swap_reloca_out (abfd, &int_rela, ext_rela); + mips_elf64_swap_reloc_out (abfd, &int_rel, ext_rel); + } + + BFD_ASSERT (ext_rel - (Elf64_Mips_External_Rel *) rel_hdr->contents + == *count); +} + +static void +mips_elf64_write_rela (abfd, sec, rela_hdr, count, data) + bfd *abfd; + asection *sec; + Elf_Internal_Shdr *rela_hdr; + int *count; + PTR data; +{ + boolean *failedp = (boolean *) data; + Elf64_Mips_External_Rela *ext_rela; + unsigned int idx; + asymbol *last_sym = 0; + int last_sym_idx = 0; + + rela_hdr->sh_size = (bfd_vma)(rela_hdr->sh_entsize * *count); + rela_hdr->contents = (PTR) bfd_alloc (abfd, rela_hdr->sh_size); + if (rela_hdr->contents == NULL) + { + *failedp = true; + return; + } + + ext_rela = (Elf64_Mips_External_Rela *) rela_hdr->contents; + for (idx = 0; idx < sec->reloc_count; idx++, ext_rela++) + { + arelent *ptr; + Elf64_Mips_Internal_Rela int_rela; + asymbol *sym; + int n; + unsigned int i; + + ptr = sec->orelocation[idx]; + + /* The address of an ELF reloc is section relative for an object + file, and absolute for an executable file or shared library. + The address of a BFD reloc is always section relative. */ + if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0) + int_rela.r_offset = ptr->address; + else + int_rela.r_offset = ptr->address + sec->vma; + + sym = *ptr->sym_ptr_ptr; + if (sym == last_sym) + n = last_sym_idx; + else + { + last_sym = sym; + n = _bfd_elf_symbol_from_bfd_symbol (abfd, &sym); + if (n < 0) + { + *failedp = true; + return; + } + last_sym_idx = n; + } + + int_rela.r_sym = n; + int_rela.r_addend = ptr->addend; + int_rela.r_ssym = RSS_UNDEF; + + if ((*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec + && ! _bfd_elf_validate_reloc (abfd, ptr)) + { + *failedp = true; + return; + } + + int_rela.r_type = ptr->howto->type; + int_rela.r_type2 = (int) R_MIPS_NONE; + int_rela.r_type3 = (int) R_MIPS_NONE; + + for (i = 0; i < 2; i++) + { + arelent *r; + + if (idx + 1 >= sec->reloc_count) + break; + r = sec->orelocation[idx + 1]; + if (r->address != ptr->address + || ! bfd_is_abs_section ((*r->sym_ptr_ptr)->section) + || (*r->sym_ptr_ptr)->value != 0) + break; + + /* We can merge the reloc at IDX + 1 with the reloc at IDX. */ + + if (i == 0) + int_rela.r_type2 = r->howto->type; + else + int_rela.r_type3 = r->howto->type; + + ++idx; + } + + mips_elf64_swap_reloca_out (abfd, &int_rela, ext_rela); } BFD_ASSERT (ext_rela - (Elf64_Mips_External_Rela *) rela_hdr->contents - == (int) count); + == *count); +} + +/* This structure is used to hold .got information when linking. It + is stored in the tdata field of the bfd_elf_section_data structure. */ + +struct mips_elf64_got_info +{ + /* The global symbol in the GOT with the lowest index in the dynamic + symbol table. */ + struct elf_link_hash_entry *global_gotsym; + /* The number of global .got entries. */ + unsigned int global_gotno; + /* The number of local .got entries. */ + unsigned int local_gotno; + /* The number of local .got entries we have used. */ + unsigned int assigned_gotno; +}; + +/* The MIPS ELF64 linker needs additional information for each symbol in + the global hash table. */ + +struct mips_elf64_link_hash_entry +{ + struct elf_link_hash_entry root; + + /* External symbol information. */ + EXTR esym; + + /* Number of R_MIPS_32, R_MIPS_REL32, or R_MIPS_64 relocs against + this symbol. */ + unsigned int possibly_dynamic_relocs; + + /* If the R_MIPS_32, R_MIPS_REL32, or R_MIPS_64 reloc is against + a readonly section. */ + boolean readonly_reloc; + + /* The index of the first dynamic relocation (in the .rel.dyn + section) against this symbol. */ + unsigned int min_dyn_reloc_index; + + /* We must not create a stub for a symbol that has relocations + related to taking the function's address, i.e. any but + R_MIPS_CALL*16 ones -- see "MIPS ABI Supplement, 3rd Edition", + p. 4-20. */ + boolean no_fn_stub; + + /* If there is a stub that 32 bit functions should use to call this + 16 bit function, this points to the section containing the stub. */ + asection *fn_stub; + + /* Whether we need the fn_stub; this is set if this symbol appears + in any relocs other than a 16 bit call. */ + boolean need_fn_stub; + + /* If there is a stub that 16 bit functions should use to call this + 32 bit function, this points to the section containing the stub. */ + asection *call_stub; + + /* 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; +}; + + /* The mips16 compiler uses a couple of special sections to handle + floating point arguments. + + Section names that look like .mips16.fn.FNNAME contain stubs that + copy floating point arguments from the fp regs to the gp regs and + then jump to FNNAME. If any 32 bit function calls FNNAME, the + call should be redirected to the stub instead. If no 32 bit + function calls FNNAME, the stub should be discarded. We need to + consider any reference to the function, not just a call, because + if the address of the function is taken we will need the stub, + since the address might be passed to a 32 bit function. + + Section names that look like .mips16.call.FNNAME contain stubs + that copy floating point arguments from the gp regs to the fp + regs and then jump to FNNAME. If FNNAME is a 32 bit function, + then any 16 bit function that calls FNNAME should be redirected + to the stub instead. If FNNAME is not a 32 bit function, the + stub should be discarded. + + .mips16.call.fp.FNNAME sections are similar, but contain stubs + which call FNNAME and then copy the return value from the fp regs + to the gp regs. These stubs store the return value in $18 while + calling FNNAME; any function which might call one of these stubs + must arrange to save $18 around the call. (This case is not + needed for 32 bit functions that call 16 bit functions, because + 16 bit functions always return floating point values in both + $f0/$f1 and $2/$3.) + + Note that in all cases FNNAME might be defined statically. + Therefore, FNNAME is not used literally. Instead, the relocation + information will indicate which symbol the section is for. + + We record any stubs that we find in the symbol table. */ + +#define FN_STUB ".mips16.fn." +#define CALL_STUB ".mips16.call." +#define CALL_FP_STUB ".mips16.call.fp." + +/* MIPS ELF64 linker hash table. */ + +struct mips_elf64_link_hash_table +{ + struct elf_link_hash_table root; + /* This is set if we see any mips16 stub sections. */ + boolean mips16_stubs_seen; +}; + +/* Look up an entry in a MIPS ELF64 linker hash table. */ + +#define mips_elf64_link_hash_lookup(table, string, create, copy, follow) \ + ((struct mips_elf64_link_hash_entry *) \ + elf_link_hash_lookup (&(table)->root, (string), (create), \ + (copy), (follow))) + +/* Traverse a MIPS ELF linker hash table. */ + +#define mips_elf64_link_hash_traverse(table, func, info) \ + (elf_link_hash_traverse \ + (&(table)->root, \ + (boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \ + (info))) + +/* Get the MIPS ELF64 linker hash table from a link_info structure. */ + +#define mips_elf64_hash_table(p) \ + ((struct mips_elf64_link_hash_table *) ((p)->hash)) + +/* Create an entry in a MIPS ELF64 linker hash table. */ + +static struct bfd_hash_entry * +mips_elf64_link_hash_newfunc (entry, table, string) + struct bfd_hash_entry *entry; + struct bfd_hash_table *table; + const char *string; +{ + struct mips_elf64_link_hash_entry *ret = + (struct mips_elf64_link_hash_entry *) entry; + + /* Allocate the structure if it has not already been allocated by a + subclass. */ + if (ret == (struct mips_elf64_link_hash_entry *) NULL) + ret = ((struct mips_elf64_link_hash_entry *) + bfd_hash_allocate (table, + sizeof (struct mips_elf64_link_hash_entry))); + if (ret == (struct mips_elf64_link_hash_entry *) NULL) + return (struct bfd_hash_entry *) ret; + + /* Call the allocation method of the superclass. */ + ret = ((struct mips_elf64_link_hash_entry *) + _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret, + table, string)); + if (ret != (struct mips_elf64_link_hash_entry *) NULL) + { + /* Set local fields. */ + memset (&ret->esym, 0, sizeof (EXTR)); + /* We use -2 as a marker to indicate that the information has + not been set. -1 means there is no associated ifd. */ + ret->esym.ifd = -2; + ret->possibly_dynamic_relocs = 0; + ret->readonly_reloc = false; + ret->min_dyn_reloc_index = 0; + ret->no_fn_stub = false; + ret->fn_stub = NULL; + ret->need_fn_stub = false; + ret->call_stub = NULL; + ret->call_fp_stub = NULL; + } + + return (struct bfd_hash_entry *) ret; +} + +/* Create a MIPS ELF64 linker hash table. */ + +struct bfd_link_hash_table * +mips_elf64_link_hash_table_create (abfd) + bfd *abfd; +{ + struct mips_elf64_link_hash_table *ret; + + ret = ((struct mips_elf64_link_hash_table *) + bfd_alloc (abfd, sizeof (struct mips_elf64_link_hash_table))); + if (ret == (struct mips_elf64_link_hash_table *) NULL) + return NULL; + + if (! _bfd_elf_link_hash_table_init (&ret->root, abfd, + mips_elf64_link_hash_newfunc)) + { + bfd_release (abfd, ret); + return NULL; + } + + ret->mips16_stubs_seen = false; + + return &ret->root.root; +} + +/* Returns the offset for the entry at the INDEXth position + in the GOT. */ + +static bfd_vma +mips_elf64_got_offset_from_index (dynobj, output_bfd, index) + bfd *dynobj; + bfd *output_bfd; + bfd_vma index; +{ + asection *sgot; + bfd_vma gp; + + sgot = bfd_get_section_by_name (dynobj, ".got"); + gp = _bfd_get_gp_value (output_bfd); + return (sgot->output_section->vma + sgot->output_offset + index - + gp); +} + +/* Returns the GOT information associated with the link indicated by + INFO. If SGOTP is non-NULL, it is filled in with the GOT + section. */ + +static struct mips_elf64_got_info * +_mips_elf64_got_info (abfd, sgotp) + bfd *abfd; + asection **sgotp; +{ + asection *sgot; + struct mips_elf64_got_info *g; + + sgot = bfd_get_section_by_name (abfd, ".got"); + BFD_ASSERT (sgot != NULL); + BFD_ASSERT (elf_section_data (sgot) != NULL); + g = (struct mips_elf64_got_info *) elf_section_data (sgot)->tdata; + BFD_ASSERT (g != NULL); + + if (sgotp) + *sgotp = sgot; + return g; +} + +/* Sign-extend VALUE, which has the indicated number of BITS. */ + +static bfd_vma +mips_elf64_sign_extend (value, bits) + bfd_vma value; + int bits; +{ + if (value & ((bfd_vma)1 << (bits - 1))) + /* VALUE is negative. */ + value |= ((bfd_vma) - 1) << bits; + + return value; +} + +/* Return non-zero if the indicated VALUE has overflowed the maximum + range expressable by a signed number with the indicated number of + BITS. */ + +static boolean +mips_elf64_overflow_p (value, bits) + bfd_vma value; + int bits; +{ + bfd_signed_vma svalue = (bfd_signed_vma) value; + + if (svalue > (1 << (bits - 1)) - 1) + /* The value is too big. */ + return true; + else if (svalue < -(1 << (bits - 1))) + /* The value is too small. */ + return true; + + /* All is well. */ + return false; +} + +/* Returns the GOT index for the global symbol indicated by H. */ + +static bfd_vma +mips_elf64_global_got_index (abfd, h) + bfd *abfd; + struct elf_link_hash_entry *h; +{ + bfd_vma index; + asection *sgot; + struct mips_elf64_got_info *g; + + g = _mips_elf64_got_info (abfd, &sgot); + + /* Once we determine the global GOT entry with the lowest dynamic + symbol table index, we must put all dynamic symbols with greater + indices into the GOT. That makes it easy to calculate the GOT + offset. */ + BFD_ASSERT (h->dynindx >= g->global_gotsym->dynindx); + index = ((h->dynindx - g->global_gotsym->dynindx + g->local_gotno) + * (get_elf_backend_data (abfd)->s->arch_size / 8)); + BFD_ASSERT (index < sgot->_raw_size); + + return index; +} + +struct mips_elf64_hash_sort_data +{ + /* The symbol in the global GOT with the lowest dynamic symbol table + index. */ + struct elf_link_hash_entry *low; + /* The least dynamic symbol table index corresponding to a symbol + with a GOT entry. */ + long min_got_dynindx; + /* The greatest dynamic symbol table index not corresponding to a + symbol without a GOT entry. */ + long max_non_got_dynindx; +}; + +/* If H needs a GOT entry, assign it the highest available dynamic + index. Otherwise, assign it the lowest available dynamic + index. */ + +static boolean +mips_elf64_sort_hash_table_f (h, data) + struct mips_elf64_link_hash_entry *h; + PTR data; +{ + struct mips_elf64_hash_sort_data *hsd + = (struct mips_elf64_hash_sort_data *) data; + + /* Symbols without dynamic symbol table entries aren't interesting + at all. */ + if (h->root.dynindx == -1) + return true; + + if (h->root.got.offset != 1) + h->root.dynindx = hsd->max_non_got_dynindx++; + else + { + h->root.dynindx = --hsd->min_got_dynindx; + hsd->low = (struct elf_link_hash_entry *) h; + } + + return true; +} + +/* Sort the dynamic symbol table so that symbols that need GOT entries + appear towards the end. This reduces the amount of GOT space + required. MAX_LOCAL is used to set the number of local symbols + known to be in the dynamic symbol table. During + mips_elf64_size_dynamic_sections, this value is 1. Afterward, the + section symbols are added and the count is higher. */ + +static boolean +mips_elf64_sort_hash_table (info, max_local) + struct bfd_link_info *info; + unsigned long max_local; +{ + struct mips_elf64_hash_sort_data hsd; + struct mips_elf64_got_info *g; + bfd *dynobj; + + dynobj = elf_hash_table (info)->dynobj; + + hsd.low = NULL; + hsd.min_got_dynindx = elf_hash_table (info)->dynsymcount; + hsd.max_non_got_dynindx = max_local; + mips_elf64_link_hash_traverse (((struct mips_elf64_link_hash_table *) + elf_hash_table (info)), + mips_elf64_sort_hash_table_f, + &hsd); + + /* There shoud have been enough room in the symbol table to + accomodate both the GOT and non-GOT symbols. */ + BFD_ASSERT (hsd.max_non_got_dynindx <= hsd.min_got_dynindx); + + /* Now we know which dynamic symbol has the lowest dynamic symbol + table index in the GOT. */ + g = _mips_elf64_got_info (dynobj, NULL); + g->global_gotsym = hsd.low; + + return true; +} + +#if 0 +/* Swap in an MSYM entry. */ + +static void +mips_elf64_swap_msym_in (abfd, ex, in) + bfd *abfd; + const Elf32_External_Msym *ex; + Elf32_Internal_Msym *in; +{ + in->ms_hash_value = H_GET_32 (abfd, ex->ms_hash_value); + in->ms_info = H_GET_32 (abfd, ex->ms_info); +} +#endif +/* Swap out an MSYM entry. */ + +static void +mips_elf64_swap_msym_out (abfd, in, ex) + bfd *abfd; + const Elf32_Internal_Msym *in; + Elf32_External_Msym *ex; +{ + H_PUT_32 (abfd, in->ms_hash_value, ex->ms_hash_value); + H_PUT_32 (abfd, in->ms_info, ex->ms_info); +} + +/* Create a local GOT entry for VALUE. Return the index of the entry, + or -1 if it could not be created. */ + +static bfd_vma +mips_elf64_create_local_got_entry (abfd, g, sgot, value) + bfd *abfd; + struct mips_elf64_got_info *g; + asection *sgot; + bfd_vma value; +{ + CONST bfd_vma got_size = get_elf_backend_data (abfd)->s->arch_size / 8; + + if (g->assigned_gotno >= g->local_gotno) + { + /* We didn't allocate enough space in the GOT. */ + (*_bfd_error_handler) + (_("not enough GOT space for local GOT entries")); + bfd_set_error (bfd_error_bad_value); + return (bfd_vma) -1; + } + + bfd_put_64 (abfd, value, (sgot->contents + got_size * g->assigned_gotno)); + return got_size * g->assigned_gotno++; +} + +/* Returns the GOT offset at which the indicated address can be found. + If there is not yet a GOT entry for this value, create one. Returns + -1 if no satisfactory GOT offset can be found. */ + +static bfd_vma +mips_elf64_local_got_index (abfd, info, value) + bfd *abfd; + struct bfd_link_info *info; + bfd_vma value; +{ + CONST bfd_vma got_size = get_elf_backend_data (abfd)->s->arch_size / 8; + asection *sgot; + struct mips_elf64_got_info *g; + bfd_byte *entry; + + g = _mips_elf64_got_info (elf_hash_table (info)->dynobj, &sgot); + + /* Look to see if we already have an appropriate entry. */ + for (entry = (sgot->contents + got_size * MIPS_RESERVED_GOTNO); + entry != sgot->contents + got_size * g->assigned_gotno; + entry += got_size) + { + bfd_vma address = bfd_get_64 (abfd, entry); + if (address == value) + return entry - sgot->contents; + } + + return mips_elf64_create_local_got_entry (abfd, g, sgot, value); +} + +/* Find a GOT entry that is within 32KB of the VALUE. These entries + are supposed to be placed at small offsets in the GOT, i.e., + within 32KB of GP. Return the index into the GOT for this page, + and store the offset from this entry to the desired address in + OFFSETP, if it is non-NULL. */ + +static bfd_vma +mips_elf64_got_page (abfd, info, value, offsetp) + bfd *abfd; + struct bfd_link_info *info; + bfd_vma value; + bfd_vma *offsetp; +{ + CONST bfd_vma got_size = get_elf_backend_data (abfd)->s->arch_size / 8; + asection *sgot; + struct mips_elf64_got_info *g; + bfd_byte *entry; + bfd_byte *last_entry; + bfd_vma index = 0; + bfd_vma address; + + g = _mips_elf64_got_info (elf_hash_table (info)->dynobj, &sgot); + + /* Look to see if we aleady have an appropriate entry. */ + last_entry = sgot->contents + got_size * g->assigned_gotno; + for (entry = (sgot->contents + got_size * MIPS_RESERVED_GOTNO); + entry != last_entry; + entry += got_size) + { + address = bfd_get_64 (abfd, entry); + + if (!mips_elf64_overflow_p (value - address, 16)) + { + /* This entry will serve as the page pointer. We can add a + 16-bit number to it to get the actual address. */ + index = entry - sgot->contents; + break; + } + } + + /* If we didn't have an appropriate entry, we create one now. */ + if (entry == last_entry) + index = mips_elf64_create_local_got_entry (abfd, g, sgot, value); + + if (offsetp) + { + address = bfd_get_64 (abfd, entry); + *offsetp = value - address; + } + + return index; +} + +/* Find a GOT entry whose higher-order 16 bits are the same as those + for value. Return the index into the GOT for this entry. */ + +static bfd_vma +mips_elf64_got16_entry (abfd, info, value, external) + bfd *abfd; + struct bfd_link_info *info; + bfd_vma value; + boolean external; +{ + CONST bfd_vma got_size = get_elf_backend_data (abfd)->s->arch_size / 8; + asection *sgot; + struct mips_elf64_got_info *g; + bfd_byte *entry; + bfd_byte *last_entry; + bfd_vma index = 0; + bfd_vma address; + + if (! external) + { + /* Although the ABI says that it is "the high-order 16 bits" that we + want, it is really the %high value. The complete value is + calculated with a `addiu' of a LO16 relocation, just as with a + HI16/LO16 pair. */ + value = mips_elf64_high (value) << 16; + } + + g = _mips_elf64_got_info (elf_hash_table (info)->dynobj, &sgot); + + /* Look to see if we already have an appropriate entry. */ + last_entry = sgot->contents + got_size * g->assigned_gotno; + for (entry = (sgot->contents + got_size * MIPS_RESERVED_GOTNO); + entry != last_entry; + entry += got_size) + { + address = bfd_get_64 (abfd, entry); + if (address == value) + { + /* This entry has the right high-order 16 bits, and the low-order + 16 bits are set to zero. */ + index = entry - sgot->contents; + break; + } + } + + /* If we didn't have an appropriate entry, we create one now. */ + if (entry == last_entry) + index = mips_elf64_create_local_got_entry (abfd, g, sgot, value); + + return index; +} + +/* Return whether a relocation is against a local symbol. */ + +static boolean +mips_elf64_local_relocation_p (input_bfd, relocation, local_sections, + check_forced) + bfd *input_bfd; + const Elf_Internal_Rela *relocation; + asection **local_sections; + boolean check_forced; +{ + unsigned long r_symndx; + Elf_Internal_Shdr *symtab_hdr; + struct mips_elf64_link_hash_entry* h; + size_t extsymoff; + + r_symndx = ELF64_R_SYM (relocation->r_info); + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info; + + if (r_symndx < extsymoff) + return true; + if (elf_bad_symtab (input_bfd) && local_sections[r_symndx] != NULL) + return true; + + if (check_forced) + { + /* Look up the hash table to check whether the symbol + was forced local. */ + h = (struct mips_elf64_link_hash_entry *) + elf_sym_hashes (input_bfd) [r_symndx - extsymoff]; + /* Find the real hash-table entry for this symbol. */ + while (h->root.root.type == bfd_link_hash_indirect + || h->root.root.type == bfd_link_hash_warning) + h = (struct mips_elf64_link_hash_entry *) h->root.root.u.i.link; + if ((h->root.elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0) + return true; + } + + return false; +} + +/* Returns the first relocation of type r_type found, beginning with + RELOCATION. RELEND is one-past-the-end of the relocation table. */ + +static const Elf_Internal_Rela * +mips_elf64_next_relocation (r_type, relocation, relend) + unsigned int r_type; + const Elf_Internal_Rela *relocation; + const Elf_Internal_Rela *relend; +{ + /* According to the MIPS ELF ABI, the R_MIPS_LO16 relocation must be + immediately following. However, for the IRIX6 ABI, the next + relocation may be a composed relocation consisting of several + relocations for the same address. In that case, the R_MIPS_LO16 + relocation may occur as one of these. We permit a similar + extension in general, as that is useful for GCC. */ + while (relocation < relend) + { + if (ELF64_MIPS_R_TYPE (relocation->r_info) == r_type) + return relocation; + + ++relocation; + } + + /* We didn't find it. */ + bfd_set_error (bfd_error_bad_value); + return NULL; +} + +/* Create a rel.dyn relocation for the dynamic linker to resolve. REL + is the original relocation, which is now being transformed into a + dynamic relocation. The ADDENDP is adjusted if necessary; the + caller should store the result in place of the original addend. */ + +static boolean +mips_elf64_create_dynamic_relocation (output_bfd, info, rel, h, sec, + symbol, addendp, input_section) + bfd *output_bfd; + struct bfd_link_info *info; + const Elf_Internal_Rela *rel; + struct mips_elf64_link_hash_entry *h; + asection *sec; + bfd_vma symbol; + bfd_vma *addendp; + asection *input_section; +{ + Elf_Internal_Rel outrel[3]; + boolean skip; + asection *sreloc; + bfd *dynobj; + int r_type; + + r_type = ELF64_MIPS_R_TYPE (rel->r_info); + dynobj = elf_hash_table (info)->dynobj; + sreloc = bfd_get_section_by_name (dynobj, ".rel.dyn"); + BFD_ASSERT (sreloc != NULL); + BFD_ASSERT (sreloc->contents != NULL); + BFD_ASSERT ((sreloc->reloc_count + * get_elf_backend_data (output_bfd)->s->sizeof_rel) + < sreloc->_raw_size); + + skip = false; + outrel[0].r_offset = _bfd_elf_section_offset (output_bfd, info, + input_section, + rel[0].r_offset); + + /* We begin by assuming that the offset for the dynamic relocation + is the same as for the original relocation. We'll adjust this + later to reflect the correct output offsets. */ + if (elf_section_data (input_section)->sec_info_type != ELF_INFO_TYPE_STABS) + { + outrel[1].r_offset = rel[1].r_offset; + outrel[2].r_offset = rel[2].r_offset; + } + else + { + /* Except that in a stab section things are more complex. + Because we compress stab information, the offset given in the + relocation may not be the one we want; we must let the stabs + machinery tell us the offset. */ + outrel[1].r_offset = outrel[0].r_offset; + outrel[2].r_offset = outrel[0].r_offset; + /* If we didn't need the relocation at all, this value will be + -1. */ + if (outrel[0].r_offset == (bfd_vma) -1) + skip = true; + } + + /* If we've decided to skip this relocation, just output an empty + record. Note that R_MIPS_NONE == 0, so that this call to memset + is a way of setting R_TYPE to R_MIPS_NONE. */ + if (skip) + memset (outrel, 0, sizeof (Elf_Internal_Rel) * 3); + else + { + long indx; + bfd_vma section_offset; + + /* We must now calculate the dynamic symbol table index to use + in the relocation. */ + if (h != NULL + && (! info->symbolic || (h->root.elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)) + { + indx = h->root.dynindx; + /* h->root.dynindx may be -1 if this symbol was marked to + become local. */ + if (indx == -1) + indx = 0; + } + else + { + if (sec != NULL && bfd_is_abs_section (sec)) + indx = 0; + else if (sec == NULL || sec->owner == NULL) + { + bfd_set_error (bfd_error_bad_value); + return false; + } + else + { + indx = elf_section_data (sec->output_section)->dynindx; + if (indx == 0) + abort (); + } + + /* Figure out how far the target of the relocation is from + the beginning of its section. */ + section_offset = symbol - sec->output_section->vma; + /* The relocation we're building is section-relative. + Therefore, the original addend must be adjusted by the + section offset. */ + *addendp += section_offset; + /* Now, the relocation is just against the section. */ + symbol = sec->output_section->vma; + } + + /* If the relocation was previously an absolute relocation and + this symbol will not be referred to by the relocation, we must + adjust it by the value we give it in the dynamic symbol table. + Otherwise leave the job up to the dynamic linker. */ + if (!indx && r_type != R_MIPS_REL32) + *addendp += symbol; + + /* The relocation is always an REL32 relocation because we don't + know where the shared library will wind up at load-time. */ + outrel[0].r_info = ELF64_R_INFO (indx, R_MIPS_REL32); + + /* Adjust the output offset of the relocation to reference the + correct location in the output file. */ + outrel[0].r_offset += (input_section->output_section->vma + + input_section->output_offset); + outrel[1].r_offset += (input_section->output_section->vma + + input_section->output_offset); + outrel[2].r_offset += (input_section->output_section->vma + + input_section->output_offset); + } + + /* Put the relocation back out. */ + mips_elf64_be_swap_reloc_out (output_bfd, outrel, + (sreloc->contents + + sreloc->reloc_count + * sizeof (Elf64_Mips_External_Rel))); + + /* Record the index of the first relocation referencing H. This + information is later emitted in the .msym section. */ + if (h != NULL + && (h->min_dyn_reloc_index == 0 + || sreloc->reloc_count < h->min_dyn_reloc_index)) + h->min_dyn_reloc_index = sreloc->reloc_count; + + /* We've now added another relocation. */ + ++sreloc->reloc_count; + + /* Make sure the output section is writable. The dynamic linker + will be writing to it. */ + elf_section_data (input_section->output_section)->this_hdr.sh_flags + |= SHF_WRITE; + + return true; +} + +/* Calculate the value produced by the RELOCATION (which comes from + the INPUT_BFD). The ADDEND is the addend to use for this + RELOCATION; RELOCATION->R_ADDEND is ignored. + + The result of the relocation calculation is stored in VALUEP. + REQUIRE_JALXP indicates whether or not the opcode used with this + relocation must be JALX. + + This function returns bfd_reloc_continue if the caller need take no + further action regarding this relocation, bfd_reloc_notsupported if + something goes dramatically wrong, bfd_reloc_overflow if an + overflow occurs, and bfd_reloc_ok to indicate success. */ + +static bfd_reloc_status_type +mips_elf64_calculate_relocation (abfd, input_bfd, input_section, info, + relocation, addend, howto, local_syms, + local_sections, valuep, namep, require_jalxp) + bfd *abfd; + bfd *input_bfd; + asection *input_section; + struct bfd_link_info *info; + const Elf_Internal_Rela *relocation; + bfd_vma addend; + reloc_howto_type *howto; + Elf_Internal_Sym *local_syms; + asection **local_sections; + bfd_vma *valuep; + const char **namep; + boolean *require_jalxp; +{ + /* The eventual value we will return. */ + bfd_vma value; + /* The address of the symbol against which the relocation is + occurring. */ + bfd_vma symbol = 0; + /* The final GP value to be used for the relocatable, executable, or + shared object file being produced. */ + bfd_vma gp = (bfd_vma) - 1; + /* The place (section offset or address) of the storage unit being + relocated. */ + bfd_vma p; + /* The value of GP used to create the relocatable object. */ + bfd_vma gp0 = (bfd_vma) - 1; + /* The offset into the global offset table at which the address of + the relocation entry symbol, adjusted by the addend, resides + during execution. */ + bfd_vma g = (bfd_vma) - 1; + /* The section in which the symbol referenced by the relocation is + located. */ + asection *sec = NULL; + struct mips_elf64_link_hash_entry* h = NULL; + /* True if the symbol referred to by this relocation is a local + symbol. */ + boolean local_p; + Elf_Internal_Shdr *symtab_hdr; + size_t extsymoff; + unsigned long r_symndx; + int r_type; + /* True if overflow occurred during the calculation of the + relocation value. */ + boolean overflowed_p; + /* True if this relocation refers to a MIPS16 function. */ + boolean target_is_16_bit_code_p = false; + + /* Parse the relocation. */ + r_symndx = ELF64_R_SYM (relocation->r_info); + r_type = ELF64_MIPS_R_TYPE (relocation->r_info); + p = (input_section->output_section->vma + + input_section->output_offset + + relocation->r_offset); + + /* Assume that there will be no overflow. */ + overflowed_p = false; + + /* Figure out whether or not the symbol is local, and get the offset + used in the array of hash table entries. */ + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; + local_p = mips_elf64_local_relocation_p (input_bfd, relocation, + local_sections, false); + if (! elf_bad_symtab (input_bfd)) + extsymoff = symtab_hdr->sh_info; + else + { + /* The symbol table does not follow the rule that local symbols + must come before globals. */ + extsymoff = 0; + } + + /* Figure out the value of the symbol. */ + if (local_p) + { + Elf_Internal_Sym *sym; + + sym = local_syms + r_symndx; + sec = local_sections[r_symndx]; + + symbol = sec->output_section->vma + sec->output_offset; + if (ELF_ST_TYPE (sym->st_info) != STT_SECTION) + symbol += sym->st_value; + + /* MIPS16 text labels should be treated as odd. */ + if (sym->st_other == STO_MIPS16) + ++symbol; + + /* Record the name of this symbol, for our caller. */ + *namep = bfd_elf_string_from_elf_section (input_bfd, + symtab_hdr->sh_link, + sym->st_name); + if (*namep == '\0') + *namep = bfd_section_name (input_bfd, sec); + + target_is_16_bit_code_p = (sym->st_other == STO_MIPS16); + } + else + { + /* For global symbols we look up the symbol in the hash-table. */ + h = ((struct mips_elf64_link_hash_entry *) + elf_sym_hashes (input_bfd) [r_symndx - extsymoff]); + /* Find the real hash-table entry for this symbol. */ + while (h->root.root.type == bfd_link_hash_indirect + || h->root.root.type == bfd_link_hash_warning) + h = (struct mips_elf64_link_hash_entry *) h->root.root.u.i.link; + + /* Record the name of this symbol, for our caller. */ + *namep = h->root.root.root.string; + + /* If this symbol is defined, calculate its address. */ + if ((h->root.root.type == bfd_link_hash_defined + || h->root.root.type == bfd_link_hash_defweak) + && h->root.root.u.def.section) + { + sec = h->root.root.u.def.section; + if (sec->output_section) + symbol = (h->root.root.u.def.value + + sec->output_section->vma + + sec->output_offset); + else + symbol = h->root.root.u.def.value; + } + else if (h->root.root.type == bfd_link_hash_undefweak) + /* We allow relocations against undefined weak symbols, giving + it the value zero, so that you can undefined weak functions + and check to see if they exist by looking at their + addresses. */ + symbol = 0; + else if (info->shared + && (!info->symbolic || info->allow_shlib_undefined) + && !info->no_undefined + && ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT) + symbol = 0; + else if (strcmp (h->root.root.root.string, "_DYNAMIC_LINK") == 0 || + strcmp (h->root.root.root.string, "_DYNAMIC_LINKING") == 0) + { + /* If this is a dynamic link, we should have created a + _DYNAMIC_LINK symbol or _DYNAMIC_LINKING(for normal mips) symbol + in in mips_elf64_create_dynamic_sections. + Otherwise, we should define the symbol with a value of 0. + FIXME: It should probably get into the symbol table + somehow as well. */ + BFD_ASSERT (! info->shared); + BFD_ASSERT (bfd_get_section_by_name (abfd, ".dynamic") == NULL); + symbol = 0; + } + else + { + if (! ((*info->callbacks->undefined_symbol) + (info, h->root.root.root.string, input_bfd, + input_section, relocation->r_offset, + (!info->shared || info->no_undefined + || ELF_ST_VISIBILITY (h->root.other))))) + return bfd_reloc_undefined; + symbol = 0; + } + + target_is_16_bit_code_p = (h->root.other == STO_MIPS16); + } + + /* If this is a 64-bit call to a 16-bit function with a stub, we + need to redirect the call to the stub, unless we're already *in* + a stub. */ + if (r_type != R_MIPS16_26 && !info->relocateable + && ((h != NULL && h->fn_stub != NULL) + || (local_p && elf_tdata (input_bfd)->local_stubs != NULL + && elf_tdata (input_bfd)->local_stubs[r_symndx] != NULL)) + && !mips_elf64_stub_section_p (input_bfd, input_section)) + { + /* This is a 64-bit call to a 16-bit function. We should + have already noticed that we were going to need the + stub. */ + if (local_p) + sec = elf_tdata (input_bfd)->local_stubs[r_symndx]; + else + { + BFD_ASSERT (h->need_fn_stub); + sec = h->fn_stub; + } + + symbol = sec->output_section->vma + sec->output_offset; + } + /* If this is a 16-bit call to a 64-bit function with a stub, we + need to redirect the call to the stub. */ + else if (r_type == R_MIPS16_26 && !info->relocateable + && h != NULL + && (h->call_stub != NULL || h->call_fp_stub != NULL) + && !target_is_16_bit_code_p) + { + /* If both call_stub and call_fp_stub are defined, we can figure + out which one to use by seeing which one appears in the input + file. */ + if (h->call_stub != NULL && h->call_fp_stub != NULL) + { + asection *o; + + sec = NULL; + for (o = input_bfd->sections; o != NULL; o = o->next) + { + if (strncmp (bfd_get_section_name (input_bfd, o), + CALL_FP_STUB, sizeof CALL_FP_STUB - 1) == 0) + { + sec = h->call_fp_stub; + break; + } + } + if (sec == NULL) + sec = h->call_stub; + } + else if (h->call_stub != NULL) + sec = h->call_stub; + else + sec = h->call_fp_stub; + + BFD_ASSERT (sec->_raw_size > 0); + symbol = sec->output_section->vma + sec->output_offset; + } + + /* Calls from 16-bit code to 32-bit code and vice versa require the + special jalx instruction. */ + *require_jalxp = (!info->relocateable + && ((r_type == R_MIPS16_26) != target_is_16_bit_code_p)); + + local_p = mips_elf64_local_relocation_p (input_bfd, relocation, + local_sections, true); + + /* If we haven't already determined the GOT offset, or the GP value, + and we're going to need it, get it now. */ + switch (r_type) + { + case R_MIPS_CALL16: + case R_MIPS_GOT16: + case R_MIPS_GOT_DISP: + case R_MIPS_GOT_HI16: + case R_MIPS_CALL_HI16: + case R_MIPS_GOT_LO16: + case R_MIPS_CALL_LO16: + /* Find the index into the GOT where this value is located. */ + if (!local_p) + { + BFD_ASSERT (addend == 0); + g = mips_elf64_global_got_index (elf_hash_table (info)->dynobj, + (struct elf_link_hash_entry*) h); + if (! elf_hash_table(info)->dynamic_sections_created + || (info->shared + && (info->symbolic || h->root.dynindx == -1) + && (h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))) + { + /* This is a static link or a -Bsymbolic link. The + symbol is defined locally, or was forced to be local. + We must initialize this entry in the GOT. */ + bfd *tmpbfd = elf_hash_table (info)->dynobj; + + asection *sgot = bfd_get_section_by_name (tmpbfd, ".got"); + bfd_put_64 (tmpbfd, symbol + addend, sgot->contents + g); + } + } + else if (r_type == R_MIPS_GOT16 || r_type == R_MIPS_CALL16) + /* There's no need to create a local GOT entry here; the + calculation for a local GOT16 entry does not involve G. */ + break; + else + { + g = mips_elf64_local_got_index (abfd, info, symbol + addend); + if (g == (bfd_vma) -1) + return false; + } + + /* Convert GOT indices to actual offsets. */ + g = mips_elf64_got_offset_from_index (elf_hash_table (info)->dynobj, + abfd, g); + break; + + case R_MIPS_HI16: + case R_MIPS_LO16: + case R_MIPS_GPREL16: + case R_MIPS_GPREL32: + case R_MIPS_LITERAL: + gp0 = _bfd_get_gp_value (input_bfd); + gp = _bfd_get_gp_value (abfd); + break; + + default: + break; + } + + /* Figure out what kind of relocation is being performed. */ + switch (r_type) + { + case R_MIPS_NONE: + return bfd_reloc_continue; + + case R_MIPS_16: + value = symbol + mips_elf64_sign_extend (addend, 16); + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + + case R_MIPS_32: + case R_MIPS_REL32: + case R_MIPS_64: + if ((info->shared + || (elf_hash_table (info)->dynamic_sections_created + && h != NULL + && ((h->root.elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0) + && ((h->root.elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))) + && r_symndx != 0 + && (input_section->flags & SEC_ALLOC) != 0) + { + /* If we're creating a shared library, or this relocation is + against a symbol in a shared library, then we can't know + where the symbol will end up. So, we create a relocation + record in the output, and leave the job up to the dynamic + linker. */ + value = addend; + if (!mips_elf64_create_dynamic_relocation (abfd, info, relocation, + h, sec, symbol, &value, + input_section)) + return false; + } + else + { + if (r_type != R_MIPS_REL32) + value = symbol + addend; + else + value = addend; + } + value &= howto->dst_mask; + break; + + case R_MIPS_PC32: + case R_MIPS_PC64: + case R_MIPS_GNU_REL_LO16: + value = symbol + addend - p; + value &= howto->dst_mask; + break; + + case R_MIPS_GNU_REL16_S2: + value = symbol + mips_elf64_sign_extend (addend << 2, 18) - p; + overflowed_p = mips_elf64_overflow_p (value, 18); + value = (value >> 2) & howto->dst_mask; + break; + + case R_MIPS_GNU_REL_HI16: + value = mips_elf64_high (addend + symbol - p); + value &= howto->dst_mask; + break; + + case R_MIPS16_26: + /* The calculation for R_MIPS16_26 is just the same as for an + R_MIPS_26. It's only the storage of the relocated field into + the output file that's different. That's handled in + mips_elf_perform_relocation. So, we just fall through to the + R_MIPS_26 case here. */ + case R_MIPS_26: + if (local_p) + value = (((addend << 2) | ((p + 4) & 0xf0000000)) + symbol) >> 2; + else + value = (mips_elf64_sign_extend (addend << 2, 28) + symbol) >> 2; + value &= howto->dst_mask; + break; + + case R_MIPS_HI16: + value = mips_elf64_high (addend + symbol); + value &= howto->dst_mask; + break; + + case R_MIPS_LO16: + value = (addend + symbol) & 0xffff; + value &= howto->dst_mask; + break; + + case R_MIPS_LITERAL: + /* Because we don't merge literal sections, we can handle this + just like R_MIPS_GPREL16. In the long run, we should merge + shared literals, and then we will need to additional work + here. */ + + /* Fall through. */ + + case R_MIPS_GPREL16: + if (local_p) + value = mips_elf64_sign_extend (addend, 16) + symbol + gp0 - gp; + else + value = mips_elf64_sign_extend (addend, 16) + symbol - gp; + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + + case R_MIPS_PC16: + value = mips_elf64_sign_extend (addend, 16) + symbol - p; + overflowed_p = mips_elf64_overflow_p (value, 16); + value = (bfd_vma) ((bfd_signed_vma) value / 4); + break; + + case R_MIPS_GOT16: + case R_MIPS_CALL16: + if (local_p) + { + boolean forced; + + /* The special case is when the symbol is forced to be local. We + need the full address in the GOT since no R_MIPS_LO16 relocation + follows. */ + forced = ! mips_elf64_local_relocation_p (input_bfd, relocation, + local_sections, false); + value = mips_elf64_got16_entry (abfd, info, symbol + addend, forced); + if (value == (bfd_vma) -1) + return false; + value + = mips_elf64_got_offset_from_index (elf_hash_table (info)->dynobj, + abfd, + value); + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + } + + /* Fall through. */ + + case R_MIPS_GOT_DISP: + value = g; + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + + case R_MIPS_GPREL32: + value = (addend + symbol + gp0 - gp) & howto->dst_mask; + break; + + case R_MIPS_GOT_HI16: + case R_MIPS_CALL_HI16: + /* We're allowed to handle these two relocations identically. + The dynamic linker is allowed to handle the CALL relocations + differently by creating a lazy evaluation stub. */ + value = g; + value = mips_elf64_high (value); + value &= howto->dst_mask; + break; + + case R_MIPS_GOT_LO16: + case R_MIPS_CALL_LO16: + value = g & howto->dst_mask; + break; + + case R_MIPS_GOT_PAGE: + value = mips_elf64_got_page (abfd, info, symbol + addend, NULL); + if (value == (bfd_vma) -1) + return false; + value = mips_elf64_got_offset_from_index (elf_hash_table (info)->dynobj, + abfd, + value); + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + + case R_MIPS_GOT_OFST: + mips_elf64_got_page (abfd, info, symbol + addend, &value); + overflowed_p = mips_elf64_overflow_p (value, 16); + break; + + case R_MIPS_SUB: + value = symbol - addend; + value &= howto->dst_mask; + break; + + case R_MIPS_HIGHER: + value = mips_elf64_higher (addend + symbol); + value &= howto->dst_mask; + break; + + case R_MIPS_HIGHEST: + value = mips_elf64_highest (addend + symbol); + value &= howto->dst_mask; + break; + + case R_MIPS_SCN_DISP: + value = symbol + addend - sec->output_offset; + value &= howto->dst_mask; + break; + + case R_MIPS_PJUMP: + case R_MIPS_JALR: + /* Both of these may be ignored. R_MIPS_JALR is an optimization + hint; we could improve performance by honoring that hint. */ + return bfd_reloc_continue; + + case R_MIPS_GNU_VTINHERIT: + case R_MIPS_GNU_VTENTRY: + /* We don't do anything with these at present. */ + return bfd_reloc_continue; + + default: + /* An unrecognized relocation type. */ + return bfd_reloc_notsupported; + } + + /* Store the VALUE for our caller. */ + *valuep = value; + return overflowed_p ? bfd_reloc_overflow : bfd_reloc_ok; +} + +/* Obtain the field relocated by RELOCATION. */ + +static bfd_vma +mips_elf64_obtain_contents (howto, relocation, input_bfd, contents) + reloc_howto_type *howto; + const Elf_Internal_Rela *relocation; + bfd *input_bfd; + bfd_byte *contents; +{ + bfd_byte *location = contents + relocation->r_offset; + + /* Obtain the bytes. */ + return bfd_get (8 * bfd_get_reloc_size (howto), input_bfd, location); +} + +/* It has been determined that the result of the RELOCATION is the + VALUE. Use HOWTO to place VALUE into the output file at the + appropriate position. The SECTION is the section to which the + relocation applies. If REQUIRE_JALX is true, then the opcode used + for the relocation must be either JAL or JALX, and it is + unconditionally converted to JALX. + + Returns false if anything goes wrong. */ + +static boolean +mips_elf64_perform_relocation (info, howto, relocation, value, + input_bfd, input_section, + contents, require_jalx) + struct bfd_link_info *info; + reloc_howto_type *howto; + const Elf_Internal_Rela *relocation; + bfd_vma value; + bfd *input_bfd; + asection *input_section; + bfd_byte *contents; + boolean require_jalx; +{ + bfd_vma x; + bfd_byte *location; + int r_type = ELF32_R_TYPE (relocation->r_info); + + /* Figure out where the relocation is occurring. */ + location = contents + relocation->r_offset; + + /* Obtain the current value. */ + x = mips_elf64_obtain_contents (howto, relocation, input_bfd, contents); + + /* Clear the field we are setting. */ + x &= ~howto->dst_mask; + + /* If this is the R_MIPS16_26 relocation, we must store the + value in a funny way. */ + if (r_type == R_MIPS16_26) + { + /* R_MIPS16_26 is used for the mips16 jal and jalx instructions. + Most mips16 instructions are 16 bits, but these instructions + are 32 bits. + + The format of these instructions is: + + +--------------+--------------------------------+ + ! JALX ! X! Imm 20:16 ! Imm 25:21 ! + +--------------+--------------------------------+ + ! Immediate 15:0 ! + +-----------------------------------------------+ + + JALX is the 5-bit value 00011. X is 0 for jal, 1 for jalx. + Note that the immediate value in the first word is swapped. + + When producing a relocateable object file, R_MIPS16_26 is + handled mostly like R_MIPS_26. In particular, the addend is + stored as a straight 26-bit value in a 32-bit instruction. + (gas makes life simpler for itself by never adjusting a + R_MIPS16_26 reloc to be against a section, so the addend is + always zero). However, the 32 bit instruction is stored as 2 + 16-bit values, rather than a single 32-bit value. In a + big-endian file, the result is the same; in a little-endian + file, the two 16-bit halves of the 32 bit value are swapped. + This is so that a disassembler can recognize the jal + instruction. + + When doing a final link, R_MIPS16_26 is treated as a 32 bit + instruction stored as two 16-bit values. The addend A is the + contents of the targ26 field. The calculation is the same as + R_MIPS_26. When storing the calculated value, reorder the + immediate value as shown above, and don't forget to store the + value as two 16-bit values. + + To put it in MIPS ABI terms, the relocation field is T-targ26-16, + defined as + + big-endian: + +--------+----------------------+ + | | | + | | targ26-16 | + |31 26|25 0| + +--------+----------------------+ + + little-endian: + +----------+------+-------------+ + | | | | + | sub1 | | sub2 | + |0 9|10 15|16 31| + +----------+--------------------+ + where targ26-16 is sub1 followed by sub2 (i.e., the addend field A is + ((sub1 << 16) | sub2)). + + When producing a relocateable object file, the calculation is + (((A < 2) | ((P + 4) & 0xf0000000) + S) >> 2) + When producing a fully linked file, the calculation is + let R = (((A < 2) | ((P + 4) & 0xf0000000) + S) >> 2) + ((R & 0x1f0000) << 5) | ((R & 0x3e00000) >> 5) | (R & 0xffff) */ + + if (!info->relocateable) + /* Shuffle the bits according to the formula above. */ + value = (((value & 0x1f0000) << 5) + | ((value & 0x3e00000) >> 5) + | (value & 0xffff)); + } + else if (r_type == R_MIPS16_GPREL) + { + /* R_MIPS16_GPREL is used for GP-relative addressing in mips16 + mode. A typical instruction will have a format like this: + + +--------------+--------------------------------+ + ! EXTEND ! Imm 10:5 ! Imm 15:11 ! + +--------------+--------------------------------+ + ! Major ! rx ! ry ! Imm 4:0 ! + +--------------+--------------------------------+ + + EXTEND is the five bit value 11110. Major is the instruction + opcode. + + This is handled exactly like R_MIPS_GPREL16, except that the + addend is retrieved and stored as shown in this diagram; that + is, the Imm fields above replace the V-rel16 field. + + All we need to do here is shuffle the bits appropriately. As + above, the two 16-bit halves must be swapped on a + little-endian system. */ + value = (((value & 0x7e0) << 16) + | ((value & 0xf800) << 5) + | (value & 0x1f)); + } + + /* Set the field. */ + x |= (value & howto->dst_mask); + + /* If required, turn JAL into JALX. */ + if (require_jalx) + { + boolean ok; + bfd_vma opcode = x >> 26; + bfd_vma jalx_opcode; + + /* Check to see if the opcode is already JAL or JALX. */ + if (r_type == R_MIPS16_26) + { + ok = ((opcode == 0x6) || (opcode == 0x7)); + jalx_opcode = 0x7; + } + else + { + ok = ((opcode == 0x3) || (opcode == 0x1d)); + jalx_opcode = 0x1d; + } + + /* If the opcode is not JAL or JALX, there's a problem. */ + if (!ok) + { + (*_bfd_error_handler) + (_("%s: %s+0x%lx: jump to stub routine which is not jal"), + bfd_archive_filename (input_bfd), + input_section->name, + (unsigned long) relocation->r_offset); + bfd_set_error (bfd_error_bad_value); + return false; + } + + /* Make this the JALX opcode. */ + x = (x & ~(0x3f << 26)) | (jalx_opcode << 26); + } + + /* Swap the high- and low-order 16 bits on little-endian systems + when doing a MIPS16 relocation. */ + if ((r_type == R_MIPS16_GPREL || r_type == R_MIPS16_26) + && bfd_little_endian (input_bfd)) + x = (((x & 0xffff) << 16) | ((x & 0xffff0000) >> 16)); + + /* Put the value into the output. */ + bfd_put (8 * bfd_get_reloc_size (howto), input_bfd, x, location); + return true; +} + +/* Returns true if SECTION is a MIPS16 stub section. */ + +static boolean +mips_elf64_stub_section_p (abfd, section) + bfd *abfd ATTRIBUTE_UNUSED; + asection *section; +{ + const char *name = bfd_get_section_name (abfd, section); + + return (strncmp (name, FN_STUB, sizeof FN_STUB - 1) == 0 + || strncmp (name, CALL_STUB, sizeof CALL_STUB - 1) == 0 + || strncmp (name, CALL_FP_STUB, sizeof CALL_FP_STUB - 1) == 0); +} + +/* Relocate a MIPS ELF64 section. */ + +static boolean +mips_elf64_relocate_section (output_bfd, info, input_bfd, input_section, + contents, relocs, local_syms, local_sections) + bfd *output_bfd; + struct bfd_link_info *info; + bfd *input_bfd; + asection *input_section; + bfd_byte *contents; + Elf_Internal_Rela *relocs; + Elf_Internal_Sym *local_syms; + asection **local_sections; +{ + Elf_Internal_Rela *rel; + const Elf_Internal_Rela *relend; + bfd_vma addend = 0; + boolean use_saved_addend_p = false; + struct elf_backend_data *bed; + + bed = get_elf_backend_data (output_bfd); + relend = relocs + input_section->reloc_count * bed->s->int_rels_per_ext_rel; + for (rel = relocs; rel < relend; ++rel) + { + const char *name; + bfd_vma value; + reloc_howto_type *howto; + boolean require_jalx; + /* True if the relocation is a RELA relocation, rather than a + REL relocation. */ + boolean rela_relocation_p = true; + int r_type = ELF64_MIPS_R_TYPE (rel->r_info); + const char *msg = (const char *) NULL; + + /* Find the relocation howto for this relocation. */ + howto = &mips_elf64_howto_table_rela[r_type]; + + if (!use_saved_addend_p) + { + Elf_Internal_Shdr *rel_hdr; + + /* If these relocations were originally of the REL variety, + we must pull the addend out of the field that will be + relocated. Otherwise, we simply use the contents of the + RELA relocation. To determine which flavor or relocation + this is, we depend on the fact that the INPUT_SECTION's + REL_HDR is read before its REL_HDR2. */ + rel_hdr = &elf_section_data (input_section)->rel_hdr; + if ((size_t) (rel - relocs) + >= (NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel)) + rel_hdr = elf_section_data (input_section)->rel_hdr2; + if (rel_hdr->sh_entsize + == (get_elf_backend_data (input_bfd)->s->sizeof_rel)) + { + /* Note that this is a REL relocation. */ + rela_relocation_p = false; + + /* Find the relocation howto for this relocation. */ + howto = &mips_elf64_howto_table_rel[r_type]; + + /* Get the addend, which is stored in the input file. */ + addend = mips_elf64_obtain_contents (howto, + rel, + input_bfd, + contents); + addend &= howto->src_mask; + + /* For some kinds of relocations, the ADDEND is a + combination of the addend stored in two different + relocations. */ + if (r_type == R_MIPS_HI16 + || r_type == R_MIPS_GNU_REL_HI16 + || (r_type == R_MIPS_GOT16 + && mips_elf64_local_relocation_p (input_bfd, rel, + local_sections, false))) + { + bfd_vma l; + const Elf_Internal_Rela *lo16_relocation; + reloc_howto_type *lo16_howto; + int lo; + + /* The combined value is the sum of the HI16 addend, + left-shifted by sixteen bits, and the LO16 + addend, sign extended. (Usually, the code does + a `lui' of the HI16 value, and then an `addiu' of + the LO16 value.) + + Scan ahead to find a matching LO16 relocation. */ + if (r_type == R_MIPS_GNU_REL_HI16) + lo = R_MIPS_GNU_REL_LO16; + else + lo = R_MIPS_LO16; + lo16_relocation + = mips_elf64_next_relocation (lo, rel, relend); + if (lo16_relocation == NULL) + return false; + + /* Obtain the addend kept there. */ + if (rela_relocation_p == false) + lo16_howto = &mips_elf64_howto_table_rel[lo]; + else + lo16_howto = &mips_elf64_howto_table_rela[lo]; + l = mips_elf64_obtain_contents (lo16_howto, + lo16_relocation, + input_bfd, contents); + l &= lo16_howto->src_mask; + l = mips_elf64_sign_extend (l, 16); + + addend <<= 16; + + /* Compute the combined addend. */ + addend += l; + } + } + else + addend = rel->r_addend; + } + + if (info->relocateable) + { + Elf_Internal_Sym *sym; + unsigned long r_symndx; + + /* Since we're just relocating, all we need to do is copy + the relocations back out to the object file, unless + they're against a section symbol, in which case we need + to adjust by the section offset, or unless they're GP + relative in which case we need to adjust by the amount + that we're adjusting GP in this relocateable object. */ + + if (!mips_elf64_local_relocation_p (input_bfd, rel, local_sections, + false)) + /* There's nothing to do for non-local relocations. */ + continue; + + if (r_type == R_MIPS_GPREL16 + || r_type == R_MIPS_GPREL32 + || r_type == R_MIPS_LITERAL) + addend -= (_bfd_get_gp_value (output_bfd) + - _bfd_get_gp_value (input_bfd)); + else if (r_type == R_MIPS_26 || r_type == R_MIPS_GNU_REL16_S2) + /* The addend is stored without its two least + significant bits (which are always zero.) In a + non-relocateable link, calculate_relocation will do + this shift; here, we must do it ourselves. */ + addend <<= 2; + + r_symndx = ELF64_R_SYM (rel->r_info); + sym = local_syms + r_symndx; + if (ELF_ST_TYPE (sym->st_info) == STT_SECTION) + /* Adjust the addend appropriately. */ + addend += local_sections[r_symndx]->output_offset; + +#if 0 + /* If the relocation is for a R_MIPS_HI16 or R_MIPS_GOT16, + then we only want to write out the high-order 16 bits. + The subsequent R_MIPS_LO16 will handle the low-order bits. */ + if (r_type == R_MIPS_HI16 || r_type == R_MIPS_GOT16 + || r_type == R_MIPS_GNU_REL_HI16) + addend = mips_elf64_high (addend); + else if (r_type == R_MIPS_HIGHER) + addend = mips_elf64_higher (addend); + else if (r_type == R_MIPS_HIGHEST) + addend = mips_elf64_highest (addend); +#endif + /* If the relocation is for an R_MIPS_26 relocation, then + the two low-order bits are not stored in the object file; + they are implicitly zero. */ + if (r_type == R_MIPS_26 || r_type == R_MIPS_GNU_REL16_S2) + addend >>= 2; + + if (rela_relocation_p) + /* If this is a RELA relocation, just update the addend. + We have to cast away constness for REL. */ + rel->r_addend = addend; + else + { + /* Otherwise, we have to write the value back out. Note + that we use the source mask, rather than the + destination mask because the place to which we are + writing will be source of the addend in the final + link. */ + addend &= howto->src_mask; + + if (!mips_elf64_perform_relocation (info, howto, rel, addend, + input_bfd, input_section, + contents, false)) + return false; + } + + /* Go on to the next relocation. */ + continue; + } + + /* In the N32 and 64-bit ABIs there may be multiple consecutive + relocations for the same offset. In that case we are + supposed to treat the output of each relocation as the addend + for the next. */ + if (rel + 1 < relend + && rel->r_offset == rel[1].r_offset + && ELF64_MIPS_R_TYPE (rel[1].r_info) != R_MIPS_NONE) + use_saved_addend_p = true; + else + use_saved_addend_p = false; + + /* Figure out what value we are supposed to relocate. */ + switch (mips_elf64_calculate_relocation (output_bfd, input_bfd, + input_section, info, rel, + addend, howto, local_syms, + local_sections, &value, &name, + &require_jalx)) + { + case bfd_reloc_continue: + /* There's nothing to do. */ + continue; + + case bfd_reloc_undefined: + /* mips_elf64_calculate_relocation already called the + undefined_symbol callback. There's no real point in + trying to perform the relocation at this point, so we + just skip ahead to the next relocation. */ + continue; + + case bfd_reloc_notsupported: + msg = _("internal error: unsupported relocation error"); + info->callbacks->warning + (info, msg, name, input_bfd, input_section, rel->r_offset); + return false; + + case bfd_reloc_overflow: + if (use_saved_addend_p) + /* Ignore overflow until we reach the last relocation for + a given location. */ + ; + else + { + BFD_ASSERT (name != NULL); + if (! ((*info->callbacks->reloc_overflow) + (info, name, howto->name, (bfd_vma) 0, + input_bfd, input_section, rel->r_offset))) + return false; + } + break; + + case bfd_reloc_ok: + break; + + default: + abort (); + break; + } + + /* If we've got another relocation for the address, keep going + until we reach the last one. */ + if (use_saved_addend_p) + { + addend = value; + continue; + } + + /* Actually perform the relocation. */ + if (!mips_elf64_perform_relocation (info, howto, rel, value, input_bfd, + input_section, contents, + require_jalx)) + return false; + } + + return true; +} + +/* Create dynamic sections when linking against a dynamic object. */ + +boolean +mips_elf64_create_dynamic_sections (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + flagword flags; + register asection *s; + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED | SEC_READONLY); + + /* Mips ABI requests the .dynamic section to be read only. */ + s = bfd_get_section_by_name (abfd, ".dynamic"); + if (s != NULL) + { + if (! bfd_set_section_flags (abfd, s, flags)) + return false; + } + + /* We need to create .got section. */ + if (! mips_elf64_create_got_section (abfd, info)) + return false; + + /* Create the .msym section on IRIX6. It is used by the dynamic + linker to speed up dynamic relocations, and to avoid computing + the ELF hash for symbols. */ + if (!mips_elf64_create_msym_section (abfd)) + return false; + + /* Create .stub section. */ + if (bfd_get_section_by_name (abfd, ".MIPS.stubs") == NULL) + { + s = bfd_make_section (abfd, ".MIPS.stubs"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_CODE) + || ! bfd_set_section_alignment (abfd, s, 3)) + return false; + } + + return true; +} + +/* Adjust a symbol defined by a dynamic object and referenced by a + regular object. The current definition is in some section of the + dynamic object, but we're not including those sections. We have to + change the definition to something the rest of the link can + understand. */ + +boolean +mips_elf64_adjust_dynamic_symbol (info, h) + struct bfd_link_info *info; + struct elf_link_hash_entry *h; +{ + bfd *dynobj; + struct mips_elf64_link_hash_entry *hmips; + asection *s; + + dynobj = elf_hash_table (info)->dynobj; + + /* Make sure we know what is going on here. */ + BFD_ASSERT (dynobj != NULL + && ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) + || h->weakdef != NULL + || ((h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_REF_REGULAR) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0))); + + /* If this symbol is defined in a dynamic object, we need to copy + any R_MIPS_32 or R_MIPS_REL32 relocs against it into the output + file. */ + hmips = (struct mips_elf64_link_hash_entry *) h; + if (! info->relocateable + && hmips->possibly_dynamic_relocs != 0 + && (h->root.type == bfd_link_hash_defweak + || (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_REGULAR) == 0)) + { + mips_elf64_allocate_dynamic_relocations (dynobj, + hmips->possibly_dynamic_relocs); + if (hmips->readonly_reloc) + /* We tell the dynamic linker that there are relocations + against the text segment. */ + info->flags |= DF_TEXTREL; + } + + /* For a function, create a stub, if allowed. */ + if (! hmips->no_fn_stub + && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0) + { + if (! elf_hash_table (info)->dynamic_sections_created) + return true; + + /* If this symbol is not defined in a regular file, then set + the symbol to the stub location. This is required to make + function pointers compare as equal between the normal + executable and the shared library. */ + if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0) + { + /* We need .stub section. */ + s = bfd_get_section_by_name (dynobj, ".MIPS.stubs"); + BFD_ASSERT (s != NULL); + + h->root.u.def.section = s; + h->root.u.def.value = s->_raw_size; + + /* XXX Write this stub address somewhere. */ + h->plt.offset = s->_raw_size; + + /* Make room for this stub code. */ + s->_raw_size += MIPS_FUNCTION_STUB_SIZE; + + /* The last half word of the stub will be filled with the index + of this symbol in .dynsym section. */ + return true; + } + } + else if ((h->type == STT_FUNC) + && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) == 0) + { + /* This will set the entry for this symbol in the GOT to 0, and + the dynamic linker will take care of this. */ + h->root.u.def.value = 0; + return true; + } + + /* If this is a weak symbol, and there is a real definition, the + processor independent code will have arranged for us to see the + real definition first, and we can just use the same value. */ + if (h->weakdef != NULL) + { + BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined + || h->weakdef->root.type == bfd_link_hash_defweak); + h->root.u.def.section = h->weakdef->root.u.def.section; + h->root.u.def.value = h->weakdef->root.u.def.value; + return true; + } + + /* This is a reference to a symbol defined by a dynamic object which + is not a function. */ + + return true; +} + +/* This function is called after all the input files have been read, + and the input sections have been assigned to output sections. */ + +boolean +mips_elf64_always_size_sections (output_bfd, info) + bfd *output_bfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; +{ + if (info->relocateable + || ! mips_elf64_hash_table (info)->mips16_stubs_seen) + return true; + + mips_elf64_link_hash_traverse (mips_elf64_hash_table (info), + mips_elf64_check_mips16_stubs, + (PTR) NULL); + + return true; +} + +/* Check the mips16 stubs for a particular symbol, and see if we can + discard them. */ + +static boolean +mips_elf64_check_mips16_stubs (h, data) + struct mips_elf64_link_hash_entry *h; + PTR data ATTRIBUTE_UNUSED; +{ + if (h->fn_stub != NULL + && ! h->need_fn_stub) + { + /* We don't need the fn_stub; the only references to this symbol + are 16 bit calls. Clobber the size to 0 to prevent it from + being included in the link. */ + h->fn_stub->_raw_size = 0; + h->fn_stub->_cooked_size = 0; + h->fn_stub->flags &= ~SEC_RELOC; + h->fn_stub->reloc_count = 0; + h->fn_stub->flags |= SEC_EXCLUDE; + } + + if (h->call_stub != NULL + && h->root.other == STO_MIPS16) + { + /* We don't need the call_stub; this is a 16 bit function, so + calls from other 16 bit functions are OK. Clobber the size + to 0 to prevent it from being included in the link. */ + h->call_stub->_raw_size = 0; + h->call_stub->_cooked_size = 0; + h->call_stub->flags &= ~SEC_RELOC; + h->call_stub->reloc_count = 0; + h->call_stub->flags |= SEC_EXCLUDE; + } + + if (h->call_fp_stub != NULL + && h->root.other == STO_MIPS16) + { + /* We don't need the call_stub; this is a 16 bit function, so + calls from other 16 bit functions are OK. Clobber the size + to 0 to prevent it from being included in the link. */ + h->call_fp_stub->_raw_size = 0; + h->call_fp_stub->_cooked_size = 0; + h->call_fp_stub->flags &= ~SEC_RELOC; + h->call_fp_stub->reloc_count = 0; + h->call_fp_stub->flags |= SEC_EXCLUDE; + } + + return true; +} + +/* Set the sizes of the dynamic sections. */ + +boolean +mips_elf64_size_dynamic_sections (output_bfd, info) + bfd *output_bfd; + struct bfd_link_info *info; +{ + bfd *dynobj; + asection *s; + boolean reltext; + struct mips_elf64_got_info *g = NULL; + + dynobj = elf_hash_table (info)->dynobj; + BFD_ASSERT (dynobj != NULL); + + if (elf_hash_table (info)->dynamic_sections_created) + { + /* Set the contents of the .interp section to the interpreter. */ + if (! info->shared) + { + s = bfd_get_section_by_name (dynobj, ".interp"); + BFD_ASSERT (s != NULL); + s->_raw_size = strlen ("/usr/lib64/libc.so.1") + 1; + s->contents = (bfd_byte *) "/usr/lib64/libc.so.1"; + } + } + + /* The check_relocs and adjust_dynamic_symbol entry points have + determined the sizes of the various dynamic sections. Allocate + memory for them. */ + reltext = false; + for (s = dynobj->sections; s != NULL; s = s->next) + { + const char *name; + boolean strip; + + /* It's OK to base decisions on the section name, because none + of the dynobj section names depend upon the input files. */ + name = bfd_get_section_name (dynobj, s); + + if ((s->flags & SEC_LINKER_CREATED) == 0) + continue; + + strip = false; + + if (strncmp (name, ".rel", 4) == 0) + { + if (s->_raw_size == 0) + { + /* We only strip the section if the output section name + has the same name. Otherwise, there might be several + input sections for this output section. FIXME: This + code is probably not needed these days anyhow, since + the linker now does not create empty output sections. */ + if (s->output_section != NULL + && strcmp (name, + bfd_get_section_name (s->output_section->owner, + s->output_section)) == 0) + strip = true; + } + else + { + const char *outname; + asection *target; + + /* If this relocation section applies to a read only + section, then we probably need a DT_TEXTREL entry. + If the relocation section is .rel.dyn, we always + assert a DT_TEXTREL entry rather than testing whether + there exists a relocation to a read only section or + not. */ + outname = bfd_get_section_name (output_bfd, + s->output_section); + target = bfd_get_section_by_name (output_bfd, outname + 4); + if ((target != NULL + && (target->flags & SEC_READONLY) != 0 + && (target->flags & SEC_ALLOC) != 0) + || strcmp (outname, "rel.dyn") == 0) + reltext = true; + + /* We use the reloc_count field as a counter if we need + to copy relocs into the output file. */ + if (strcmp (name, "rel.dyn") != 0) + s->reloc_count = 0; + } + } + else if (strncmp (name, ".got", 4) == 0) + { + int i; + bfd_size_type loadable_size = 0; + bfd_size_type local_gotno; + bfd *sub; + + BFD_ASSERT (elf_section_data (s) != NULL); + g = (struct mips_elf64_got_info *) elf_section_data (s)->tdata; + BFD_ASSERT (g != NULL); + + /* Calculate the total loadable size of the output. That + will give us the maximum number of GOT_PAGE entries + required. */ + for (sub = info->input_bfds; sub; sub = sub->link_next) + { + asection *subsection; + + for (subsection = sub->sections; + subsection; + subsection = subsection->next) + { + if ((subsection->flags & SEC_ALLOC) == 0) + continue; + loadable_size += (subsection->_raw_size + 0xf) & ~0xf; + } + } + loadable_size += MIPS_FUNCTION_STUB_SIZE; + + /* Assume there are two loadable segments consisting of + contiguous sections. Is 5 enough? */ + local_gotno = (loadable_size >> 16) + 5; + /* It's possible we will need GOT_PAGE entries as well as + GOT16 entries. Often, these will be able to share GOT + entries, but not always. */ + local_gotno *= 2; + + g->local_gotno += local_gotno; + s->_raw_size += local_gotno * 8; + + /* There has to be a global GOT entry for every symbol with + a dynamic symbol table index of DT_MIPS_GOTSYM or + higher. Therefore, it make sense to put those symbols + that need GOT entries at the end of the symbol table. We + do that here. */ + if (!mips_elf64_sort_hash_table (info, 1)) + return false; + + if (g->global_gotsym != NULL) + i = elf_hash_table (info)->dynsymcount - g->global_gotsym->dynindx; + else + /* If there are no global symbols, or none requiring + relocations, then GLOBAL_GOTSYM will be NULL. */ + i = 0; + g->global_gotno = i; + s->_raw_size += i * 8; + } + else if (strcmp (name, ".MIPS.stubs") == 0) + { + /* 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; + } + else if (strcmp (name, ".msym") + == 0) + s->_raw_size = (sizeof (Elf32_External_Msym) + * (elf_hash_table (info)->dynsymcount + + bfd_count_sections (output_bfd))); + else if (strncmp (name, ".init", 5) != 0) + { + /* It's not one of our sections, so don't allocate space. */ + continue; + } + + if (strip) + { + _bfd_strip_section_from_output (info, s); + continue; + } + + /* Allocate memory for the section contents. */ + s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size); + if (s->contents == NULL && s->_raw_size != 0) + { + bfd_set_error (bfd_error_no_memory); + return false; + } + } + + if (elf_hash_table (info)->dynamic_sections_created) + { + /* Add some entries to the .dynamic section. We fill in the + values later, in elf_mips_finish_dynamic_sections, but we + must add the entries now so that we get the correct size for + the .dynamic section. The DT_DEBUG entry is filled in by the + dynamic linker and used by the debugger. */ + if (! info->shared) + { + /* SGI object has the equivalence of DT_DEBUG in the + DT_MIPS_RLD_MAP entry. */ + if (!bfd_elf64_add_dynamic_entry (info, DT_MIPS_RLD_MAP, 0)) + return false; + if (!SGI_COMPAT (output_bfd)) + { + if (!bfd_elf64_add_dynamic_entry (info, DT_DEBUG, 0)) + return false; + } + } + else + { + /* Shared libraries on traditional mips have DT_DEBUG. */ + if (!SGI_COMPAT (output_bfd)) + { + if (!bfd_elf64_add_dynamic_entry (info, DT_DEBUG, 0)) + return false; + } + } + + if (reltext && SGI_COMPAT (output_bfd)) + info->flags |= DF_TEXTREL; + + if ((info->flags & DF_TEXTREL) != 0) + { + if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0)) + return false; + } + + if (! bfd_elf64_add_dynamic_entry (info, DT_PLTGOT, 0)) + return false; + + if (bfd_get_section_by_name (dynobj, "rel.dyn")) + { + if (! bfd_elf64_add_dynamic_entry (info, DT_REL, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_RELSZ, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_RELENT, 0)) + return false; + } + + if (SGI_COMPAT (output_bfd)) + { + if (!bfd_elf64_add_dynamic_entry (info, DT_MIPS_CONFLICTNO, 0)) + return false; + } + + if (SGI_COMPAT (output_bfd)) + { + if (!bfd_elf64_add_dynamic_entry (info, DT_MIPS_LIBLISTNO, 0)) + return false; + } + + if (bfd_get_section_by_name (dynobj, ".conflict") != NULL) + { + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_CONFLICT, 0)) + return false; + + s = bfd_get_section_by_name (dynobj, ".liblist"); + BFD_ASSERT (s != NULL); + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_LIBLIST, 0)) + return false; + } + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_RLD_VERSION, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_FLAGS, 0)) + return false; + +#if 0 + /* Time stamps in executable files are a bad idea. */ + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_TIME_STAMP, 0)) + return false; +#endif + +#if 0 /* FIXME */ + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_ICHECKSUM, 0)) + return false; +#endif + +#if 0 /* FIXME */ + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_IVERSION, 0)) + return false; +#endif + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_BASE_ADDRESS, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_LOCAL_GOTNO, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_SYMTABNO, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_UNREFEXTNO, 0)) + return false; + + if (! bfd_elf64_add_dynamic_entry (info, DT_MIPS_GOTSYM, 0)) + return false; + + if ((bfd_get_section_by_name(dynobj, ".MIPS.options")) + && !bfd_elf64_add_dynamic_entry (info, DT_MIPS_OPTIONS, 0)) + return false; + + if (bfd_get_section_by_name (dynobj, ".msym") + && !bfd_elf64_add_dynamic_entry (info, DT_MIPS_MSYM, 0)) + return false; + } + + return true; +} + +/* Finish up dynamic symbol handling. We set the contents of various + dynamic sections here. */ + +boolean +mips_elf64_finish_dynamic_symbol (output_bfd, info, h, sym) + bfd *output_bfd; + struct bfd_link_info *info; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; +{ + bfd *dynobj; + bfd_vma gval; + asection *sgot; + asection *smsym; + struct mips_elf64_got_info *g; + const char *name; + struct mips_elf64_link_hash_entry *mh; + + dynobj = elf_hash_table (info)->dynobj; + gval = sym->st_value; + mh = (struct mips_elf64_link_hash_entry *) h; + + if (h->plt.offset != (bfd_vma) -1) + { + asection *s; + bfd_byte stub[MIPS_FUNCTION_STUB_SIZE]; + + /* This symbol has a stub. Set it up. */ + + BFD_ASSERT (h->dynindx != -1); + + s = bfd_get_section_by_name (dynobj, ".MIPS.stubs"); + BFD_ASSERT (s != NULL); + + /* FIXME: Can h->dynindex be more than 64K? */ + if (h->dynindx & 0xffff0000) + return false; + + /* Fill the stub. */ + bfd_put_32 (output_bfd, STUB_LW, stub); + bfd_put_32 (output_bfd, STUB_MOVE, stub + 4); + bfd_put_32 (output_bfd, STUB_JALR, stub + 8); + bfd_put_32 (output_bfd, STUB_LI16 + h->dynindx, stub + 12); + + BFD_ASSERT (h->plt.offset <= s->_raw_size); + memcpy (s->contents + h->plt.offset, stub, MIPS_FUNCTION_STUB_SIZE); + + /* Mark the symbol as undefined. plt.offset != -1 occurs + only for the referenced symbol. */ + sym->st_shndx = SHN_UNDEF; + + /* The run-time linker uses the st_value field of the symbol + to reset the global offset table entry for this external + to its stub address when unlinking a shared object. */ + gval = s->output_section->vma + s->output_offset + h->plt.offset; + sym->st_value = gval; + } + + BFD_ASSERT (h->dynindx != -1 + || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0); + + sgot = bfd_get_section_by_name (dynobj, ".got"); + BFD_ASSERT (sgot != NULL); + BFD_ASSERT (elf_section_data (sgot) != NULL); + g = (struct mips_elf64_got_info *) elf_section_data (sgot)->tdata; + BFD_ASSERT (g != NULL); + + /* Run through the global symbol table, creating GOT entries for all + the symbols that need them. */ + if (g->global_gotsym != NULL + && h->dynindx >= g->global_gotsym->dynindx) + { + bfd_vma offset; + bfd_vma value; + + if (sym->st_value) + value = sym->st_value; + else + { + /* For an entity defined in a shared object, this will be + NULL. (For functions in shared objects for + which we have created stubs, ST_VALUE will be non-NULL. + That's because such the functions are now no longer defined + in a shared object.) */ + + if (info->shared && h->root.type == bfd_link_hash_undefined) + value = 0; + else + value = h->root.u.def.value; + } + offset = mips_elf64_global_got_index (dynobj, h); + bfd_put_64 (output_bfd, value, sgot->contents + offset); + } + + /* Create a .msym entry, if appropriate. */ + smsym = bfd_get_section_by_name (dynobj, ".msym"); + if (smsym) + { + Elf32_Internal_Msym msym; + + msym.ms_hash_value = bfd_elf_hash (h->root.root.string); + /* It is undocumented what the `1' indicates, but IRIX6 uses + this value. */ + msym.ms_info = ELF32_MS_INFO (mh->min_dyn_reloc_index, 1); + mips_elf64_swap_msym_out + (dynobj, &msym, + ((Elf32_External_Msym *) smsym->contents) + h->dynindx); + } + + /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */ + name = h->root.root.string; + if (strcmp (name, "_DYNAMIC") == 0 + || strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) + sym->st_shndx = SHN_ABS; + else if (strcmp (name, "_DYNAMIC_LINK") == 0 + || strcmp (name, "_DYNAMIC_LINKING") == 0) + { + sym->st_shndx = SHN_ABS; + sym->st_info = ELF_ST_INFO (STB_GLOBAL, STT_SECTION); + sym->st_value = 1; + } + else if (sym->st_shndx != SHN_UNDEF && sym->st_shndx != SHN_ABS) + { + if (h->type == STT_FUNC) + sym->st_shndx = SHN_MIPS_TEXT; + else if (h->type == STT_OBJECT) + sym->st_shndx = SHN_MIPS_DATA; + } + + /* Handle the IRIX6-specific symbols. */ + + { + /* The linker script takes care of providing names and values for + these, but we must place them into the right sections. */ + static const char* const text_section_symbols[] = { + "_ftext", + "_etext", + "__dso_displacement", + "__elf_header", + "__program_header_table", + NULL + }; + + static const char* const data_section_symbols[] = { + "_fdata", + "_edata", + "_end", + "_fbss", + NULL + }; + + const char* const *p; + int i; + + for (i = 0; i < 2; ++i) + for (p = (i == 0) ? text_section_symbols : data_section_symbols; + *p; + ++p) + if (strcmp (*p, name) == 0) + { + /* All of these symbols are given type STT_SECTION by the + IRIX6 linker. */ + sym->st_info = ELF_ST_INFO (STB_GLOBAL, STT_SECTION); + + /* The IRIX linker puts these symbols in special sections. */ + if (i == 0) + sym->st_shndx = SHN_MIPS_TEXT; + else + sym->st_shndx = SHN_MIPS_DATA; + + break; + } + } + + return true; +} + +/* Finish up the dynamic sections. */ + +boolean +mips_elf64_finish_dynamic_sections (output_bfd, info) + bfd *output_bfd; + struct bfd_link_info *info; +{ + bfd *dynobj; + asection *sdyn; + asection *sgot; + struct mips_elf64_got_info *g; + + dynobj = elf_hash_table (info)->dynobj; + + sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); + + sgot = bfd_get_section_by_name (dynobj, ".got"); + if (sgot == NULL) + g = NULL; + else + { + BFD_ASSERT (elf_section_data (sgot) != NULL); + g = (struct mips_elf64_got_info *) elf_section_data (sgot)->tdata; + BFD_ASSERT (g != NULL); + } + + if (elf_hash_table (info)->dynamic_sections_created) + { + bfd_byte *b; + + BFD_ASSERT (sdyn != NULL); + BFD_ASSERT (g != NULL); + + for (b = sdyn->contents; + b < sdyn->contents + sdyn->_raw_size; + b += get_elf_backend_data (dynobj)->s->sizeof_dyn) + { + Elf_Internal_Dyn dyn; + const char *name; + size_t elemsize; + asection *s; + boolean swap_out_p; + + /* Read in the current dynamic entry. */ + (*get_elf_backend_data (dynobj)->s->swap_dyn_in) (dynobj, b, &dyn); + + /* Assume that we're going to modify it and write it out. */ + swap_out_p = true; + + switch (dyn.d_tag) + { + case DT_RELENT: + s = bfd_get_section_by_name(dynobj, "rel.dyn"); + BFD_ASSERT (s != NULL); + dyn.d_un.d_val = get_elf_backend_data (dynobj)->s->sizeof_rel; + break; + + case DT_STRSZ: + /* Rewrite DT_STRSZ. */ + dyn.d_un.d_val = + _bfd_elf_strtab_size (elf_hash_table (info)->dynstr); + break; + + case DT_PLTGOT: + name = ".got"; + goto get_vma; + case DT_MIPS_CONFLICT: + name = ".conflict"; + goto get_vma; + case DT_MIPS_LIBLIST: + name = ".liblist"; + get_vma: + s = bfd_get_section_by_name (output_bfd, name); + BFD_ASSERT (s != NULL); + dyn.d_un.d_ptr = s->vma; + break; + + case DT_MIPS_RLD_VERSION: + dyn.d_un.d_val = 1; /* XXX */ + break; + + case DT_MIPS_FLAGS: + dyn.d_un.d_val = RHF_NOTPOT; /* XXX */ + break; + + case DT_MIPS_CONFLICTNO: + name = ".conflict"; + elemsize = sizeof (Elf32_Conflict); + goto set_elemno; + + case DT_MIPS_LIBLISTNO: + name = ".liblist"; + elemsize = sizeof (Elf32_Lib); + set_elemno: + s = bfd_get_section_by_name (output_bfd, name); + if (s != NULL) + { + if (s->_cooked_size != 0) + dyn.d_un.d_val = s->_cooked_size / elemsize; + else + dyn.d_un.d_val = s->_raw_size / elemsize; + } + else + dyn.d_un.d_val = 0; + break; + + case DT_MIPS_TIME_STAMP: + time ((time_t *) &dyn.d_un.d_val); + break; + + case DT_MIPS_ICHECKSUM: + /* XXX FIXME: */ + swap_out_p = false; + break; + + case DT_MIPS_IVERSION: + /* XXX FIXME: */ + swap_out_p = false; + break; + + case DT_MIPS_BASE_ADDRESS: + s = output_bfd->sections; + BFD_ASSERT (s != NULL); + dyn.d_un.d_ptr = s->vma & ~(0xffff); + break; + + case DT_MIPS_LOCAL_GOTNO: + dyn.d_un.d_val = g->local_gotno; + break; + + case DT_MIPS_UNREFEXTNO: + /* The index into the dynamic symbol table which is the + entry of the first external symbol that is not + referenced within the same object. */ + dyn.d_un.d_val = bfd_count_sections (output_bfd) + 1; + break; + + case DT_MIPS_GOTSYM: + if (g->global_gotsym) + { + dyn.d_un.d_val = g->global_gotsym->dynindx; + break; + } + /* In case if we don't have global got symbols we default + to setting DT_MIPS_GOTSYM to the same value as + DT_MIPS_SYMTABNO, so we just fall through. */ + + case DT_MIPS_SYMTABNO: + name = ".dynsym"; + elemsize = get_elf_backend_data (output_bfd)->s->sizeof_sym; + s = bfd_get_section_by_name (output_bfd, name); + BFD_ASSERT (s != NULL); + + if (s->_cooked_size != 0) + dyn.d_un.d_val = s->_cooked_size / elemsize; + else + dyn.d_un.d_val = s->_raw_size / elemsize; + break; + + case DT_MIPS_HIPAGENO: + dyn.d_un.d_val = g->local_gotno - MIPS_RESERVED_GOTNO; + break; + + case DT_MIPS_OPTIONS: + s = bfd_get_section_by_name(output_bfd, ".MIPS.options"); + dyn.d_un.d_ptr = s->vma; + break; + + case DT_MIPS_MSYM: + s = bfd_get_section_by_name(output_bfd, ".msym"); + dyn.d_un.d_ptr = s->vma; + break; + + default: + swap_out_p = false; + break; + } + + if (swap_out_p) + (*get_elf_backend_data (dynobj)->s->swap_dyn_out) + (dynobj, &dyn, b); + } + } + + /* 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. */ + if (sgot != NULL && sgot->_raw_size > 0) + { + bfd_put_64 (output_bfd, (bfd_vma) 0, sgot->contents); + bfd_put_64 (output_bfd, (bfd_vma) 0x80000000, sgot->contents + 8); + } + + if (sgot != NULL) + elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 8; + + { + asection *smsym; + asection *s; + + /* ??? The section symbols for the output sections were set up in + _bfd_elf_final_link. SGI sets the STT_NOTYPE attribute for these + symbols. Should we do so? */ + + smsym = bfd_get_section_by_name (dynobj, ".msym"); + if (smsym != NULL) + { + Elf32_Internal_Msym msym; + + msym.ms_hash_value = 0; + msym.ms_info = ELF32_MS_INFO (0, 1); + + for (s = output_bfd->sections; s != NULL; s = s->next) + { + long dynindx = elf_section_data (s)->dynindx; + + mips_elf64_swap_msym_out + (output_bfd, &msym, + (((Elf32_External_Msym *) smsym->contents) + + dynindx)); + } + } + + /* Clean up a first relocation in .rel.dyn. */ + s = bfd_get_section_by_name (dynobj, "rel.dyn"); + if (s != NULL && s->_raw_size > 0) + memset (s->contents, 0, get_elf_backend_data (dynobj)->s->sizeof_rel); + } + + return true; +} + +/* Return the section that should be marked against GC for a given + relocation. */ + +asection * +mips_elf64_gc_mark_hook (abfd, info, rel, h, sym) + bfd *abfd; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + Elf_Internal_Rela *rel; + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; +{ + if (h != NULL) + { + switch (ELF64_R_TYPE (rel->r_info)) + { + case R_MIPS_GNU_VTINHERIT: + case R_MIPS_GNU_VTENTRY: + break; + + default: + switch (h->root.type) + { + case bfd_link_hash_defined: + case bfd_link_hash_defweak: + return h->root.u.def.section; + + case bfd_link_hash_common: + return h->root.u.c.p->section; + + default: + break; + } + } + } + else + { + return bfd_section_from_elf_index (abfd, sym->st_shndx); + } + + return NULL; +} + +/* Update the got entry reference counts for the section being removed. */ + +boolean +mips_elf64_gc_sweep_hook (abfd, info, sec, relocs) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +{ +#if 0 + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + bfd_signed_vma *local_got_refcounts; + const Elf_Internal_Rela *rel, *relend; + unsigned long r_symndx; + struct elf_link_hash_entry *h; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + local_got_refcounts = elf_local_got_refcounts (abfd); + + relend = relocs + sec->reloc_count; + for (rel = relocs; rel < relend; rel++) + switch (ELF64_R_TYPE (rel->r_info)) + { + case R_MIPS_GOT16: + case R_MIPS_CALL16: + case R_MIPS_CALL_HI16: + case R_MIPS_CALL_LO16: + case R_MIPS_GOT_HI16: + case R_MIPS_GOT_LO16: + /* ??? It would seem that the existing MIPS code does no sort + of reference counting or whatnot on its GOT and PLT entries, + so it is not possible to garbage collect them at this time. */ + break; + + default: + break; + } +#endif + + return true; +} + +/* Create the .got section to hold the global offset table. */ + +static boolean +mips_elf64_create_got_section (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + flagword flags; + register asection *s; + struct elf_link_hash_entry *h; + struct mips_elf64_got_info *g; + + /* This function may be called more than once. */ + if (bfd_get_section_by_name (abfd, ".got")) + return true; + + flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + s = bfd_make_section (abfd, ".got"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags) + || ! bfd_set_section_alignment (abfd, s, 4)) + return false; + + /* Define the symbol _GLOBAL_OFFSET_TABLE_. We don't do this in the + linker script because we don't want to define the symbol if we + are not creating a global offset table. */ + h = NULL; + if (! (_bfd_generic_link_add_one_symbol + (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s, + (bfd_vma) 0, (const char *) NULL, false, + get_elf_backend_data (abfd)->collect, + (struct bfd_link_hash_entry **) &h))) + return false; + h->elf_link_hash_flags &=~ ELF_LINK_NON_ELF; + h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR; + h->type = STT_OBJECT; + + if (info->shared + && ! bfd_elf64_link_record_dynamic_symbol (info, h)) + return false; + + /* The first several global offset table entries are reserved. */ + s->_raw_size = MIPS_RESERVED_GOTNO * (get_elf_backend_data (abfd)->s->arch_size / 8); + + g = (struct mips_elf64_got_info *) bfd_alloc (abfd, + sizeof (struct mips_elf64_got_info)); + if (g == NULL) + return false; + g->global_gotsym = NULL; + g->local_gotno = MIPS_RESERVED_GOTNO; + g->assigned_gotno = MIPS_RESERVED_GOTNO; + if (elf_section_data (s) == NULL) + { + s->used_by_bfd = + (PTR) bfd_zalloc (abfd, sizeof (struct bfd_elf_section_data)); + if (elf_section_data (s) == NULL) + return false; + } + elf_section_data (s)->tdata = (PTR) g; + elf_section_data (s)->this_hdr.sh_flags + |= SHF_ALLOC | SHF_WRITE | SHF_MIPS_GPREL; + + return true; +} + +/* If H is a symbol that needs a global GOT entry, but has a dynamic + symbol table index lower than any we've seen to date, record it for + posterity. */ + +static boolean +mips_elf64_record_global_got_symbol (h, info, g) + struct elf_link_hash_entry *h; + struct bfd_link_info *info; + struct mips_elf64_got_info *g ATTRIBUTE_UNUSED; +{ + /* A global symbol in the GOT must also be in the dynamic symbol + table. */ + if (h->dynindx == -1 + && !bfd_elf64_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. */ + if (h->got.offset != (bfd_vma) - 1) + return true; + + /* By setting this to a value other than -1, we are indicating that + there needs to be a GOT entry for H. Avoid using zero, as the + generic ELF copy_indirect_symbol tests for <= 0. */ + h->got.offset = 1; + + return true; +} + +/* Returns the .msym section for ABFD, creating it if it does not + already exist. Returns NULL to indicate error. */ + +static asection * +mips_elf64_create_msym_section (abfd) + bfd *abfd; +{ + asection *s; + + s = bfd_get_section_by_name (abfd, ".msym"); + if (!s) + { + s = bfd_make_section (abfd, ".msym"); + if (!s + || !bfd_set_section_flags (abfd, s, + SEC_ALLOC + | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_LINKER_CREATED + | SEC_READONLY) + || !bfd_set_section_alignment (abfd, s, 3)) + return NULL; + } + + return s; +} + +/* Add room for N relocations to the .rel.dyn section in ABFD. */ + +static void +mips_elf64_allocate_dynamic_relocations (abfd, n) + bfd *abfd; + unsigned int n; +{ + asection *s; + + s = bfd_get_section_by_name (abfd, ".rel.dyn"); + BFD_ASSERT (s != NULL); + + if (s->_raw_size == 0) + { + /* Make room for a null element. */ + s->_raw_size += get_elf_backend_data (abfd)->s->sizeof_rel; + ++s->reloc_count; + } + s->_raw_size += n * get_elf_backend_data (abfd)->s->sizeof_rel; +} + +/* Look through the relocs for a section during the first phase, and + allocate space in the global offset table. */ + +boolean +mips_elf64_check_relocs (abfd, info, sec, relocs) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; + const Elf_Internal_Rela *relocs; +{ + const char *name; + bfd *dynobj; + Elf_Internal_Shdr *symtab_hdr; + struct elf_link_hash_entry **sym_hashes; + struct mips_elf64_got_info *g; + size_t extsymoff; + const Elf_Internal_Rela *rel; + const Elf_Internal_Rela *rel_end; + asection *sgot; + asection *sreloc; + struct elf_backend_data *bed; + + if (info->relocateable) + return true; + + dynobj = elf_hash_table (info)->dynobj; + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + sym_hashes = elf_sym_hashes (abfd); + extsymoff = (elf_bad_symtab (abfd)) ? 0 : symtab_hdr->sh_info; + + /* Check for the mips16 stub sections. */ + + name = bfd_get_section_name (abfd, sec); + if (strncmp (name, FN_STUB, sizeof FN_STUB - 1) == 0) + { + unsigned long r_symndx; + + /* Look at the relocation information to figure out which symbol + this is for. */ + + r_symndx = ELF64_R_SYM (relocs->r_info); + + if (r_symndx < extsymoff + || sym_hashes[r_symndx - extsymoff] == NULL) + { + asection *o; + + /* This stub is for a local symbol. This stub will only be + needed if there is some relocation in this BFD, other + than a 16 bit function call, which refers to this symbol. */ + for (o = abfd->sections; o != NULL; o = o->next) + { + Elf_Internal_Rela *sec_relocs; + const Elf_Internal_Rela *r, *rend; + + /* We can ignore stub sections when looking for relocs. */ + if ((o->flags & SEC_RELOC) == 0 + || o->reloc_count == 0 + || strncmp (bfd_get_section_name (abfd, o), FN_STUB, + sizeof FN_STUB - 1) == 0 + || strncmp (bfd_get_section_name (abfd, o), CALL_STUB, + sizeof CALL_STUB - 1) == 0 + || strncmp (bfd_get_section_name (abfd, o), CALL_FP_STUB, + sizeof CALL_FP_STUB - 1) == 0) + continue; + + sec_relocs = (_bfd_elf64_link_read_relocs + (abfd, o, (PTR) NULL, + (Elf_Internal_Rela *) NULL, + info->keep_memory)); + if (sec_relocs == NULL) + return false; + + rend = sec_relocs + o->reloc_count; + for (r = sec_relocs; r < rend; r++) + if (ELF64_R_SYM (r->r_info) == r_symndx + && ELF64_R_TYPE (r->r_info) != R_MIPS16_26) + break; + + if (! info->keep_memory) + free (sec_relocs); + + if (r < rend) + break; + } + + if (o == NULL) + { + /* There is no non-call reloc for this stub, so we do + not need it. Since this function is called before + the linker maps input sections to output sections, we + can easily discard it by setting the SEC_EXCLUDE + flag. */ + sec->flags |= SEC_EXCLUDE; + return true; + } + + /* Record this stub in an array of local symbol stubs for + this BFD. */ + if (elf_tdata (abfd)->local_stubs == NULL) + { + unsigned long symcount; + asection **n; + bfd_size_type amt; + + if (elf_bad_symtab (abfd)) + symcount = NUM_SHDR_ENTRIES (symtab_hdr); + else + symcount = symtab_hdr->sh_info; + amt = symcount * sizeof (asection *); + n = (asection **) bfd_zalloc (abfd, amt); + if (n == NULL) + return false; + elf_tdata (abfd)->local_stubs = n; + } + + elf_tdata (abfd)->local_stubs[r_symndx] = sec; + + /* We don't need to set mips16_stubs_seen in this case. + That flag is used to see whether we need to look through + the global symbol table for stubs. We don't need to set + it here, because we just have a local stub. */ + } + else + { + struct mips_elf64_link_hash_entry *h; + + h = ((struct mips_elf64_link_hash_entry *) + sym_hashes[r_symndx - extsymoff]); + + /* H is the symbol this stub is for. */ + + h->fn_stub = sec; + mips_elf64_hash_table (info)->mips16_stubs_seen = true; + } + } + else if (strncmp (name, CALL_STUB, sizeof CALL_STUB - 1) == 0 + || strncmp (name, CALL_FP_STUB, sizeof CALL_FP_STUB - 1) == 0) + { + unsigned long r_symndx; + struct mips_elf64_link_hash_entry *h; + asection **loc; + + /* Look at the relocation information to figure out which symbol + this is for. */ + + r_symndx = ELF64_R_SYM (relocs->r_info); + + if (r_symndx < extsymoff + || sym_hashes[r_symndx - extsymoff] == NULL) + { + /* This stub was actually built for a static symbol defined + in the same file. We assume that all static symbols in + mips16 code are themselves mips16, so we can simply + discard this stub. Since this function is called before + the linker maps input sections to output sections, we can + easily discard it by setting the SEC_EXCLUDE flag. */ + sec->flags |= SEC_EXCLUDE; + return true; + } + + h = ((struct mips_elf64_link_hash_entry *) + sym_hashes[r_symndx - extsymoff]); + + /* H is the symbol this stub is for. */ + + if (strncmp (name, CALL_FP_STUB, sizeof CALL_FP_STUB - 1) == 0) + loc = &h->call_fp_stub; + else + loc = &h->call_stub; + + /* If we already have an appropriate stub for this function, we + don't need another one, so we can discard this one. Since + this function is called before the linker maps input sections + to output sections, we can easily discard it by setting the + SEC_EXCLUDE flag. We can also discard this section if we + happen to already know that this is a mips16 function; it is + not necessary to check this here, as it is checked later, but + it is slightly faster to check now. */ + if (*loc != NULL || h->root.other == STO_MIPS16) + { + sec->flags |= SEC_EXCLUDE; + return true; + } + + *loc = sec; + mips_elf64_hash_table (info)->mips16_stubs_seen = true; + } + + if (dynobj == NULL) + { + sgot = NULL; + g = NULL; + } + else + { + sgot = bfd_get_section_by_name (dynobj, ".got"); + if (sgot == NULL) + g = NULL; + else + { + BFD_ASSERT (elf_section_data (sgot) != NULL); + g = (struct mips_elf64_got_info *) elf_section_data (sgot)->tdata; + BFD_ASSERT (g != NULL); + } + } + + sreloc = NULL; + bed = get_elf_backend_data (abfd); + rel_end = relocs + sec->reloc_count * bed->s->int_rels_per_ext_rel; + for (rel = relocs; rel < rel_end; ++rel) + { + unsigned long r_symndx; + int r_type; + struct elf_link_hash_entry *h; + + r_symndx = ELF64_R_SYM (rel->r_info); + r_type = ELF64_MIPS_R_TYPE (rel->r_info); + + if (r_symndx < extsymoff) + h = NULL; + else if (r_symndx >= extsymoff + NUM_SHDR_ENTRIES (symtab_hdr)) + { + (*_bfd_error_handler) + (_("%s: Malformed reloc detected for section %s"), + bfd_archive_filename (abfd), name); + bfd_set_error (bfd_error_bad_value); + return false; + } + else + { + h = sym_hashes[r_symndx - extsymoff]; + + /* This may be an indirect symbol created because of a version. */ + if (h != NULL) + { + while (h->root.type == bfd_link_hash_indirect) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + } + } + + /* Some relocs require a global offset table. */ + if (dynobj == NULL || sgot == NULL) + { + switch (r_type) + { + case R_MIPS_GOT16: + case R_MIPS_CALL16: + case R_MIPS_CALL_HI16: + case R_MIPS_CALL_LO16: + case R_MIPS_GOT_HI16: + case R_MIPS_GOT_LO16: + case R_MIPS_GOT_PAGE: + case R_MIPS_GOT_OFST: + case R_MIPS_GOT_DISP: + if (dynobj == NULL) + elf_hash_table (info)->dynobj = dynobj = abfd; + if (! mips_elf64_create_got_section (dynobj, info)) + return false; + g = _mips_elf64_got_info (dynobj, &sgot); + break; + + case R_MIPS_32: + case R_MIPS_REL32: + case R_MIPS_64: + if (dynobj == NULL + && (info->shared || h != NULL) + && (sec->flags & SEC_ALLOC) != 0) + elf_hash_table (info)->dynobj = dynobj = abfd; + break; + + default: + break; + } + } + + if (!h && (r_type == R_MIPS_CALL_LO16 + || r_type == R_MIPS_GOT_LO16 + || r_type == R_MIPS_GOT_DISP)) + { + /* We may need a local GOT entry for this relocation. We + don't count R_MIPS_GOT_PAGE because we can estimate the + maximum number of pages needed by looking at the size of + the segment. Similar comments apply to R_MIPS_GOT16 and + R_MIPS_CALL16. We don't count R_MIPS_GOT_HI16, or + R_MIPS_CALL_HI16 because these are always followed by an + R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16. + + This estimation is very conservative since we can merge + duplicate entries in the GOT. In order to be less + conservative, we could actually build the GOT here, + rather than in relocate_section. */ + g->local_gotno++; + sgot->_raw_size += get_elf_backend_data (dynobj)->s->arch_size / 8; + } + + switch (r_type) + { + case R_MIPS_CALL16: + if (h == NULL) + { + (*_bfd_error_handler) + (_("%s: CALL16 reloc at 0x%lx not against global symbol"), + bfd_archive_filename (abfd), (unsigned long) rel->r_offset); + bfd_set_error (bfd_error_bad_value); + return false; + } + /* Fall through. */ + + case R_MIPS_CALL_HI16: + case R_MIPS_CALL_LO16: + if (h != NULL) + { + /* This symbol requires a global offset table entry. */ + if (!mips_elf64_record_global_got_symbol (h, info, g)) + return false; + + /* We need a stub, not a plt entry for the undefined + function. But we record it as if it needs plt. See + elf_adjust_dynamic_symbol in elflink.h. */ + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + h->type = STT_FUNC; + } + break; + + case R_MIPS_GOT16: + case R_MIPS_GOT_HI16: + case R_MIPS_GOT_LO16: + case R_MIPS_GOT_DISP: + /* This symbol requires a global offset table entry. */ + if (h && !mips_elf64_record_global_got_symbol (h, info, g)) + return false; + break; + + case R_MIPS_32: + case R_MIPS_REL32: + case R_MIPS_64: + if ((info->shared || h != NULL) + && (sec->flags & SEC_ALLOC) != 0) + { + if (sreloc == NULL) + { + const char *name = ".rel.dyn"; + + sreloc = bfd_get_section_by_name (dynobj, name); + if (sreloc == NULL) + { + sreloc = bfd_make_section (dynobj, name); + if (sreloc == NULL + || ! bfd_set_section_flags (dynobj, sreloc, + (SEC_ALLOC + | SEC_LOAD + | SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED + | SEC_READONLY)) + || ! bfd_set_section_alignment (dynobj, sreloc, + 4)) + return false; + } + } +#define MIPS_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY) + if (info->shared) + { + /* When creating a shared object, we must copy these + reloc types into the output file as R_MIPS_REL32 + relocs. We make room for this reloc in the + .rel.dyn reloc section. */ + mips_elf64_allocate_dynamic_relocations (dynobj, 1); + if ((sec->flags & MIPS_READONLY_SECTION) + == MIPS_READONLY_SECTION) + /* We tell the dynamic linker that there are + relocations against the text segment. */ + info->flags |= DF_TEXTREL; + } + else + { + struct mips_elf64_link_hash_entry *hmips; + + /* We only need to copy this reloc if the symbol is + defined in a dynamic object. */ + hmips = (struct mips_elf64_link_hash_entry *) h; + ++hmips->possibly_dynamic_relocs; + if ((sec->flags & MIPS_READONLY_SECTION) + == MIPS_READONLY_SECTION) + /* We need it to tell the dynamic linker if there + are relocations against the text segment. */ + hmips->readonly_reloc = true; + } + + /* Even though we don't directly need a GOT entry for + this symbol, a symbol must have a dynamic symbol + table index greater that DT_MIPS_GOTSYM if there are + dynamic relocations against it. */ + if (h != NULL + && !mips_elf64_record_global_got_symbol (h, info, g)) + return false; + } + break; + + case R_MIPS_26: + case R_MIPS_GPREL16: + case R_MIPS_LITERAL: + case R_MIPS_GPREL32: + break; + + /* This relocation describes the C++ object vtable hierarchy. + Reconstruct it for later use during GC. */ + case R_MIPS_GNU_VTINHERIT: + if (!_bfd_elf64_gc_record_vtinherit (abfd, sec, h, rel->r_offset)) + return false; + break; + + /* This relocation describes which C++ vtable entries are actually + used. Record for later use during GC. */ + case R_MIPS_GNU_VTENTRY: + if (!_bfd_elf64_gc_record_vtentry (abfd, sec, h, rel->r_offset)) + return false; + break; + + default: + break; + } + } + + return true; } - -/* Irix 6 defines a brand new archive map format, so that they can - have archives more than 4 GB in size. */ -/* Read an Irix 6 armap. */ +/* Structure used to pass information to mips_elf64_output_extsym. */ -static boolean -mips_elf64_slurp_armap (abfd) - bfd *abfd; +struct extsym_info { - struct artdata *ardata = bfd_ardata (abfd); - char nextname[17]; - file_ptr arhdrpos; - bfd_size_type i, parsed_size, nsymz, stringsize, carsym_size, ptrsize; - struct areltdata *mapdata; - bfd_byte int_buf[8]; - char *stringbase; - bfd_byte *raw_armap = NULL; - carsym *carsyms; - bfd_size_type amt; + bfd *abfd; + struct bfd_link_info *info; + struct ecoff_debug_info *debug; + const struct ecoff_debug_swap *swap; + boolean failed; +}; + +/* This routine is used to write out ECOFF debugging external symbol + information. It is called via mips_elf64_link_hash_traverse. The + ECOFF external symbol information must match the ELF external + symbol information. Unfortunately, at this point we don't know + whether a symbol is required by reloc information, so the two + tables may wind up being different. We must sort out the external + symbol information before we can set the final size of the .mdebug + section, and we must set the size of the .mdebug section before we + can relocate any sections, and we can't know which symbols are + required by relocation until we relocate the sections. + Fortunately, it is relatively unlikely that any symbol will be + stripped but required by a reloc. In particular, it can not happen + when generating a final executable. */ - ardata->symdefs = NULL; +static boolean +mips_elf64_output_extsym (h, data) + struct mips_elf64_link_hash_entry *h; + PTR data; +{ + struct extsym_info *einfo = (struct extsym_info *) data; + boolean strip; + asection *sec, *output_section; + + if (h->root.indx == -2) + strip = false; + else if (((h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + || (h->root.elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0) + && (h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0 + && (h->root.elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR) == 0) + strip = true; + else if (einfo->info->strip == strip_all + || (einfo->info->strip == strip_some + && bfd_hash_lookup (einfo->info->keep_hash, + h->root.root.root.string, + false, false) == NULL)) + strip = true; + else + strip = false; - /* Get the name of the first element. */ - arhdrpos = bfd_tell (abfd); - i = bfd_bread ((PTR) nextname, (bfd_size_type) 16, abfd); - if (i == 0) + if (strip) return true; - if (i != 16) - return false; - if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0) - return false; + if (h->esym.ifd == -2) + { + h->esym.jmptbl = 0; + h->esym.cobol_main = 0; + h->esym.weakext = 0; + h->esym.reserved = 0; + h->esym.ifd = ifdNil; + h->esym.asym.value = 0; + h->esym.asym.st = stGlobal; + + if (h->root.root.type == bfd_link_hash_undefined + || h->root.root.type == bfd_link_hash_undefweak) + { + const char *name; + + /* Use undefined class. Also, set class and type for some + special symbols. */ + name = h->root.root.root.string; + h->esym.asym.sc = scUndefined; + } + else if (h->root.root.type != bfd_link_hash_defined + && h->root.root.type != bfd_link_hash_defweak) + h->esym.asym.sc = scAbs; + else + { + const char *name; + + sec = h->root.root.u.def.section; + output_section = sec->output_section; + + /* When making a shared library and symbol h is the one from + the another shared library, OUTPUT_SECTION may be null. */ + if (output_section == NULL) + h->esym.asym.sc = scUndefined; + else + { + name = bfd_section_name (output_section->owner, output_section); + + if (strcmp (name, ".text") == 0) + h->esym.asym.sc = scText; + else if (strcmp (name, ".data") == 0) + h->esym.asym.sc = scData; + else if (strcmp (name, ".sdata") == 0) + h->esym.asym.sc = scSData; + else if (strcmp (name, ".rodata") == 0 + || strcmp (name, ".rdata") == 0) + h->esym.asym.sc = scRData; + else if (strcmp (name, ".bss") == 0) + h->esym.asym.sc = scBss; + else if (strcmp (name, ".sbss") == 0) + h->esym.asym.sc = scSBss; + else if (strcmp (name, ".init") == 0) + h->esym.asym.sc = scInit; + else if (strcmp (name, ".fini") == 0) + h->esym.asym.sc = scFini; + else + h->esym.asym.sc = scAbs; + } + } - /* Archives with traditional armaps are still permitted. */ - if (strncmp (nextname, "/ ", 16) == 0) - return bfd_slurp_armap (abfd); + h->esym.asym.reserved = 0; + h->esym.asym.index = indexNil; + } - if (strncmp (nextname, "/SYM64/ ", 16) != 0) + if (h->root.root.type == bfd_link_hash_common) + h->esym.asym.value = h->root.root.u.c.size; + else if (h->root.root.type == bfd_link_hash_defined + || h->root.root.type == bfd_link_hash_defweak) { - bfd_has_map (abfd) = false; - return true; + if (h->esym.asym.sc == scCommon) + h->esym.asym.sc = scBss; + else if (h->esym.asym.sc == scSCommon) + h->esym.asym.sc = scSBss; + + sec = h->root.root.u.def.section; + output_section = sec->output_section; + if (output_section != NULL) + h->esym.asym.value = (h->root.root.u.def.value + + sec->output_offset + + output_section->vma); + else + h->esym.asym.value = 0; } + else if ((h->root.elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0) + { + struct mips_elf64_link_hash_entry *hd = h; + boolean no_fn_stub = h->no_fn_stub; - mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd); - if (mapdata == NULL) - return false; - parsed_size = mapdata->parsed_size; - bfd_release (abfd, (PTR) mapdata); + while (hd->root.root.type == bfd_link_hash_indirect) + { + hd = (struct mips_elf64_link_hash_entry *)h->root.root.u.i.link; + no_fn_stub = no_fn_stub || hd->no_fn_stub; + } + + if (!no_fn_stub) + { + /* Set type and value for a symbol with a function stub. */ + h->esym.asym.st = stProc; + sec = hd->root.root.u.def.section; + if (sec == NULL) + h->esym.asym.value = 0; + else + { + output_section = sec->output_section; + if (output_section != NULL) + h->esym.asym.value = (hd->root.plt.offset + + sec->output_offset + + output_section->vma); + else + h->esym.asym.value = 0; + } +#if 0 /* FIXME? */ + h->esym.ifd = 0; +#endif + } + } - if (bfd_bread (int_buf, (bfd_size_type) 8, abfd) != 8) + if (! bfd_ecoff_debug_one_external (einfo->abfd, einfo->debug, einfo->swap, + h->root.root.root.string, + &h->esym)) { - if (bfd_get_error () != bfd_error_system_call) - bfd_set_error (bfd_error_malformed_archive); + einfo->failed = true; return false; } - nsymz = bfd_getb64 (int_buf); - stringsize = parsed_size - 8 * nsymz - 8; + return true; +} - carsym_size = nsymz * sizeof (carsym); - ptrsize = 8 * nsymz; +/* Swap an entry in a .gptab section. Note that these routines rely + on the equivalence of the two elements of the union. */ - amt = carsym_size + stringsize + 1; - ardata->symdefs = (carsym *) bfd_zalloc (abfd, amt); - if (ardata->symdefs == NULL) - return false; - carsyms = ardata->symdefs; - stringbase = ((char *) ardata->symdefs) + carsym_size; +static void +mips_elf64_swap_gptab_in (abfd, ex, in) + bfd *abfd; + const Elf32_External_gptab *ex; + Elf32_gptab *in; +{ + in->gt_entry.gt_g_value = H_GET_32 (abfd, ex->gt_entry.gt_g_value); + in->gt_entry.gt_bytes = H_GET_32 (abfd, ex->gt_entry.gt_bytes); +} - raw_armap = (bfd_byte *) bfd_alloc (abfd, ptrsize); - if (raw_armap == NULL) - goto error_return; +static void +mips_elf64_swap_gptab_out (abfd, in, ex) + bfd *abfd; + const Elf32_gptab *in; + Elf32_External_gptab *ex; +{ + H_PUT_32 (abfd, (bfd_vma) in->gt_entry.gt_g_value, + ex->gt_entry.gt_g_value); + H_PUT_32 (abfd, (bfd_vma) in->gt_entry.gt_bytes, + ex->gt_entry.gt_bytes); +} + +/* A comparison routine used to sort .gptab entries. */ + +static int +gptab_compare (p1, p2) + const PTR p1; + const PTR p2; +{ + const Elf32_gptab *a1 = (const Elf32_gptab *) p1; + const Elf32_gptab *a2 = (const Elf32_gptab *) p2; + + return a1->gt_entry.gt_g_value - a2->gt_entry.gt_g_value; +} + +/* We need to use a special link routine to handle the .mdebug section. + We need to merge all instances of this section together, not write + them all out sequentially. */ + +boolean +mips_elf64_final_link (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + asection **secpp; + asection *o; + struct bfd_link_order *p; + asection *mdebug_sec, *gptab_data_sec, *gptab_bss_sec; + struct ecoff_debug_info debug; + const struct ecoff_debug_swap *swap + = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap; + HDRR *symhdr = &debug.symbolic_header; + PTR mdebug_handle = NULL; + asection *s; + EXTR esym; + unsigned int i; + static const char * const secname[] = + { ".text", ".init", ".fini", ".data", + ".rodata", ".sdata", ".sbss", ".bss" }; + static const int sc[] = { scText, scInit, scFini, scData, + scRData, scSData, scSBss, scBss }; + + /* If all the things we linked together were PIC, but we're + producing an executable (rather than a shared object), then the + resulting file is CPIC (i.e., it calls PIC code.) */ + if (!info->shared + && !info->relocateable + && elf_elfheader (abfd)->e_flags & EF_MIPS_PIC) + { + elf_elfheader (abfd)->e_flags &= ~EF_MIPS_PIC; + elf_elfheader (abfd)->e_flags |= EF_MIPS_CPIC; + } - if (bfd_bread (raw_armap, ptrsize, abfd) != ptrsize - || bfd_bread (stringbase, stringsize, abfd) != stringsize) + /* We'd carefully arranged the dynamic symbol indices, and then the + generic size_dynamic_sections renumbered them out from under us. + Rather than trying somehow to prevent the renumbering, just do + the sort again. */ + if (elf_hash_table (info)->dynamic_sections_created) { - if (bfd_get_error () != bfd_error_system_call) - bfd_set_error (bfd_error_malformed_archive); - goto error_return; + bfd *dynobj; + asection *got; + struct mips_elf64_got_info *g; + + /* When we resort, we must tell mips_elf64_sort_hash_table what + the lowest index it may use is. That's the number of section + symbols we're going to add. The generic ELF linker only + adds these symbols when building a shared object. Note that + we count the sections after (possibly) removing the .options + section above. */ + if (!mips_elf64_sort_hash_table (info, (info->shared + ? bfd_count_sections (abfd) + 1 + : 1))) + return false; + + /* Make sure we didn't grow the global .got region. */ + dynobj = elf_hash_table (info)->dynobj; + got = bfd_get_section_by_name (dynobj, ".got"); + g = (struct mips_elf64_got_info *) elf_section_data (got)->tdata; + + if (g->global_gotsym != NULL) + BFD_ASSERT ((elf_hash_table (info)->dynsymcount + - g->global_gotsym->dynindx) + <= g->global_gotno); } - for (i = 0; i < nsymz; i++) + /* We include .MIPS.options, even though we don't process it quite right. + (Some entries are supposed to be merged.) At IRIX6 empirically we seem + to be better off including it than not. */ + for (secpp = &abfd->sections; *secpp != NULL; secpp = &(*secpp)->next) { - carsyms->file_offset = bfd_getb64 (raw_armap + i * 8); - carsyms->name = stringbase; - stringbase += strlen (stringbase) + 1; - ++carsyms; + if (strcmp ((*secpp)->name, ".MIPS.options") == 0) + { + for (p = (*secpp)->link_order_head; p != NULL; p = p->next) + if (p->type == bfd_indirect_link_order) + p->u.indirect.section->flags &=~ SEC_HAS_CONTENTS; + (*secpp)->link_order_head = NULL; + bfd_section_list_remove (abfd, secpp); + --abfd->section_count; + + break; + } } - *stringbase = '\0'; - ardata->symdef_count = nsymz; - ardata->first_file_filepos = arhdrpos + sizeof (struct ar_hdr) + parsed_size; + /* Get a value for the GP register. */ + if (elf_gp (abfd) == 0) + { + struct bfd_link_hash_entry *h; - bfd_has_map (abfd) = true; - bfd_release (abfd, raw_armap); + h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true); + if (h != (struct bfd_link_hash_entry *) NULL + && h->type == bfd_link_hash_defined) + elf_gp (abfd) = (h->u.def.value + + h->u.def.section->output_section->vma + + h->u.def.section->output_offset); + else if (info->relocateable) + { + bfd_vma lo = MINUS_ONE; - return true; + /* Find the GP-relative section with the lowest offset. */ + for (o = abfd->sections; o != NULL; o = o->next) + if (o->vma < lo + && (elf_section_data (o)->this_hdr.sh_flags & SHF_MIPS_GPREL)) + lo = o->vma; - error_return: - if (raw_armap != NULL) - bfd_release (abfd, raw_armap); - if (ardata->symdefs != NULL) - bfd_release (abfd, ardata->symdefs); - return false; -} + /* And calculate GP relative to that. */ + elf_gp (abfd) = (lo + 0x7ff0); + } + else + { + /* If the relocate_section function needs to do a reloc + involving the GP value, it should make a reloc_dangerous + callback to warn that GP is not defined. */ + } + } + + /* Go through the sections and collect the .mdebug information. */ + mdebug_sec = NULL; + gptab_data_sec = NULL; + gptab_bss_sec = NULL; + for (o = abfd->sections; o != (asection *) NULL; o = o->next) + { + if (strcmp (o->name, ".mdebug") == 0) + { + struct extsym_info einfo; + bfd_vma last; -/* Write out an Irix 6 armap. The Irix 6 tools are supposed to be - able to handle ordinary ELF armaps, but at least on Irix 6.2 the - linker crashes. */ + /* We have found the .mdebug section in the output file. + Look through all the link_orders comprising it and merge + the information together. */ + symhdr->magic = swap->sym_magic; + /* FIXME: What should the version stamp be? */ + symhdr->vstamp = 0; + symhdr->ilineMax = 0; + symhdr->cbLine = 0; + symhdr->idnMax = 0; + symhdr->ipdMax = 0; + symhdr->isymMax = 0; + symhdr->ioptMax = 0; + symhdr->iauxMax = 0; + symhdr->issMax = 0; + symhdr->issExtMax = 0; + symhdr->ifdMax = 0; + symhdr->crfd = 0; + symhdr->iextMax = 0; + + /* We accumulate the debugging information itself in the + debug_info structure. */ + debug.line = NULL; + debug.external_dnr = NULL; + debug.external_pdr = NULL; + debug.external_sym = NULL; + debug.external_opt = NULL; + debug.external_aux = NULL; + debug.ss = NULL; + debug.ssext = debug.ssext_end = NULL; + debug.external_fdr = NULL; + debug.external_rfd = NULL; + debug.external_ext = debug.external_ext_end = NULL; -static boolean -mips_elf64_write_armap (arch, elength, map, symbol_count, stridx) - bfd *arch; - unsigned int elength; - struct orl *map; - unsigned int symbol_count; - int stridx; -{ - unsigned int ranlibsize = (symbol_count * 8) + 8; - unsigned int stringsize = stridx; - unsigned int mapsize = stringsize + ranlibsize; - file_ptr archive_member_file_ptr; - bfd *current = arch->archive_head; - unsigned int count; - struct ar_hdr hdr; - unsigned int i; - int padding; - bfd_byte buf[8]; + mdebug_handle = bfd_ecoff_debug_init (abfd, &debug, swap, info); + if (mdebug_handle == (PTR) NULL) + return false; - padding = BFD_ALIGN (mapsize, 8) - mapsize; - mapsize += padding; + esym.jmptbl = 0; + esym.cobol_main = 0; + esym.weakext = 0; + esym.reserved = 0; + esym.ifd = ifdNil; + esym.asym.iss = issNil; + esym.asym.st = stLocal; + esym.asym.reserved = 0; + esym.asym.index = indexNil; + last = 0; + for (i = 0; i < sizeof (secname) / sizeof (secname[0]); i++) + { + esym.asym.sc = sc[i]; + s = bfd_get_section_by_name (abfd, secname[i]); + if (s != NULL) + { + esym.asym.value = s->vma; + last = s->vma + s->_raw_size; + } + else + esym.asym.value = last; + if (!bfd_ecoff_debug_one_external (abfd, &debug, swap, + secname[i], &esym)) + return false; + } + + for (p = o->link_order_head; + p != (struct bfd_link_order *) NULL; + p = p->next) + { + asection *input_section; + bfd *input_bfd; + const struct ecoff_debug_swap *input_swap; + struct ecoff_debug_info input_debug; + char *eraw_src; + char *eraw_end; - /* work out where the first object file will go in the archive */ - archive_member_file_ptr = (mapsize - + elength - + sizeof (struct ar_hdr) - + SARMAG); - - memset ((char *) (&hdr), 0, sizeof (struct ar_hdr)); - strcpy (hdr.ar_name, "/SYM64/"); - sprintf (hdr.ar_size, "%-10d", (int) mapsize); - sprintf (hdr.ar_date, "%ld", (long) time (NULL)); - /* This, at least, is what Intel coff sets the values to.: */ - sprintf ((hdr.ar_uid), "%d", 0); - sprintf ((hdr.ar_gid), "%d", 0); - sprintf ((hdr.ar_mode), "%-7o", (unsigned) 0); - strncpy (hdr.ar_fmag, ARFMAG, 2); - - for (i = 0; i < sizeof (struct ar_hdr); i++) - if (((char *) (&hdr))[i] == '\0') - (((char *) (&hdr))[i]) = ' '; + if (p->type != bfd_indirect_link_order) + { + if (p->type == bfd_fill_link_order) + continue; + abort (); + } - /* Write the ar header for this item and the number of symbols */ + input_section = p->u.indirect.section; + input_bfd = input_section->owner; - if (bfd_bwrite ((PTR) &hdr, (bfd_size_type) sizeof (struct ar_hdr), arch) - != sizeof (struct ar_hdr)) - return false; + if (bfd_get_flavour (input_bfd) != bfd_target_elf_flavour + || (get_elf_backend_data (input_bfd) + ->elf_backend_ecoff_debug_swap) == NULL) + { + /* I don't know what a non MIPS ELF bfd would be + doing with a .mdebug section, but I don't really + want to deal with it. */ + continue; + } - bfd_putb64 ((bfd_vma) symbol_count, buf); - if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8) - return false; + input_swap = (get_elf_backend_data (input_bfd) + ->elf_backend_ecoff_debug_swap); - /* Two passes, first write the file offsets for each symbol - - remembering that each offset is on a two byte boundary. */ + BFD_ASSERT (p->size == input_section->_raw_size); - /* Write out the file offset for the file associated with each - symbol, and remember to keep the offsets padded out. */ + /* The ECOFF linking code expects that we have already + read in the debugging information and set up an + ecoff_debug_info structure, so we do that now. */ + if (! _bfd_mips_elf_read_ecoff_info (input_bfd, input_section, + &input_debug)) + return false; + + if (! (bfd_ecoff_debug_accumulate + (mdebug_handle, abfd, &debug, swap, input_bfd, + &input_debug, input_swap, info))) + return false; + + /* Loop through the external symbols. For each one with + interesting information, try to find the symbol in + the linker global hash table and save the information + for the output external symbols. */ + eraw_src = input_debug.external_ext; + eraw_end = (eraw_src + + (input_debug.symbolic_header.iextMax + * input_swap->external_ext_size)); + for (; + eraw_src < eraw_end; + eraw_src += input_swap->external_ext_size) + { + EXTR ext; + const char *name; + struct mips_elf64_link_hash_entry *h; + + (*input_swap->swap_ext_in) (input_bfd, (PTR) eraw_src, &ext); + if (ext.asym.sc == scNil + || ext.asym.sc == scUndefined + || ext.asym.sc == scSUndefined) + continue; + + name = input_debug.ssext + ext.asym.iss; + h = mips_elf64_link_hash_lookup (mips_elf64_hash_table (info), + name, false, false, true); + if (h == NULL || h->esym.ifd != -2) + continue; - current = arch->archive_head; - count = 0; - while (current != (bfd *) NULL && count < symbol_count) - { - /* For each symbol which is used defined in this object, write out - the object file's address in the archive */ + if (ext.ifd != -1) + { + BFD_ASSERT (ext.ifd + < input_debug.symbolic_header.ifdMax); + ext.ifd = input_debug.ifdmap[ext.ifd]; + } + + h->esym = ext; + } + + /* Free up the information we just read. */ + free (input_debug.line); + free (input_debug.external_dnr); + free (input_debug.external_pdr); + free (input_debug.external_sym); + free (input_debug.external_opt); + free (input_debug.external_aux); + free (input_debug.ss); + free (input_debug.ssext); + free (input_debug.external_fdr); + free (input_debug.external_rfd); + free (input_debug.external_ext); + + /* Hack: reset the SEC_HAS_CONTENTS flag so that + elf_link_input_bfd ignores this section. */ + input_section->flags &=~ SEC_HAS_CONTENTS; + } + + /* Build the external symbol information. */ + einfo.abfd = abfd; + einfo.info = info; + einfo.debug = &debug; + einfo.swap = swap; + einfo.failed = false; + mips_elf64_link_hash_traverse (mips_elf64_hash_table (info), + mips_elf64_output_extsym, + (PTR) &einfo); + if (einfo.failed) + return false; - while (map[count].u.abfd == current) + /* Set the size of the .mdebug section. */ + o->_raw_size = bfd_ecoff_debug_size (abfd, &debug, swap); + + /* Skip this section later on (I don't think this currently + matters, but someday it might). */ + o->link_order_head = (struct bfd_link_order *) NULL; + + mdebug_sec = o; + } + + if (strncmp (o->name, ".gptab.", sizeof ".gptab." - 1) == 0) { - bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf); - if (bfd_bwrite (buf, (bfd_size_type) 8, arch) != 8) + const char *subname; + unsigned int c; + Elf32_gptab *tab; + Elf32_External_gptab *ext_tab; + unsigned int i; + + /* The .gptab.sdata and .gptab.sbss sections hold + information describing how the small data area would + change depending upon the -G switch. These sections + not used in executables files. */ + if (! info->relocateable) + { + asection **secpp; + + for (p = o->link_order_head; + p != (struct bfd_link_order *) NULL; + p = p->next) + { + asection *input_section; + + if (p->type != bfd_indirect_link_order) + { + if (p->type == bfd_fill_link_order) + continue; + abort (); + } + + input_section = p->u.indirect.section; + + /* Hack: reset the SEC_HAS_CONTENTS flag so that + elf_link_input_bfd ignores this section. */ + input_section->flags &=~ SEC_HAS_CONTENTS; + } + + /* Skip this section later on (I don't think this + currently matters, but someday it might). */ + o->link_order_head = (struct bfd_link_order *) NULL; + + /* Really remove the section. */ + for (secpp = &abfd->sections; + *secpp != o; + secpp = &(*secpp)->next) + ; + bfd_section_list_remove (abfd, secpp); + --abfd->section_count; + + continue; + } + + /* There is one gptab for initialized data, and one for + uninitialized data. */ + if (strcmp (o->name, ".gptab.sdata") == 0) + gptab_data_sec = o; + else if (strcmp (o->name, ".gptab.sbss") == 0) + gptab_bss_sec = o; + else + { + (*_bfd_error_handler) + (_("%s: illegal section name `%s'"), + bfd_archive_filename (abfd), o->name); + bfd_set_error (bfd_error_nonrepresentable_section); + return false; + } + + /* The linker script always combines .gptab.data and + .gptab.sdata into .gptab.sdata, and likewise for + .gptab.bss and .gptab.sbss. It is possible that there is + no .sdata or .sbss section in the output file, in which + case we must change the name of the output section. */ + subname = o->name + sizeof ".gptab" - 1; + if (bfd_get_section_by_name (abfd, subname) == NULL) + { + if (o == gptab_data_sec) + o->name = ".gptab.data"; + else + o->name = ".gptab.bss"; + subname = o->name + sizeof ".gptab" - 1; + BFD_ASSERT (bfd_get_section_by_name (abfd, subname) != NULL); + } + + /* Set up the first entry. */ + c = 1; + tab = (Elf32_gptab *) bfd_malloc (c * sizeof (Elf32_gptab)); + if (tab == NULL) return false; - count++; + tab[0].gt_header.gt_current_g_value = elf_gp_size (abfd); + tab[0].gt_header.gt_unused = 0; + + /* Combine the input sections. */ + for (p = o->link_order_head; + p != (struct bfd_link_order *) NULL; + p = p->next) + { + asection *input_section; + bfd *input_bfd; + bfd_size_type size; + unsigned long last; + bfd_size_type gpentry; + + if (p->type != bfd_indirect_link_order) + { + if (p->type == bfd_fill_link_order) + continue; + abort (); + } + + input_section = p->u.indirect.section; + input_bfd = input_section->owner; + + /* Combine the gptab entries for this input section one + by one. We know that the input gptab entries are + sorted by ascending -G value. */ + size = bfd_section_size (input_bfd, input_section); + last = 0; + for (gpentry = sizeof (Elf32_External_gptab); + gpentry < size; + gpentry += sizeof (Elf32_External_gptab)) + { + Elf32_External_gptab ext_gptab; + Elf32_gptab int_gptab; + unsigned long val; + unsigned long add; + boolean exact; + unsigned int look; + + if (! (bfd_get_section_contents + (input_bfd, input_section, (PTR) &ext_gptab, + gpentry, sizeof (Elf32_External_gptab)))) + { + free (tab); + return false; + } + + mips_elf64_swap_gptab_in (input_bfd, &ext_gptab, + &int_gptab); + val = int_gptab.gt_entry.gt_g_value; + add = int_gptab.gt_entry.gt_bytes - last; + + exact = false; + for (look = 1; look < c; look++) + { + if (tab[look].gt_entry.gt_g_value >= val) + tab[look].gt_entry.gt_bytes += add; + + if (tab[look].gt_entry.gt_g_value == val) + exact = true; + } + + if (! exact) + { + Elf32_gptab *new_tab; + unsigned int max; + + /* We need a new table entry. */ + new_tab = ((Elf32_gptab *) + bfd_realloc ((PTR) tab, + (c + 1) * sizeof (Elf32_gptab))); + if (new_tab == NULL) + { + free (tab); + return false; + } + tab = new_tab; + tab[c].gt_entry.gt_g_value = val; + tab[c].gt_entry.gt_bytes = add; + + /* Merge in the size for the next smallest -G + value, since that will be implied by this new + value. */ + max = 0; + for (look = 1; look < c; look++) + { + if (tab[look].gt_entry.gt_g_value < val + && (max == 0 + || (tab[look].gt_entry.gt_g_value + > tab[max].gt_entry.gt_g_value))) + max = look; + } + if (max != 0) + tab[c].gt_entry.gt_bytes += + tab[max].gt_entry.gt_bytes; + + ++c; + } + + last = int_gptab.gt_entry.gt_bytes; + } + + /* Hack: reset the SEC_HAS_CONTENTS flag so that + elf_link_input_bfd ignores this section. */ + input_section->flags &=~ SEC_HAS_CONTENTS; + } + + /* The table must be sorted by -G value. */ + if (c > 2) + qsort (tab + 1, c - 1, sizeof (tab[0]), gptab_compare); + + /* Swap out the table. */ + ext_tab = ((Elf32_External_gptab *) + bfd_alloc (abfd, c * sizeof (Elf32_External_gptab))); + if (ext_tab == NULL) + { + free (tab); + return false; + } + + for (i = 0; i < c; i++) + mips_elf64_swap_gptab_out (abfd, tab + i, ext_tab + i); + free (tab); + + o->_raw_size = c * sizeof (Elf32_External_gptab); + o->contents = (bfd_byte *) ext_tab; + + /* Skip this section later on (I don't think this currently + matters, but someday it might). */ + o->link_order_head = (struct bfd_link_order *) NULL; } - /* Add size of this archive entry */ - archive_member_file_ptr += (arelt_size (current) - + sizeof (struct ar_hdr)); - /* remember about the even alignment */ - archive_member_file_ptr += archive_member_file_ptr % 2; - current = current->next; } - /* now write the strings themselves */ - for (count = 0; count < symbol_count; count++) + /* Invoke the regular ELF backend linker to do all the work. */ + if (!bfd_elf64_bfd_final_link (abfd, info)) + return false; + + /* Now write out the computed sections. */ + if (mdebug_sec != (asection *) NULL) { - size_t len = strlen (*map[count].name) + 1; + BFD_ASSERT (abfd->output_has_begun); + if (! bfd_ecoff_write_accumulated_debug (mdebug_handle, abfd, &debug, + swap, info, + mdebug_sec->filepos)) + return false; - if (bfd_bwrite (*map[count].name, (bfd_size_type) len, arch) != len) + bfd_ecoff_debug_free (mdebug_handle, abfd, &debug, swap, info); + } + if (gptab_data_sec != (asection *) NULL) + { + if (! bfd_set_section_contents (abfd, gptab_data_sec, + gptab_data_sec->contents, + (file_ptr) 0, + gptab_data_sec->_raw_size)) return false; } - /* The spec says that this should be padded to an 8 byte boundary. - However, the Irix 6.2 tools do not appear to do this. */ - while (padding != 0) + if (gptab_bss_sec != (asection *) NULL) { - if (bfd_bwrite ("", (bfd_size_type) 1, arch) != 1) + if (! bfd_set_section_contents (abfd, gptab_bss_sec, + gptab_bss_sec->contents, + (file_ptr) 0, + gptab_bss_sec->_raw_size)) return false; - --padding; } return true; @@ -2056,10 +6965,6 @@ const struct elf_size_info mips_elf64_si mips_elf64_be_swap_reloca_out }; -#define TARGET_LITTLE_SYM bfd_elf64_littlemips_vec -#define TARGET_LITTLE_NAME "elf64-littlemips" -#define TARGET_BIG_SYM bfd_elf64_bigmips_vec -#define TARGET_BIG_NAME "elf64-bigmips" #define ELF_ARCH bfd_arch_mips #define ELF_MACHINE_CODE EM_MIPS @@ -2068,40 +6973,43 @@ const struct elf_size_info mips_elf64_si #define elf_backend_collect true #define elf_backend_type_change_ok true #define elf_backend_can_gc_sections true -#define elf_backend_size_info mips_elf64_size_info +#define elf_info_to_howto mips_elf64_info_to_howto_rela +#define elf_info_to_howto_rel mips_elf64_info_to_howto_rel #define elf_backend_object_p _bfd_mips_elf_object_p +#define elf_backend_symbol_processing _bfd_mips_elf_symbol_processing +#define elf_backend_section_processing _bfd_mips_elf_section_processing #define elf_backend_section_from_shdr _bfd_mips_elf_section_from_shdr #define elf_backend_fake_sections _bfd_mips_elf_fake_sections #define elf_backend_section_from_bfd_section \ _bfd_mips_elf_section_from_bfd_section -#define elf_backend_section_processing _bfd_mips_elf_section_processing -#define elf_backend_symbol_processing _bfd_mips_elf_symbol_processing -#define elf_backend_additional_program_headers \ - _bfd_mips_elf_additional_program_headers -#define elf_backend_modify_segment_map _bfd_mips_elf_modify_segment_map -#define elf_backend_final_write_processing \ - _bfd_mips_elf_final_write_processing -#define elf_backend_ecoff_debug_swap &mips_elf64_ecoff_debug_swap #define elf_backend_add_symbol_hook _bfd_mips_elf_add_symbol_hook +#define elf_backend_link_output_symbol_hook \ + _bfd_mips_elf_link_output_symbol_hook #define elf_backend_create_dynamic_sections \ - _bfd_mips_elf_create_dynamic_sections -#define elf_backend_check_relocs _bfd_mips_elf_check_relocs + mips_elf64_create_dynamic_sections +#define elf_backend_check_relocs mips_elf64_check_relocs #define elf_backend_adjust_dynamic_symbol \ - _bfd_mips_elf_adjust_dynamic_symbol + mips_elf64_adjust_dynamic_symbol #define elf_backend_always_size_sections \ - _bfd_mips_elf_always_size_sections + mips_elf64_always_size_sections #define elf_backend_size_dynamic_sections \ - _bfd_mips_elf_size_dynamic_sections -#define elf_backend_relocate_section _bfd_mips_elf_relocate_section -#define elf_backend_link_output_symbol_hook \ - _bfd_mips_elf_link_output_symbol_hook + mips_elf64_size_dynamic_sections +#define elf_backend_relocate_section mips_elf64_relocate_section #define elf_backend_finish_dynamic_symbol \ - _bfd_mips_elf_finish_dynamic_symbol + mips_elf64_finish_dynamic_symbol #define elf_backend_finish_dynamic_sections \ - _bfd_mips_elf_finish_dynamic_sections -#define elf_backend_gc_mark_hook _bfd_mips_elf_gc_mark_hook -#define elf_backend_gc_sweep_hook _bfd_mips_elf_gc_sweep_hook -#define elf_backend_got_header_size (4*MIPS_RESERVED_GOTNO) + mips_elf64_finish_dynamic_sections +#define elf_backend_final_write_processing \ + _bfd_mips_elf_final_write_processing +#define elf_backend_additional_program_headers \ + mips_elf64_additional_program_headers +#define elf_backend_modify_segment_map _bfd_mips_elf_modify_segment_map +#define elf_backend_gc_mark_hook mips_elf64_gc_mark_hook +#define elf_backend_gc_sweep_hook mips_elf64_gc_sweep_hook +#define elf_backend_ecoff_debug_swap &mips_elf64_ecoff_debug_swap +#define elf_backend_size_info mips_elf64_size_info + +#define elf_backend_got_header_size (4 * MIPS_RESERVED_GOTNO) #define elf_backend_plt_header_size 0 /* MIPS ELF64 can use a mixture of REL and RELA, but some Relocations @@ -2116,10 +7024,8 @@ const struct elf_size_info mips_elf64_si #define bfd_elf64_find_nearest_line _bfd_mips_elf_find_nearest_line #define bfd_elf64_set_section_contents _bfd_mips_elf_set_section_contents #define bfd_elf64_bfd_link_hash_table_create \ - _bfd_mips_elf_link_hash_table_create -#define bfd_elf64_bfd_final_link _bfd_mips_elf_final_link -#define bfd_elf64_bfd_copy_private_bfd_data \ - _bfd_mips_elf_copy_private_bfd_data + mips_elf64_link_hash_table_create +#define bfd_elf64_bfd_final_link mips_elf64_final_link #define bfd_elf64_bfd_merge_private_bfd_data \ _bfd_mips_elf_merge_private_bfd_data #define bfd_elf64_bfd_set_private_flags _bfd_mips_elf_set_private_flags @@ -2129,14 +7035,16 @@ const struct elf_size_info mips_elf64_si #define bfd_elf64_get_reloc_upper_bound mips_elf64_get_reloc_upper_bound #define bfd_elf64_bfd_reloc_type_lookup mips_elf64_reloc_type_lookup #define bfd_elf64_archive_functions -#define bfd_elf64_archive_slurp_armap mips_elf64_slurp_armap +extern boolean bfd_elf64_archive_slurp_armap + PARAMS((bfd *)); +extern boolean bfd_elf64_archive_write_armap + PARAMS((bfd *, unsigned int, struct orl *, unsigned int, int)); #define bfd_elf64_archive_slurp_extended_name_table \ _bfd_archive_coff_slurp_extended_name_table #define bfd_elf64_archive_construct_extended_name_table \ _bfd_archive_coff_construct_extended_name_table #define bfd_elf64_archive_truncate_arname \ _bfd_archive_coff_truncate_arname -#define bfd_elf64_archive_write_armap mips_elf64_write_armap #define bfd_elf64_archive_read_ar_hdr _bfd_archive_coff_read_ar_hdr #define bfd_elf64_archive_openr_next_archived_file \ _bfd_archive_coff_openr_next_archived_file @@ -2147,12 +7055,17 @@ const struct elf_size_info mips_elf64_si #define bfd_elf64_archive_update_armap_timestamp \ _bfd_archive_coff_update_armap_timestamp -#include "elf64-target.h" +/* The SGI style (n)64 NewABI. */ +#define TARGET_LITTLE_SYM bfd_elf64_littlemips_vec +#define TARGET_LITTLE_NAME "elf64-littlemips" +#define TARGET_BIG_SYM bfd_elf64_bigmips_vec +#define TARGET_BIG_NAME "elf64-bigmips" -/* Support for traditional mips targets */ +#include "elf64-target.h" -#define INCLUDED_TARGET_FILE /* More a type of flag */ +#define INCLUDED_TARGET_FILE /* More a type of flag. */ +/* The SYSV-style 'traditional' (n)64 NewABI. */ #undef TARGET_LITTLE_SYM #undef TARGET_LITTLE_NAME #undef TARGET_BIG_SYM @@ -2163,5 +7076,5 @@ const struct elf_size_info mips_elf64_si #define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec #define TARGET_BIG_NAME "elf64-tradbigmips" -/* Include the target file again for this target */ +/* Include the target file again for this target. */ #include "elf64-target.h" diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-mmix.c binutils-2.11.93.0.2/bfd/elf64-mmix.c --- binutils-2.11.92.0.12.3/bfd/elf64-mmix.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-mmix.c Thu Feb 7 10:21:03 2002 @@ -1,5 +1,5 @@ /* MMIX-specific support for 64-bit ELF. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright 2001, 2002 Free Software Foundation, Inc. Contributed by Hans-Peter Nilsson This file is part of BFD, the Binary File Descriptor library. @@ -21,8 +21,7 @@ Foundation, Inc., 59 Temple Place - Suit /* No specific ABI or "processor-specific supplement" defined. */ /* TODO: - - Linker relaxation. - - On-demand register allocation (from R_MMIX_BASE_PLUS_OFFSET). */ + - Linker relaxation. */ #include "bfd.h" #include "sysdep.h" @@ -42,6 +41,85 @@ Foundation, Inc., 59 Temple Place - Suit _bfd_abort (__FILE__, __LINE__, \ "bad case for " #x) +/* For each section containing a base-plus-offset (BPO) reloc, we attach + this struct as elf_section_data (section)->tdata, which is otherwise + NULL. */ +struct bpo_reloc_section_info + { + /* The base is 1; this is the first number in this section. */ + size_t first_base_plus_offset_reloc; + + /* Number of BPO-relocs in this section. */ + size_t n_bpo_relocs_this_section; + + /* Running index, used at relocation time. */ + size_t bpo_index; + + /* We don't have access to the bfd_link_info struct in + mmix_final_link_relocate. What we really want to get at is the + global single struct greg_relocation, so we stash it here. */ + asection *bpo_greg_section; + }; + +/* Helper struct (in global context) for the one below. + There's one of these created for every BPO reloc. */ +struct bpo_reloc_request + { + bfd_vma value; + + /* Valid after relaxation. The base is 0; the first register number + must be added. The offset is in range 0..255. */ + size_t regindex; + size_t offset; + + /* The order number for this BPO reloc, corresponding to the order in + which BPO relocs were found. Used to create an index after reloc + requests are sorted. */ + size_t bpo_reloc_no; + + /* Set when the value is computed. Better than coding "guard values" + into the other members. Is false only for BPO relocs in a GC:ed + section. */ + boolean valid; + }; + +/* We attach this as elf_section_data (sec)->tdata in the linker-allocated + greg contents section (MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME), + which is linked into the register contents section + (MMIX_REG_CONTENTS_SECTION_NAME). This section is created by the + linker; using the same hook as for usual with BPO relocs does not + collide. */ +struct bpo_greg_section_info + { + /* After GC, this reflects the number of remaining, non-excluded + BPO-relocs. */ + size_t n_bpo_relocs; + + /* This is the number of allocated bpo_reloc_requests; the size of + sorted_indexes. Valid after the check.*relocs functions are called + for all incoming sections. It includes the number of BPO relocs in + sections that were GC:ed. */ + size_t n_max_bpo_relocs; + + /* A counter used to find out when to fold the BPO gregs, since we + don't have a single "after-relaxation" hook. */ + size_t n_remaining_bpo_relocs_this_relaxation_round; + + /* The number of linker-allocated GREGs resulting from BPO relocs. + This is an approximation after _bfd_mmix_allocated_gregs_init and + supposedly accurate after mmix_elf_relax_section is called for all + incoming non-collected sections. */ + size_t n_allocated_bpo_gregs; + + /* Index into reloc_request[], sorted on increasing "value", secondary + by increasing index for strict sorting order. */ + size_t *bpo_reloc_indexes; + + /* An array of all relocations, with the "value" member filled in by + the relaxation function. */ + struct bpo_reloc_request *reloc_request; + }; + static boolean mmix_elf_link_output_symbol_hook PARAMS ((bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *)); @@ -61,6 +139,10 @@ static boolean mmix_elf_check_relocs PARAMS ((bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *)); +static boolean mmix_elf_check_common_relocs + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); + static boolean mmix_elf_relocate_section PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **)); @@ -69,6 +151,10 @@ static asection * mmix_elf_gc_mark_hook PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *, struct elf_link_hash_entry *, Elf_Internal_Sym *)); +static boolean mmix_elf_gc_sweep_hook + PARAMS ((bfd *, struct bfd_link_info *, asection *, + const Elf_Internal_Rela *)); + static bfd_reloc_status_type mmix_final_link_relocate PARAMS ((reloc_howto_type *, asection *, bfd_byte *, bfd_vma, bfd_signed_vma, bfd_vma, const char *, asection *)); @@ -77,7 +163,7 @@ static bfd_reloc_status_type mmix_elf_pe PARAMS ((asection *, reloc_howto_type *, PTR, bfd_vma, bfd_vma)); static boolean mmix_elf_section_from_bfd_section - PARAMS ((bfd *, Elf64_Internal_Shdr *, asection *, int *)); + PARAMS ((bfd *, asection *, int *)); static boolean mmix_elf_add_symbol_hook PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *, @@ -86,10 +172,20 @@ static boolean mmix_elf_add_symbol_hook static boolean mmix_elf_is_local_label_name PARAMS ((bfd *, const char *)); +static int bpo_reloc_request_sort_fn PARAMS ((const PTR, const PTR)); + +static boolean mmix_elf_relax_section + PARAMS ((bfd *abfd, asection *sec, struct bfd_link_info *link_info, + boolean *again)); + extern boolean mmix_elf_final_link PARAMS ((bfd *, struct bfd_link_info *)); extern void mmix_elf_symbol_processing PARAMS ((bfd *, asymbol *)); +/* Only intended to be called from a debugger. */ +extern void mmix_dump_bpo_gregs + PARAMS ((struct bfd_link_info *, bfd_error_handler_type)); + /* Watch out: this currently needs to have elements with the same index as their R_MMIX_ number. */ static reloc_howto_type elf_mmix_howto_table[] = @@ -120,7 +216,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_8", /* name */ false, /* partial_inplace */ - 0xff, /* src_mask */ + 0, /* src_mask */ 0xff, /* dst_mask */ false), /* pcrel_offset */ @@ -135,7 +231,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_16", /* name */ false, /* partial_inplace */ - 0xffff, /* src_mask */ + 0, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -150,7 +246,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_24", /* name */ false, /* partial_inplace */ - 0xffffff, /* src_mask */ + ~0xffffff, /* src_mask */ 0xffffff, /* dst_mask */ false), /* pcrel_offset */ @@ -165,7 +261,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_32", /* name */ false, /* partial_inplace */ - 0xffffffff, /* src_mask */ + 0, /* src_mask */ 0xffffffff, /* dst_mask */ false), /* pcrel_offset */ @@ -180,7 +276,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_64", /* name */ false, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ false), /* pcrel_offset */ @@ -195,7 +291,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_PC_8", /* name */ false, /* partial_inplace */ - 0xff, /* src_mask */ + 0, /* src_mask */ 0xff, /* dst_mask */ true), /* pcrel_offset */ @@ -210,7 +306,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_PC_16", /* name */ false, /* partial_inplace */ - 0xffff, /* src_mask */ + 0, /* src_mask */ 0xffff, /* dst_mask */ true), /* pcrel_offset */ @@ -225,7 +321,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_PC_24", /* name */ false, /* partial_inplace */ - 0xffffff, /* src_mask */ + ~0xffffff, /* src_mask */ 0xffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -240,7 +336,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_PC_32", /* name */ false, /* partial_inplace */ - 0xffffffff, /* src_mask */ + 0, /* src_mask */ 0xffffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -255,7 +351,7 @@ static reloc_howto_type elf_mmix_howto_t bfd_elf_generic_reloc, /* special_function */ "R_MMIX_PC_64", /* name */ false, /* partial_inplace */ - MINUS_ONE, /* src_mask */ + 0, /* src_mask */ MINUS_ONE, /* dst_mask */ true), /* pcrel_offset */ @@ -303,7 +399,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_GETA", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -317,7 +413,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_GETA_1", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -331,7 +427,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_GETA_2", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -345,7 +441,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_GETA_3", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -363,7 +459,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_CBRANCH", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -377,7 +473,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_CBRANCH_J", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -391,7 +487,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_CBRANCH_1", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -405,7 +501,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_CBRANCH_2", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -419,7 +515,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_CBRANCH_3", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -438,7 +534,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_PUSHJ", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -452,7 +548,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_PUSHJ_1", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -466,7 +562,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_PUSHJ_2", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -480,7 +576,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_PUSHJ_3", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -498,7 +594,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_JMP", /* name */ false, /* partial_inplace */ - 0x1ffffff, /* src_mask */ + ~0x1ffffff, /* src_mask */ 0x1ffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -512,7 +608,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_JMP_1", /* name */ false, /* partial_inplace */ - 0x1ffffff, /* src_mask */ + ~0x1ffffff, /* src_mask */ 0x1ffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -526,7 +622,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_JMP_2", /* name */ false, /* partial_inplace */ - 0x1ffffff, /* src_mask */ + ~0x1ffffff, /* src_mask */ 0x1ffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -540,7 +636,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_JMP_3", /* name */ false, /* partial_inplace */ - 0x1ffffff, /* src_mask */ + ~0x1ffffff, /* src_mask */ 0x1ffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -557,7 +653,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_ADDR19", /* name */ false, /* partial_inplace */ - 0x0100ffff, /* src_mask */ + ~0x0100ffff, /* src_mask */ 0x0100ffff, /* dst_mask */ true), /* pcrel_offset */ @@ -572,7 +668,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_ADDR27", /* name */ false, /* partial_inplace */ - 0x1ffffff, /* src_mask */ + ~0x1ffffff, /* src_mask */ 0x1ffffff, /* dst_mask */ true), /* pcrel_offset */ @@ -588,7 +684,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_REG_OR_BYTE", /* name */ false, /* partial_inplace */ - 0xff, /* src_mask */ + 0, /* src_mask */ 0xff, /* dst_mask */ false), /* pcrel_offset */ @@ -603,7 +699,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_REG", /* name */ false, /* partial_inplace */ - 0xff, /* src_mask */ + 0, /* src_mask */ 0xff, /* dst_mask */ false), /* pcrel_offset */ @@ -620,7 +716,7 @@ static reloc_howto_type elf_mmix_howto_t mmix_elf_reloc, /* special_function */ "R_MMIX_BASE_PLUS_OFFSET", /* name */ false, /* partial_inplace */ - 0xffff, /* src_mask */ + 0, /* src_mask */ 0xffff, /* dst_mask */ false), /* pcrel_offset */ @@ -874,7 +970,7 @@ mmix_elf_perform_relocation (isec, howto value >>= 2; bfd_put_32 (abfd, - (in1 & ~howto->src_mask) + (in1 & howto->src_mask) | highbit | (value & howto->dst_mask), (bfd_byte *) datap); @@ -884,6 +980,48 @@ mmix_elf_perform_relocation (isec, howto else return bfd_reloc_overflow; + case R_MMIX_BASE_PLUS_OFFSET: + { + struct bpo_reloc_section_info *bpodata + = (struct bpo_reloc_section_info *) + elf_section_data (isec)->tdata; + asection *bpo_greg_section + = bpodata->bpo_greg_section; + struct bpo_greg_section_info *gregdata + = (struct bpo_greg_section_info *) + elf_section_data (bpo_greg_section)->tdata; + size_t bpo_index + = gregdata->bpo_reloc_indexes[bpodata->bpo_index++]; + + /* A consistency check: The value we now have in "relocation" must + be the same as the value we stored for that relocation. It + doesn't cost much, so can be left in at all times. */ + if (value != gregdata->reloc_request[bpo_index].value) + { + (*_bfd_error_handler) + (_("%s: Internal inconsistency error for value for\n\ + linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n"), + bfd_get_filename (isec->owner), + (unsigned long) (value >> 32), (unsigned long) value, + (unsigned long) (gregdata->reloc_request[bpo_index].value + >> 32), + (unsigned long) gregdata->reloc_request[bpo_index].value); + bfd_set_error (bfd_error_bad_value); + return bfd_reloc_overflow; + } + + /* Then store the register number and offset for that register + into datap and datap + 1 respectively. */ + bfd_put_8 (abfd, + gregdata->reloc_request[bpo_index].regindex + + bpo_greg_section->output_section->vma / 8, + datap); + bfd_put_8 (abfd, + gregdata->reloc_request[bpo_index].offset, + ((unsigned char *) datap) + 1); + return bfd_reloc_ok; + } + case R_MMIX_REG_OR_BYTE: case R_MMIX_REG: if (value > 255) @@ -1091,9 +1229,7 @@ mmix_elf_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections [r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link, sym->st_name); @@ -1233,6 +1369,32 @@ mmix_final_link_relocate (howto, input_s addr, srel); break; + case R_MMIX_BASE_PLUS_OFFSET: + if (symsec == NULL) + return bfd_reloc_undefined; + + /* Check that we're not relocating against a register symbol. */ + if (strcmp (bfd_get_section_name (symsec->owner, symsec), + MMIX_REG_CONTENTS_SECTION_NAME) == 0 + || strcmp (bfd_get_section_name (symsec->owner, symsec), + MMIX_REG_SECTION_NAME) == 0) + { + /* Note: This is separated out into two messages in order + to ease the translation into other languages. */ + if (symname == NULL || *symname == 0) + (*_bfd_error_handler) + (_("%s: base-plus-offset relocation against register symbol: (unknown) in %s"), + bfd_get_filename (input_section->owner), + bfd_get_section_name (symsec->owner, symsec)); + else + (*_bfd_error_handler) + (_("%s: base-plus-offset relocation against register symbol: %s in %s"), + bfd_get_filename (input_section->owner), symname, + bfd_get_section_name (symsec->owner, symsec)); + return bfd_reloc_overflow; + } + goto do_mmix_reloc; + case R_MMIX_REG_OR_BYTE: case R_MMIX_REG: /* For now, we handle these alike. They must refer to an register @@ -1266,16 +1428,24 @@ mmix_final_link_relocate (howto, input_s } else { - (*_bfd_error_handler) - (_("%s: register relocation against non-register symbol: %s in %s"), - bfd_get_filename (input_section->owner), - symname == NULL || *symname == 0 ? _("(unknown)") : symname, - bfd_get_section_name (symsec->owner, symsec)); + /* Note: This is separated out into two messages in order + to ease the translation into other languages. */ + if (symname == NULL || *symname == 0) + (*_bfd_error_handler) + (_("%s: register relocation against non-register symbol: (unknown) in %s"), + bfd_get_filename (input_section->owner), + bfd_get_section_name (symsec->owner, symsec)); + else + (*_bfd_error_handler) + (_("%s: register relocation against non-register symbol: %s in %s"), + bfd_get_filename (input_section->owner), symname, + bfd_get_section_name (symsec->owner, symsec)); /* The bfd_reloc_outofrange return value, though intuitively a better value, will not get us an error. */ return bfd_reloc_overflow; } + do_mmix_reloc: contents += r_offset; r = mmix_elf_perform_relocation (input_section, howto, contents, addr, srel); @@ -1386,17 +1556,42 @@ mmix_elf_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; } + +/* Update relocation info for a GC-excluded section. We could supposedly + perform the allocation after GC, but there's no suitable hook between + GC (or section merge) and the point when all input sections must be + present. Better to waste some memory and (perhaps) a little time. */ + +static boolean +mmix_elf_gc_sweep_hook (abfd, info, sec, relocs) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info ATTRIBUTE_UNUSED; + asection *sec ATTRIBUTE_UNUSED; + const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED; +{ + struct bpo_reloc_section_info *bpodata + = (struct bpo_reloc_section_info *) + elf_section_data (sec)->tdata; + asection *allocated_gregs_section; + + /* If no bpodata here, we have nothing to do. */ + if (bpodata == NULL) + return true; + + allocated_gregs_section = bpodata->bpo_greg_section; + + ((struct bpo_greg_section_info *) + elf_section_data (allocated_gregs_section)->tdata) + ->n_bpo_relocs + -= bpodata->n_bpo_relocs_this_section; + + return true; +} /* Sort register relocs to come before expanding relocs. */ @@ -1433,6 +1628,117 @@ mmix_elf_sort_relocs (p1, p2) return 0; } +/* Subset of mmix_elf_check_relocs, common to ELF and mmo linking. */ + +static boolean +mmix_elf_check_common_relocs (abfd, info, sec, relocs) + bfd *abfd; + struct bfd_link_info *info; + asection *sec; + const Elf_Internal_Rela *relocs; +{ + bfd *bpo_greg_owner = NULL; + asection *allocated_gregs_section = NULL; + struct bpo_greg_section_info *gregdata = NULL; + struct bpo_reloc_section_info *bpodata = NULL; + const Elf_Internal_Rela *rel; + const Elf_Internal_Rela *rel_end; + + if (info->relocateable) + return true; + + /* We currently have to abuse this COFF-specific member, since there's + no target-machine-dedicated member. There's no alternative outside + the bfd_link_info struct; we can't specialize a hash-table since + they're different between ELF and mmo. */ + bpo_greg_owner = (bfd *) info->base_file; + + rel_end = relocs + sec->reloc_count; + for (rel = relocs; rel < rel_end; rel++) + { + switch (ELF64_R_TYPE (rel->r_info)) + { + /* This relocation causes a GREG allocation. We need to count + them, and we need to create a section for them, so we need an + object to fake as the owner of that section. We can't use + the ELF dynobj for this, since the ELF bits assume lots of + DSO-related stuff if that member is non-NULL. */ + case R_MMIX_BASE_PLUS_OFFSET: + if (bpo_greg_owner == NULL) + { + bpo_greg_owner = abfd; + info->base_file = (PTR) bpo_greg_owner; + } + + if (allocated_gregs_section == NULL) + allocated_gregs_section + = bfd_get_section_by_name (bpo_greg_owner, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + + if (allocated_gregs_section == NULL) + { + allocated_gregs_section + = bfd_make_section (bpo_greg_owner, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + /* Setting both SEC_ALLOC and SEC_LOAD means the section is + treated like any other section, and we'd get errors for + address overlap with the text section. Let's set none of + those flags, as that is what currently happens for usual + GREG allocations, and that works. */ + if (allocated_gregs_section == NULL + || !bfd_set_section_flags (bpo_greg_owner, + allocated_gregs_section, + (SEC_HAS_CONTENTS + | SEC_IN_MEMORY + | SEC_LINKER_CREATED)) + || !bfd_set_section_alignment (bpo_greg_owner, + allocated_gregs_section, + 3)) + return false; + + gregdata = (struct bpo_greg_section_info *) + bfd_zalloc (bpo_greg_owner, sizeof (struct bpo_greg_section_info)); + if (gregdata == NULL) + return false; + elf_section_data (allocated_gregs_section)->tdata = gregdata; + } + else if (gregdata == NULL) + gregdata = elf_section_data (allocated_gregs_section)->tdata; + + /* Get ourselves some auxiliary info for the BPO-relocs. */ + if (bpodata == NULL) + { + /* No use doing a separate iteration pass to find the upper + limit - just use the number of relocs. */ + bpodata = (struct bpo_reloc_section_info *) + bfd_alloc (bpo_greg_owner, + sizeof (struct bpo_reloc_section_info) + * (sec->reloc_count + 1)); + if (bpodata == NULL) + return false; + elf_section_data (sec)->tdata = bpodata; + bpodata->first_base_plus_offset_reloc + = bpodata->bpo_index + = gregdata->n_max_bpo_relocs; + bpodata->bpo_greg_section + = allocated_gregs_section; + bpodata->n_bpo_relocs_this_section = 0; + } + + bpodata->n_bpo_relocs_this_section++; + gregdata->n_max_bpo_relocs++; + + /* We don't get another chance to set this before GC; we've not + set up set up any hook that runs before GC. */ + gregdata->n_bpo_relocs + = gregdata->n_max_bpo_relocs; + break; + } + } + + return true; +} + /* Look through the relocs for a section during the first phase. */ static boolean @@ -1461,6 +1767,10 @@ mmix_elf_check_relocs (abfd, info, sec, qsort ((PTR) relocs, sec->reloc_count, sizeof (Elf_Internal_Rela), mmix_elf_sort_relocs); + /* Do the common part. */ + if (!mmix_elf_check_common_relocs (abfd, info, sec, relocs)) + return false; + rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) { @@ -1474,7 +1784,7 @@ mmix_elf_check_relocs (abfd, info, sec, h = sym_hashes[r_symndx - symtab_hdr->sh_info]; switch (ELF64_R_TYPE (rel->r_info)) - { + { /* This relocation describes the C++ object vtable hierarchy. Reconstruct it for later use during GC. */ case R_MMIX_GNU_VTINHERIT: @@ -1488,7 +1798,48 @@ mmix_elf_check_relocs (abfd, info, sec, if (!_bfd_elf64_gc_record_vtentry (abfd, sec, h, rel->r_addend)) return false; break; - } + } + } + + return true; +} + +/* Wrapper for mmix_elf_check_common_relocs, called when linking to mmo. + Copied from elf_link_add_object_symbols. */ + +boolean +_bfd_mmix_check_all_relocs (abfd, info) + bfd *abfd; + struct bfd_link_info *info; +{ + asection *o; + + for (o = abfd->sections; o != NULL; o = o->next) + { + Elf_Internal_Rela *internal_relocs; + boolean ok; + + if ((o->flags & SEC_RELOC) == 0 + || o->reloc_count == 0 + || ((info->strip == strip_all || info->strip == strip_debugger) + && (o->flags & SEC_DEBUGGING) != 0) + || bfd_is_abs_section (o->output_section)) + continue; + + internal_relocs + = _bfd_elf64_link_read_relocs (abfd, o, (PTR) NULL, + (Elf_Internal_Rela *) NULL, + info->keep_memory); + if (internal_relocs == NULL) + return false; + + ok = mmix_elf_check_common_relocs (abfd, info, o, internal_relocs); + + if (! info->keep_memory) + free (internal_relocs); + + if (! ok) + return false; } return true; @@ -1565,9 +1916,8 @@ mmix_elf_symbol_processing (abfd, asym) index. */ static boolean -mmix_elf_section_from_bfd_section (abfd, hdr, sec, retval) +mmix_elf_section_from_bfd_section (abfd, sec, retval) bfd * abfd ATTRIBUTE_UNUSED; - Elf64_Internal_Shdr * hdr ATTRIBUTE_UNUSED; asection * sec; int * retval; { @@ -1675,22 +2025,526 @@ mmix_elf_final_link (abfd, info) if (bfd_get_section_flags (abfd, reg_section) & SEC_HAS_CONTENTS) _bfd_abort (__FILE__, __LINE__, _("Register section has contents\n")); - /* FIXME: This does not seem like the proper way to kill a section, - but it's the way it's done elsewhere, like elf64-alpha.c. */ /* Really remove the section. */ for (secpp = &abfd->sections; *secpp != reg_section; secpp = &(*secpp)->next) ; - *secpp = (*secpp)->next; + bfd_section_list_remove (abfd, secpp); --abfd->section_count; } if (! bfd_elf64_bfd_final_link (abfd, info)) return false; + /* Since this section is marked SEC_LINKER_CREATED, it isn't output by + the regular linker machinery. We do it here, like other targets with + special sections. */ + if (info->base_file != NULL) + { + asection *greg_section + = bfd_get_section_by_name ((bfd *) info->base_file, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + if (!bfd_set_section_contents (abfd, + greg_section->output_section, + greg_section->contents, + (file_ptr) greg_section->output_offset, + greg_section->_cooked_size)) + return false; + } return true; } + +/* Initialize stuff for the linker-generated GREGs to match + R_MMIX_BASE_PLUS_OFFSET relocs seen by the linker. */ + +boolean +_bfd_mmix_prepare_linker_allocated_gregs (abfd, info) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info; +{ + asection *bpo_gregs_section; + bfd *bpo_greg_owner; + struct bpo_greg_section_info *gregdata; + size_t n_gregs; + bfd_vma gregs_size; + size_t i; + size_t *bpo_reloc_indexes; + + /* The bpo_greg_owner bfd is supposed to have been set by + mmix_elf_check_relocs when the first R_MMIX_BASE_PLUS_OFFSET is seen. + If there is no such object, there was no R_MMIX_BASE_PLUS_OFFSET. */ + bpo_greg_owner = (bfd *) info->base_file; + if (bpo_greg_owner == NULL) + return true; + + bpo_gregs_section + = bfd_get_section_by_name (bpo_greg_owner, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + + if (bpo_gregs_section == NULL) + return true; + + /* We use the target-data handle in the ELF section data. */ + gregdata = (struct bpo_greg_section_info *) + elf_section_data (bpo_gregs_section)->tdata; + if (gregdata == NULL) + return false; + + n_gregs = gregdata->n_bpo_relocs; + gregdata->n_allocated_bpo_gregs = n_gregs; + + /* When this reaches zero during relaxation, all entries have been + filled in and the size of the linker gregs can be calculated. */ + gregdata->n_remaining_bpo_relocs_this_relaxation_round = n_gregs; + + /* Set the zeroth-order estimate for the GREGs size. */ + gregs_size = n_gregs * 8; + + if (!bfd_set_section_size (bpo_greg_owner, bpo_gregs_section, gregs_size)) + return false; + + /* Allocate and set up the GREG arrays. They're filled in at relaxation + time. Note that we must use the max number ever noted for the array, + since the index numbers were created before GC. */ + gregdata->reloc_request + = bfd_zalloc (bpo_greg_owner, + sizeof (struct bpo_reloc_request) + * gregdata->n_max_bpo_relocs); + + gregdata->bpo_reloc_indexes + = bpo_reloc_indexes + = bfd_alloc (bpo_greg_owner, + gregdata->n_max_bpo_relocs + * sizeof (size_t)); + if (bpo_reloc_indexes == NULL) + return false; + + /* The default order is an identity mapping. */ + for (i = 0; i < gregdata->n_max_bpo_relocs; i++) + { + bpo_reloc_indexes[i] = i; + gregdata->reloc_request[i].bpo_reloc_no = i; + } + + return true; +} + +/* Fill in contents in the linker allocated gregs. Everything is + calculated at this point; we just move the contents into place here. */ + +boolean +_bfd_mmix_finalize_linker_allocated_gregs (abfd, link_info) + bfd *abfd ATTRIBUTE_UNUSED; + struct bfd_link_info *link_info; +{ + asection *bpo_gregs_section; + bfd *bpo_greg_owner; + struct bpo_greg_section_info *gregdata; + size_t n_gregs; + size_t i, j; + size_t lastreg; + bfd_byte *contents; + + /* The bpo_greg_owner bfd is supposed to have been set by mmix_elf_check_relocs + when the first R_MMIX_BASE_PLUS_OFFSET is seen. If there is no such + object, there was no R_MMIX_BASE_PLUS_OFFSET. */ + bpo_greg_owner = (bfd *) link_info->base_file; + if (bpo_greg_owner == NULL) + return true; + + bpo_gregs_section + = bfd_get_section_by_name (bpo_greg_owner, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + + /* This can't happen without DSO handling. When DSOs are handled + without any R_MMIX_BASE_PLUS_OFFSET seen, there will be no such + section. */ + if (bpo_gregs_section == NULL) + return true; + + /* We use the target-data handle in the ELF section data. */ + + gregdata = (struct bpo_greg_section_info *) + elf_section_data (bpo_gregs_section)->tdata; + if (gregdata == NULL) + return false; + + n_gregs = gregdata->n_allocated_bpo_gregs; + + bpo_gregs_section->contents + = contents = bfd_alloc (bpo_greg_owner, bpo_gregs_section->_cooked_size); + if (contents == NULL) + return false; + + for (lastreg = 255, i = 0, j = 0; j < n_gregs; i++) + if (gregdata->reloc_request[i].regindex != lastreg) + { + bfd_put_64 (bpo_greg_owner, gregdata->reloc_request[i].value, + contents + j * 8); + lastreg = gregdata->reloc_request[i].regindex; + j++; + } + + return true; +} + +/* Sort valid relocs to come before non-valid relocs, then on increasing + value. */ + +static int +bpo_reloc_request_sort_fn (p1, p2) + const PTR p1; + const PTR p2; +{ + const struct bpo_reloc_request *r1 = (const struct bpo_reloc_request *) p1; + const struct bpo_reloc_request *r2 = (const struct bpo_reloc_request *) p2; + + /* Primary function is validity; non-valid relocs sorted after valid + ones. */ + if (r1->valid != r2->valid) + return r2->valid - r1->valid; + + /* Then sort on value. Don't simplify and return just the difference of + the values: the upper bits of the 64-bit value would be truncated on + a host with 32-bit ints. */ + if (r1->value != r2->value) + return r1->value > r2->value ? 1 : -1; + + /* As a last re-sort, use the address so we get a stable sort. */ + return r1 > r2 ? 1 : (r1 < r2 ? -1 : 0); +} + +/* For debug use only. Dumps the global register allocations resulting + from base-plus-offset relocs. */ + +void +mmix_dump_bpo_gregs (link_info, pf) + struct bfd_link_info *link_info; + bfd_error_handler_type pf; +{ + bfd *bpo_greg_owner; + asection *bpo_gregs_section; + struct bpo_greg_section_info *gregdata; + unsigned int i; + + if (link_info == NULL || link_info->base_file == NULL) + return; + + bpo_greg_owner = (bfd *) link_info->base_file; + + bpo_gregs_section + = bfd_get_section_by_name (bpo_greg_owner, + MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME); + + if (bpo_gregs_section == NULL) + return; + + gregdata = (struct bpo_greg_section_info *) + elf_section_data (bpo_gregs_section)->tdata; + if (gregdata == NULL) + return; + + if (pf == NULL) + pf = _bfd_error_handler; + + /* These format strings are not translated. They are for debug purposes + only and never displayed to an end user. Should they escape, we + surely want them in original. */ + (*pf) (" n_bpo_relocs: %u\n n_max_bpo_relocs: %u\n n_remain...round: %u\n\ + n_allocated_bpo_gregs: %u\n", gregdata->n_bpo_relocs, + gregdata->n_max_bpo_relocs, + gregdata->n_remaining_bpo_relocs_this_relaxation_round, + gregdata->n_allocated_bpo_gregs); + + if (gregdata->reloc_request) + for (i = 0; i < gregdata->n_max_bpo_relocs; i++) + (*pf) ("%4u (%4u)/%4u#%u: 0x%08lx%08lx r: %3u o: %3u\n", + i, + gregdata->bpo_reloc_indexes != NULL + ? gregdata->bpo_reloc_indexes[i] : -1, + gregdata->reloc_request[i].bpo_reloc_no, + gregdata->reloc_request[i].valid, + + (unsigned long) (gregdata->reloc_request[i].value >> 32), + (unsigned long) gregdata->reloc_request[i].value, + gregdata->reloc_request[i].regindex, + gregdata->reloc_request[i].offset); +} + +/* This links all R_MMIX_BASE_PLUS_OFFSET relocs into a special array, and + when the last such reloc is done, an index-array is sorted according to + the values and iterated over to produce register numbers (indexed by 0 + from the first allocated register number) and offsets for use in real + relocation. + + Symbol- and reloc-reading infrastructure copied from elf-m10200.c. */ + +static boolean +mmix_elf_relax_section (abfd, sec, link_info, again) + bfd *abfd; + asection *sec; + struct bfd_link_info *link_info; + boolean *again; +{ + + Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; + Elf_Internal_Rela *internal_relocs; + Elf_Internal_Rela *free_relocs = NULL; + Elf_Internal_Rela *irel, *irelend; + asection *bpo_gregs_section = NULL; + struct bpo_greg_section_info *gregdata; + struct bpo_reloc_section_info *bpodata + = (struct bpo_reloc_section_info *) + elf_section_data (sec)->tdata; + size_t bpono; + bfd *bpo_greg_owner; + Elf64_External_Sym *extsyms = NULL; + Elf64_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + + /* Assume nothing changes. */ + *again = false; + + /* If this is the first time we have been called for this section, + initialize the cooked size. */ + if (sec->_cooked_size == 0) + sec->_cooked_size = sec->_raw_size; + + /* We don't have to do anything for a relocateable link, if + this section does not have relocs, or if this is not a + code section. */ + if (link_info->relocateable + || (sec->flags & SEC_RELOC) == 0 + || sec->reloc_count == 0 + || (sec->flags & SEC_CODE) == 0 + || (sec->flags & SEC_LINKER_CREATED) != 0 + /* If no R_MMIX_BASE_PLUS_OFFSET relocs, then nothing to do. */ + || bpodata == NULL) + return true; + + symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + + bpo_greg_owner = (bfd *) link_info->base_file; + bpo_gregs_section = bpodata->bpo_greg_section; + gregdata = (struct bpo_greg_section_info *) + elf_section_data (bpo_gregs_section)->tdata; + + bpono = bpodata->first_base_plus_offset_reloc; + + /* Get a copy of the native relocations. */ + internal_relocs + = _bfd_elf64_link_read_relocs (abfd, sec, (PTR) NULL, + (Elf_Internal_Rela *) NULL, + link_info->keep_memory); + if (internal_relocs == NULL) + goto error_return; + if (! link_info->keep_memory) + free_relocs = internal_relocs; + + /* Walk through them looking for relaxing opportunities. */ + irelend = internal_relocs + sec->reloc_count; + for (irel = internal_relocs; irel < irelend; irel++) + { + bfd_vma symval; + + if (ELF64_R_TYPE (irel->r_info) != (int) R_MMIX_BASE_PLUS_OFFSET) + continue; + + /* Read this BFD's symbols if we haven't done so already. */ + if (extsyms == NULL) + { + /* Get cached copy if it exists. */ + if (symtab_hdr->contents != NULL) + extsyms = (Elf64_External_Sym *) symtab_hdr->contents; + else + { + /* Go get them off disk. */ + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf64_External_Sym); + extsyms = (Elf64_External_Sym *) bfd_malloc (amt); + if (extsyms == NULL) + goto error_return; + free_extsyms = extsyms; + if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) extsyms, amt, abfd) != amt) + goto error_return; + symtab_hdr->contents = (bfd_byte *) extsyms; + } + + /* If >64k sections, this presumable happens. No test-case. */ + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info; + amt *= sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + shndx_hdr->contents = (bfd_byte *) shndx_buf; + } + } + + /* Get the value of the symbol referred to by the reloc. */ + if (ELF64_R_SYM (irel->r_info) < symtab_hdr->sh_info) + { + /* A local symbol. */ + Elf64_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; + Elf_Internal_Sym isym; + asection *sym_sec; + + esym = extsyms + ELF64_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf + ? ELF64_R_SYM (irel->r_info) : 0); + bfd_elf64_swap_symbol_in (abfd, esym, shndx, &isym); + + if (isym.st_shndx == SHN_UNDEF) + sym_sec = bfd_und_section_ptr; + else if (isym.st_shndx == SHN_ABS) + sym_sec = bfd_abs_section_ptr; + else if (isym.st_shndx == SHN_COMMON) + sym_sec = bfd_com_section_ptr; + else + sym_sec = bfd_section_from_elf_index (abfd, isym.st_shndx); + symval = (isym.st_value + + sym_sec->output_section->vma + + sym_sec->output_offset); + } + else + { + unsigned long indx; + struct elf_link_hash_entry *h; + + /* An external symbol. */ + indx = ELF64_R_SYM (irel->r_info) - symtab_hdr->sh_info; + h = elf_sym_hashes (abfd)[indx]; + BFD_ASSERT (h != NULL); + if (h->root.type != bfd_link_hash_defined + && h->root.type != bfd_link_hash_defweak) + { + /* This appears to be a reference to an undefined + symbol. Just ignore it--it will be caught by the + regular reloc processing. */ + continue; + } + + symval = (h->root.u.def.value + + h->root.u.def.section->output_section->vma + + h->root.u.def.section->output_offset); + } + + gregdata->reloc_request[gregdata->bpo_reloc_indexes[bpono]].value + = symval + irel->r_addend; + gregdata->reloc_request[gregdata->bpo_reloc_indexes[bpono++]].valid = true; + gregdata->n_remaining_bpo_relocs_this_relaxation_round--; + } + + /* Check if that was the last BPO-reloc. If so, sort the values and + calculate how many registers we need to cover them. Set the size of + the linker gregs, and if the number of registers changed, indicate + that we need to relax some more because we have more work to do. */ + if (gregdata->n_remaining_bpo_relocs_this_relaxation_round == 0) + { + size_t i; + bfd_vma prev_base; + size_t regindex; + + /* First, reset the remaining relocs for the next round. */ + gregdata->n_remaining_bpo_relocs_this_relaxation_round + = gregdata->n_bpo_relocs; + + qsort ((PTR) gregdata->reloc_request, + gregdata->n_max_bpo_relocs, + sizeof (struct bpo_reloc_request), + bpo_reloc_request_sort_fn); + + /* Recalculate indexes. When we find a change (however unlikely + after the initial iteration), we know we need to relax again, + since items in the GREG-array are sorted by increasing value and + stored in the relaxation phase. */ + for (i = 0; i < gregdata->n_max_bpo_relocs; i++) + if (gregdata->bpo_reloc_indexes[gregdata->reloc_request[i].bpo_reloc_no] + != i) + { + gregdata->bpo_reloc_indexes[gregdata->reloc_request[i].bpo_reloc_no] + = i; + *again = true; + } + + /* Allocate register numbers (indexing from 0). Stop at the first + non-valid reloc. */ + for (i = 0, regindex = 0, prev_base = gregdata->reloc_request[0].value; + i < gregdata->n_bpo_relocs; + i++) + { + if (gregdata->reloc_request[i].value > prev_base + 255) + { + regindex++; + prev_base = gregdata->reloc_request[i].value; + } + gregdata->reloc_request[i].regindex = regindex; + gregdata->reloc_request[i].offset + = gregdata->reloc_request[i].value - prev_base; + } + + /* If it's not the same as the last time, we need to relax again, + because the size of the section has changed. I'm not sure we + actually need to do any adjustments since the shrinking happens + at the start of this section, but better safe than sorry. */ + if (gregdata->n_allocated_bpo_gregs != regindex + 1) + { + gregdata->n_allocated_bpo_gregs = regindex + 1; + *again = true; + } + + bpo_gregs_section->_cooked_size = (regindex + 1) * 8; + } + + if (free_relocs != NULL) + free (free_relocs); + + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } + + if (free_extsyms != NULL) + { + if (! link_info->keep_memory) + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } + } + + return true; + + error_return: + if (free_relocs != NULL) + free (free_relocs); + if (shndx_buf != NULL) + { + shndx_hdr->contents = NULL; + free (shndx_buf); + } + if (free_extsyms != NULL) + { + symtab_hdr->contents = NULL; + free (free_extsyms); + } + + return false; +} #define ELF_ARCH bfd_arch_mmix #define ELF_MACHINE_CODE EM_MMIX @@ -1716,6 +2570,8 @@ mmix_elf_final_link (abfd, info) #define elf_info_to_howto mmix_info_to_howto_rela #define elf_backend_relocate_section mmix_elf_relocate_section #define elf_backend_gc_mark_hook mmix_elf_gc_mark_hook +#define elf_backend_gc_sweep_hook mmix_elf_gc_sweep_hook + #define elf_backend_link_output_symbol_hook \ mmix_elf_link_output_symbol_hook #define elf_backend_add_symbol_hook mmix_elf_add_symbol_hook @@ -1735,5 +2591,6 @@ mmix_elf_final_link (abfd, info) mmix_elf_section_from_bfd_section #define bfd_elf64_bfd_final_link mmix_elf_final_link +#define bfd_elf64_bfd_relax_section mmix_elf_relax_section #include "elf64-target.h" diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-ppc.c binutils-2.11.93.0.2/bfd/elf64-ppc.c --- binutils-2.11.92.0.12.3/bfd/elf64-ppc.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-ppc.c Thu Feb 7 10:21:03 2002 @@ -1,5 +1,5 @@ /* PowerPC64-specific support for 64-bit ELF. - Copyright 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Linus Nordberg, Swox AB , based on elf32-ppc.c by Ian Lance Taylor. @@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place - Suit #include "libbfd.h" #include "elf-bfd.h" #include "elf/ppc.h" +#include "elf64-ppc.h" #define USE_RELA /* we want RELA relocations, not REL. */ @@ -42,8 +43,6 @@ static bfd_reloc_status_type ppc64_elf_a PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); static boolean ppc64_elf_set_private_flags PARAMS ((bfd *, flagword)); -static boolean ppc64_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean ppc64_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); static boolean ppc64_elf_section_from_shdr @@ -67,8 +66,14 @@ static asection * ppc64_elf_gc_mark_hook 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 @@ -77,8 +82,10 @@ static enum elf_reloc_type_class ppc64_e PARAMS ((const Elf_Internal_Rela *)); static boolean ppc64_elf_size_dynamic_sections PARAMS ((bfd *, struct bfd_link_info *)); -static boolean ppc64_elf_final_link - 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 @@ -106,24 +113,57 @@ static boolean ppc64_elf_finish_dynamic_ #define PLT_ENTRY_SIZE 24 /* The initial size of the plt reserved for the dynamic linker. */ -#define PLT_INITIAL_ENTRY_SIZE 96 +#define PLT_INITIAL_ENTRY_SIZE PLT_ENTRY_SIZE /* TOC base pointers offset from start of TOC. */ #define TOC_BASE_OFF (0x8000) -/* Global linkage stub. The first instruction has its offset patched. */ -/* FIXME: Need traceback table? */ -static const unsigned int ppc64_elf_glink_code[] = { - 0xe9820000, /* ld %r12,0(%r2) */ - 0xf8410028, /* std %r2,40(%r1) */ - 0xe80c0000, /* ld %r0,0(%r12) */ - 0xe84c0008, /* ld %r2,8(%r12) */ - 0x7c0903a6, /* mtctr %r0 */ - 0x4e800420 /* bctr */ -}; - -#define PPC64_ELF_GLINK_SIZE \ - ((sizeof ppc64_elf_glink_code / sizeof ppc64_elf_glink_code[0]) * 4) +/* .plt call stub instructions. */ +#define ADDIS_R12_R2 0x3d820000 /* addis %r12,%r2,xxx@ha */ +#define STD_R2_40R1 0xf8410028 /* std %r2,40(%r1) */ +#define LD_R11_0R12 0xe96c0000 /* ld %r11,xxx+0@l(%r12) */ +#define LD_R2_0R12 0xe84c0000 /* ld %r2,xxx+8@l(%r12) */ +#define MTCTR_R11 0x7d6903a6 /* mtctr %r11 */ + /* ld %r11,xxx+16@l(%r12) */ +#define BCTR 0x4e800420 /* bctr */ + +/* The normal stub is this size. */ +#define PLT_CALL_STUB_SIZE (7*4) + +/* But sometimes the .plt entry crosses a 64k boundary, and we need + to adjust the high word with this insn. */ +#define ADDIS_R12_R12_1 0x3d8c0001 /* addis %r12,%r12,1 */ + +/* The .glink fixup call stub is the same as the .plt call stub, but + the first instruction restores r2, and the std is omitted. */ +#define LD_R2_40R1 0xe8410028 /* ld %r2,40(%r1) */ + +/* Always allow this much space. */ +#define GLINK_CALL_STUB_SIZE (8*4) + +/* Pad with this. */ +#define NOP 0x60000000 + +/* .glink entries for the first 32k functions are two instructions. */ +#define LI_R0_0 0x38000000 /* li %r0,0 */ +#define B_DOT 0x48000000 /* b . */ + +/* After that, we need two instructions to load the index, followed by + a branch. */ +#define LIS_R0_0 0x3c000000 /* lis %r0,0 */ +#define ORI_R0_R0_0 0x60000000 /* ori %r0,%r0,0 */ + +/* Since .opd is an array of descriptors and each entry will end up + with identical R_PPC64_RELATIVE relocs, there is really no need to + propagate .opd relocs; The dynamic linker should be taught to + relocate .opd without reloc entries. FIXME: the dynamic linker + will need to know where and how large .opd is via a couple of new + DT_PPC64_* tags, or perhaps just with one reloc that specifies the + start of .opd via its offset and the size via its addend. Also, + .opd should be trimmed of unused values. */ +#ifndef NO_OPD_RELOCS +#define NO_OPD_RELOCS 0 +#endif /* Relocation HOWTO's. */ static reloc_howto_type *ppc64_elf_howto_table[(int) R_PPC_max]; @@ -528,8 +568,7 @@ static reloc_howto_type ppc64_elf_howto_ 0xffffffff, /* dst_mask */ true), /* pcrel_offset */ - /* 32-bit relocation to the symbol's procedure linkage table. - FIXME: R_PPC64_PLT32 not supported. */ + /* 32-bit relocation to the symbol's procedure linkage table. */ HOWTO (R_PPC64_PLT32, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -797,7 +836,6 @@ static reloc_howto_type ppc64_elf_howto_ true), /* pcrel_offset */ /* 64-bit relocation to the symbol's procedure linkage table. */ - /* FIXME: R_PPC64_PLT64 not supported. */ HOWTO (R_PPC64_PLT64, /* type */ 0, /* rightshift */ 4, /* size (0=byte, 1=short, 2=long, 4=64 bits) */ @@ -1285,9 +1323,7 @@ ppc64_elf_reloc_type_lookup (abfd, code) break; case BFD_RELOC_HI16_S_BASEREL: ppc_reloc = R_PPC64_SECTOFF_HA; break; - /* FIXME: Is CTOR 32 or 64 bits? Fix md_apply_fix3 in - gas/config/tc-ppc.c too. */ - case BFD_RELOC_CTOR: ppc_reloc = R_PPC64_ADDR32; + case BFD_RELOC_CTOR: ppc_reloc = R_PPC64_ADDR64; break; case BFD_RELOC_64: ppc_reloc = R_PPC64_ADDR64; break; @@ -1427,24 +1463,6 @@ ppc64_elf_set_private_flags (abfd, flags return true; } -/* Copy backend specific data from one object module to another. */ -static boolean -ppc64_elf_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; -{ - if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -1582,7 +1600,67 @@ ppc64_elf_section_from_shdr (abfd, hdr, or less in the order in which they are called. eg. ppc64_elf_check_relocs is called early in the link process, ppc64_elf_finish_dynamic_sections is one of the last functions - called. */ + called. + + PowerPC64-ELF uses a similar scheme to PowerPC64-XCOFF in that + functions have both a function code symbol and a function descriptor + symbol. A call to foo in a relocatable object file looks like: + + . .text + . x: + . bl .foo + . nop + + The function definition in another object file might be: + + . .section .opd + . foo: .quad .foo + . .quad .TOC.@tocbase + . .quad 0 + . + . .text + . .foo: blr + + When the linker resolves the call during a static link, the branch + unsurprisingly just goes to .foo and the .opd information is unused. + If the function definition is in a shared library, things are a little + different: The call goes via a plt call stub, the opd information gets + copied to the plt, and the linker patches the nop. + + . x: + . bl .foo_stub + . ld 2,40(1) + . + . + . .foo_stub: + . addis 12,2,Lfoo@toc@ha # in practice, the call stub + . addi 12,12,Lfoo@toc@l # is slightly optimised, but + . std 2,40(1) # this is the general idea + . ld 11,0(12) + . ld 2,8(12) + . mtctr 11 + . ld 11,16(12) + . bctr + . + . .section .plt + . Lfoo: reloc (R_PPC64_JMP_SLOT, foo) + + The "reloc ()" notation is supposed to indicate that the linker emits + an R_PPC64_JMP_SLOT reloc against foo. The dynamic linker does the opd + copying. + + What are the difficulties here? Well, firstly, the relocations + examined by the linker in check_relocs are against the function code + sym .foo, while the dynamic relocation in the plt is emitted against + the function descriptor symbol, foo. Somewhere along the line, we need + to carefully copy dynamic link information from one symbol to the other. + Secondly, the generic part of the elf linker will make .foo a dynamic + symbol as is normal for most other backends. We need foo dynamic + instead, at least for an application final link. However, when + creating a shared library containing foo, we need to have both symbols + dynamic so that references to .foo are satisfied during the early + stages of linking. Otherwise the linker might decide to pull in a + definition from some other object, eg. a static library. */ /* The linker needs to keep track of the number of relocs that it decides to copy as dynamic relocs in check_relocs for each symbol. @@ -1623,6 +1701,10 @@ struct ppc_link_hash_entry /* Track dynamic relocs copied for this symbol. */ struct ppc_dyn_relocs *dyn_relocs; + + /* Flag function code and descriptor symbols. */ + unsigned int is_func:1; + unsigned int is_func_descriptor:1; }; /* ppc64 ELF linker hash table. */ @@ -1638,8 +1720,12 @@ struct ppc_link_hash_table asection *srelplt; asection *sdynbss; asection *srelbss; + asection *sstub; asection *sglink; + /* Set on error. */ + int plt_overflow; + /* Small local sym to section mapping cache. */ struct sym_sec_cache sym_sec; }; @@ -1673,6 +1759,8 @@ link_hash_newfunc (entry, table, string) struct ppc_link_hash_entry *eh = (struct ppc_link_hash_entry *) entry; eh->dyn_relocs = NULL; + eh->is_func = 0; + eh->is_func_descriptor = 0; } return entry; @@ -1703,7 +1791,9 @@ ppc64_elf_link_hash_table_create (abfd) htab->srelplt = NULL; htab->sdynbss = NULL; htab->srelbss = NULL; + htab->sstub = NULL; htab->sglink = NULL; + htab->plt_overflow = 0; htab->sym_sec.abfd = NULL; return &htab->elf.root; @@ -1738,8 +1828,8 @@ create_got_section (dynobj, info) return true; } -/* Create the .glink section as well as the ordinary dynamic - sections. */ +/* Create the .stub and .glink sections as well as the ordinary + dynamic sections. */ static boolean ppc64_elf_create_dynamic_sections (dynobj, info) @@ -1766,15 +1856,14 @@ ppc64_elf_create_dynamic_sections (dynob || (!info->shared && !htab->srelbss)) abort (); - /* Our .plt just contains pointers, no code. */ - flags = bfd_get_section_flags (dynobj, htab->splt); - flags &= ~SEC_CODE; - if (! bfd_set_section_flags (dynobj, htab->splt, flags)) + /* Create .stub and .glink for global linkage functions. */ + flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY + | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); + 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; - - /* Create .glink for global linkage functions. */ - flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY - | SEC_LINKER_CREATED); htab->sglink = bfd_make_section (dynobj, ".glink"); if (htab->sglink == NULL || ! bfd_set_section_flags (dynobj, htab->sglink, flags) @@ -1829,12 +1918,15 @@ ppc64_elf_copy_indirect_symbol (dir, ind eind->dyn_relocs = NULL; } + edir->is_func |= eind->is_func; + edir->is_func_descriptor |= eind->is_func_descriptor; + _bfd_elf_link_hash_copy_indirect (dir, ind); } /* 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. */ + linkage table, and dynamic reloc sections. */ static boolean ppc64_elf_check_relocs (abfd, info, sec, relocs) @@ -1849,6 +1941,7 @@ ppc64_elf_check_relocs (abfd, info, sec, const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; asection *sreloc; + boolean is_opd; if (info->relocateable) return true; @@ -1863,6 +1956,7 @@ ppc64_elf_check_relocs (abfd, info, sec, sym_hashes_end -= symtab_hdr->sh_info; sreloc = NULL; + is_opd = strcmp (bfd_get_section_name (abfd, sec), ".opd") == 0; rel_end = relocs + sec->reloc_count; for (rel = relocs; rel < rel_end; rel++) @@ -1943,6 +2037,7 @@ ppc64_elf_check_relocs (abfd, info, sec, h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; h->plt.refcount += 1; + ((struct ppc_link_hash_entry *) h)->is_func = 1; break; /* The following relocations don't need to propagate the @@ -1976,9 +2071,44 @@ ppc64_elf_check_relocs (abfd, info, sec, return false; break; + case R_PPC64_REL24: + if (h != NULL + && h->root.root.string[0] == '.' + && h->root.root.string[1] != 0) + { + /* We may need a .plt entry if the function this reloc + refers to is in a shared lib. */ + h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + h->plt.refcount += 1; + ((struct ppc_link_hash_entry *) h)->is_func = 1; + } + break; + + case R_PPC64_ADDR64: + if (is_opd + && h != NULL + && h->root.root.string[0] == '.' + && h->root.root.string[1] != 0) + { + struct elf_link_hash_entry *fdh; + + fdh = elf_link_hash_lookup (&htab->elf, h->root.root.string + 1, + 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 *) h)->is_func = 1; + } + } + /* Fall through. */ + case R_PPC64_REL64: case R_PPC64_REL32: - case R_PPC64_REL24: case R_PPC64_REL14: case R_PPC64_REL14_BRTAKEN: case R_PPC64_REL14_BRNTAKEN: @@ -1998,11 +2128,14 @@ ppc64_elf_check_relocs (abfd, info, sec, case R_PPC64_ADDR24: case R_PPC64_ADDR30: case R_PPC64_ADDR32: - case R_PPC64_ADDR64: case R_PPC64_UADDR16: case R_PPC64_UADDR32: case R_PPC64_UADDR64: case R_PPC64_TOC: + /* Don't propagate .opd relocs. */ + if (NO_OPD_RELOCS && is_opd) + break; + /* If we are creating a shared library, and this is a reloc against a global symbol, or a non PC relative reloc against a local symbol, then we need to copy the reloc @@ -2064,6 +2197,7 @@ ppc64_elf_check_relocs (abfd, info, sec, (*_bfd_error_handler) (_("%s: bad relocation section name `%s\'"), bfd_archive_filename (abfd), name); + bfd_set_error (bfd_error_bad_value); } if (htab->elf.dynobj == NULL) @@ -2177,13 +2311,7 @@ ppc64_elf_gc_mark_hook (abfd, info, rel, } else { - if (! (elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -2253,10 +2381,18 @@ ppc64_elf_gc_sweep_hook (abfd, info, sec } break; + case R_PPC64_REL24: + if (r_symndx >= symtab_hdr->sh_info) + { + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + if (h->plt.refcount > 0) + h->plt.refcount--; + } + break; + case R_PPC64_REL14: case R_PPC64_REL14_BRNTAKEN: case R_PPC64_REL14_BRTAKEN: - case R_PPC64_REL24: case R_PPC64_REL32: case R_PPC64_REL64: if (r_symndx >= symtab_hdr->sh_info) @@ -2328,6 +2464,122 @@ ppc64_elf_gc_sweep_hook (abfd, info, sec return true; } +/* Called via elf_link_hash_traverse to transfer dynamic linking + information on function code symbol entries to their corresponding + function descriptor symbol entries. */ +static boolean +func_desc_adjust (h, inf) + struct elf_link_hash_entry *h; + PTR inf; +{ + struct bfd_link_info *info; + struct ppc_link_hash_table *htab; + + 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); + + /* If this is a function code symbol, transfer dynamic linking + information to the function descriptor symbol. */ + if (!((struct ppc_link_hash_entry *) h)->is_func) + return true; + + if (h->plt.refcount > 0 + && h->root.root.string[0] == '.' + && h->root.root.string[1] != '\0') + { + struct elf_link_hash_entry *fdh; + 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 + && info->shared + && (h->root.type == bfd_link_hash_undefined + || h->root.type == bfd_link_hash_undefweak)) + { + bfd *abfd; + asymbol *newsym; + + abfd = h->root.u.undef.abfd; + newsym = bfd_make_empty_symbol (abfd); + newsym->name = h->root.root.string + 1; + newsym->section = bfd_und_section_ptr; + newsym->value = 0; + newsym->flags = BSF_OBJECT; + if (h->root.type == bfd_link_hash_undefweak) + newsym->flags |= BSF_WEAK; + + if ( !(_bfd_generic_link_add_one_symbol + (info, abfd, newsym->name, newsym->flags, + newsym->section, newsym->value, NULL, false, false, + (struct bfd_link_hash_entry **) &fdh))) + { + return false; + } + fdh->elf_link_hash_flags &= ~ELF_LINK_NON_ELF; + } + + if (fdh != NULL + && (fdh->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0 + && (info->shared + || (fdh->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0 + || (fdh->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) != 0)) + { + if (fdh->dynindx == -1) + if (! bfd_elf64_link_record_dynamic_symbol (info, fdh)) + return false; + fdh->elf_link_hash_flags |= (h->elf_link_hash_flags + & (ELF_LINK_HASH_REF_REGULAR + | ELF_LINK_HASH_REF_DYNAMIC + | ELF_LINK_HASH_REF_REGULAR_NONWEAK + | ELF_LINK_NON_GOT_REF)); + if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) + { + fdh->plt.refcount = h->plt.refcount; + 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; + } + + /* Now that the info is on the function descriptor, clear the + function code sym info. Any function code syms for which we + don't have a definition in a regular file, we force local. + This prevents a shared library from exporting syms that have + 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; + _bfd_elf_link_hash_hide_symbol (info, h, force_local); + } + + return true; +} + +/* Called near the start of bfd_elf_size_dynamic_sections. We use + this hook to transfer dynamic linking information gathered so far + on function code symbol entries, to their corresponding function + descriptor symbol entries. */ +static boolean +ppc64_elf_func_desc_adjust (obfd, info) + bfd *obfd ATTRIBUTE_UNUSED; + struct bfd_link_info *info; +{ + struct ppc_link_hash_table *htab; + + htab = ppc_hash_table (info); + elf_link_hash_traverse (&htab->elf, func_desc_adjust, (PTR) info); + return true; +} + /* Adjust a symbol defined by a dynamic object and referenced by a regular object. The current definition is in some section of the dynamic object, but we're not including those sections. We have to @@ -2347,61 +2599,21 @@ ppc64_elf_adjust_dynamic_symbol (info, h htab = ppc_hash_table (info); - /* If this is a function, put it in the procedure linkage table. We - will fill in the contents of the procedure linkage table later. */ + /* Deal with function syms. */ if (h->type == STT_FUNC || (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0) { - struct elf_link_hash_entry *fdh; - - /* If it's a function entry point, the name starts with a dot - unless someone has written some poor assembly code. The ABI - for .plt calls requires that there be a function descriptor - sym which has the name of the function minus the dot. */ - - if (h->plt.refcount <= 0 - || h->root.root.string[0] != '.' - || h->root.root.string[1] == '\0' + /* Clear procedure linkage table information for any symbol that + won't need a .plt entry. */ + if (!((struct ppc_link_hash_entry *) h)->is_func_descriptor + || h->plt.refcount <= 0 + || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0 || (! info->shared && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)) { - /* This case can occur if we saw a PLT reloc in an input - file, but the symbol was never referred to by a dynamic - object, or if all references were garbage collected. In - such a case, we don't actually need to build a procedure - linkage table entry. */ h->plt.offset = (bfd_vma) -1; h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; - return true; - } - - /* Find the corresponding function descriptor symbol. Create it - as undefined if necessary. ppc_elf64_finish_dynamic_symbol - will look it up again and create a JMP_SLOT reloc for it. */ - - fdh = elf_link_hash_lookup (elf_hash_table (info), - h->root.root.string + 1, - false, false, false); - - if (fdh == NULL) - { - asymbol *newsym; - - /* Create it as undefined. */ - newsym = bfd_make_empty_symbol (htab->elf.dynobj); - newsym->name = h->root.root.string + 1; - newsym->section = bfd_und_section_ptr; - newsym->value = 0; - newsym->flags = BSF_DYNAMIC | BSF_OBJECT; - - if ( !(_bfd_generic_link_add_one_symbol - (info, htab->elf.dynobj, newsym->name, newsym->flags, - newsym->section, newsym->value, NULL, false, false, - (struct bfd_link_hash_entry **) &fdh))) - { - return false; - } } return true; } @@ -2444,7 +2656,7 @@ ppc64_elf_adjust_dynamic_symbol (info, h } /* If we didn't find any dynamic relocs in read-only sections, then - we'll be keeping the dynamic relocs and avoiding the copy reloc. */ + we'll be keeping the dynamic relocs and avoiding the copy reloc. */ if (p == NULL) { h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF; @@ -2496,6 +2708,30 @@ ppc64_elf_adjust_dynamic_symbol (info, h return true; } +/* If given a function descriptor symbol, hide both the function code + sym and the descriptor. */ +static void +ppc64_elf_hide_symbol (info, h, force_local) + struct bfd_link_info *info; + struct elf_link_hash_entry *h; + boolean force_local; +{ + _bfd_elf_link_hash_hide_symbol (info, h, force_local); + + 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); + if (fh != NULL) + _bfd_elf_link_hash_hide_symbol (info, fh, force_local); + } +} + /* This is the condition under which ppc64_elf_finish_dynamic_symbol will be called from elflink.h. If elflink.h doesn't call our finish_dynamic_symbol routine, we'll need to do something about @@ -2529,44 +2765,13 @@ allocate_dynrelocs (h, inf) htab = ppc_hash_table (info); if (htab->elf.dynamic_sections_created - && h->plt.refcount > 0) + && h->plt.refcount > 0 + && h->dynindx != -1) { - /* Make sure this symbol is output as a dynamic symbol. - Undefined weak syms won't yet be marked as dynamic. */ - if (h->dynindx == -1 - && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) - { - if (! bfd_elf64_link_record_dynamic_symbol (info, h)) - return false; - } - - BFD_ASSERT (h->root.root.string[0] == '.' - && h->root.root.string[1] != '\0'); + BFD_ASSERT (((struct ppc_link_hash_entry *) h)->is_func_descriptor); if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h)) { - /* Make sure the corresponding function descriptor symbol is - dynamic too. */ - - if (h->dynindx != -1) - { - struct elf_link_hash_entry *fdh; - - fdh = elf_link_hash_lookup (elf_hash_table (info), - h->root.root.string + 1, - false, false, false); - - if (fdh == NULL) - abort (); - - if (fdh->dynindx == -1 - && (fdh->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) - { - if (! bfd_elf64_link_record_dynamic_symbol (info, fdh)) - return false; - } - } - /* If this is the first .plt entry, make room for the special first entry. */ s = htab->splt; @@ -2578,17 +2783,17 @@ allocate_dynrelocs (h, inf) /* Make room for this entry. */ s->_raw_size += PLT_ENTRY_SIZE; - /* Point the function at the linkage stub. This works because - the only references to the function code sym are calls. - Function pointer comparisons use the function descriptor. */ - s = htab->sglink; - h->root.type = bfd_link_hash_defined; - h->root.u.def.section = s; - h->root.u.def.value = s->_raw_size; - h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; + /* Make room for the .stub and .glink code. */ + s = htab->sstub; + s->_raw_size += PLT_CALL_STUB_SIZE; - /* Make room for global linkage code in .glink. */ - s->_raw_size += PPC64_ELF_GLINK_SIZE; + s = htab->sglink; + if (s->_raw_size == 0) + s->_raw_size += GLINK_CALL_STUB_SIZE; + /* We need bigger stubs past index 32767. */ + if (s->_raw_size >= GLINK_CALL_STUB_SIZE + 32768*2*4) + s->_raw_size += 4; + s->_raw_size += 2*4; /* We also need to make an entry in the .rela.plt section. */ s = htab->srelplt; @@ -2790,10 +2995,12 @@ ppc64_elf_size_dynamic_sections (output_ linker script /DISCARD/, so we'll be discarding the relocs too. */ } - else + else if (p->count != 0) { srel = elf_section_data (p->sec)->sreloc; srel->_raw_size += p->count * sizeof (Elf64_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; } } } @@ -2830,11 +3037,14 @@ 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) { /* Strip this section if we don't need it; see the @@ -2881,12 +3091,18 @@ 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. */ - s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size); + 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); if (s->contents == NULL) return false; } - if (elf_hash_table (info)->dynamic_sections_created) + if (htab->elf.dynamic_sections_created) { /* Add some entries to the .dynamic section. We fill in the values later, in ppc64_elf_finish_dynamic_sections, but we @@ -2907,7 +3123,8 @@ ppc64_elf_size_dynamic_sections (output_ if (!add_dynamic_entry (DT_PLTGOT, 0) || !add_dynamic_entry (DT_PLTRELSZ, 0) || !add_dynamic_entry (DT_PLTREL, DT_RELA) - || !add_dynamic_entry (DT_JMPREL, 0)) + || !add_dynamic_entry (DT_JMPREL, 0) + || !add_dynamic_entry (DT_PPC64_GLINK, 0)) return false; } @@ -2920,7 +3137,9 @@ ppc64_elf_size_dynamic_sections (output_ /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, (PTR) info); + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, + (PTR) info); if ((info->flags & DF_TEXTREL) != 0) { @@ -2938,28 +3157,27 @@ ppc64_elf_size_dynamic_sections (output_ final symbol resolution and section placement has been determined. We use this hook to provide a value for TOCstart, which we store in - the output bfd elf_gp, then we call the generic ELF final link - routine. */ + the output bfd elf_gp. */ -static boolean -ppc64_elf_final_link (abfd, info) - bfd *abfd; +boolean +ppc64_elf_set_toc (obfd, info) + bfd *obfd; struct bfd_link_info *info; { - if (! info->relocateable) + if (!info->relocateable) { asection *s; bfd_vma TOCstart; - /* The TOC consists of sections .got, .toc, .tocbss, .plt in this + /* 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 (abfd, ".got"); + s = bfd_get_section_by_name (obfd, ".got"); if (s == NULL) - s = bfd_get_section_by_name (abfd, ".toc"); + s = bfd_get_section_by_name (obfd, ".toc"); if (s == NULL) - s = bfd_get_section_by_name (abfd, ".tocbss"); + s = bfd_get_section_by_name (obfd, ".tocbss"); if (s == NULL) - s = bfd_get_section_by_name (abfd, ".plt"); + s = bfd_get_section_by_name (obfd, ".plt"); if (s == NULL) { /* This may happen for @@ -2972,21 +3190,21 @@ ppc64_elf_final_link (abfd, info) /* Look for a likely section. We probably won't even be using TOCstart. */ - for (s = abfd->sections; s != NULL; s = s->next) + 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 = abfd->sections; s != NULL; s = s->next) + 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 = abfd->sections; s != NULL; s = s->next) + for (s = obfd->sections; s != NULL; s = s->next) if ((s->flags & (SEC_ALLOC | SEC_READONLY)) == SEC_ALLOC) break; if (s == NULL) - for (s = abfd->sections; s != NULL; s = s->next) + for (s = obfd->sections; s != NULL; s = s->next) if ((s->flags & SEC_ALLOC) == SEC_ALLOC) break; } @@ -2995,11 +3213,231 @@ ppc64_elf_final_link (abfd, info) if (s != NULL) TOCstart = s->output_section->vma + s->output_offset; - elf_gp (abfd) = TOCstart; + elf_gp (obfd) = TOCstart; } + 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. */ + +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; + + /* .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 (); + + /* If no .plt, then nothing to do. */ + if (htab->splt == NULL || htab->splt->_raw_size == 0) + return true; - /* Invoke the regular ELF backend linker to do all the work. */ - return bfd_elf64_bfd_final_link (abfd, info); + 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 (next_64k <= plt_offset + htab->splt->_raw_size) + 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; +} + +/* Build a .plt call stub. */ + +static bfd_byte * +build_plt_stub (obfd, p, offset, glink) + bfd *obfd; + bfd_byte *p; + int offset; + int glink; +{ +#define PPC_LO(v) ((v) & 0xffff) +#define PPC_HI(v) (((v) >> 16) & 0xffff) +#define PPC_HA(v) PPC_HI ((v) + 0x8000) + + if (glink) + bfd_put_32 (obfd, LD_R2_40R1, p), p += 4; + bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (offset), p), p += 4; + if (!glink) + bfd_put_32 (obfd, STD_R2_40R1, p), p += 4; + bfd_put_32 (obfd, LD_R11_0R12 | PPC_LO (offset), p), p += 4; + if (PPC_HA (offset + 8) != PPC_HA (offset)) + bfd_put_32 (obfd, ADDIS_R12_R12_1, p), p += 4; + offset += 8; + bfd_put_32 (obfd, LD_R2_0R12 | PPC_LO (offset), p), p += 4; + if (PPC_HA (offset + 8) != PPC_HA (offset)) + bfd_put_32 (obfd, ADDIS_R12_R12_1, p), p += 4; + offset += 8; + bfd_put_32 (obfd, MTCTR_R11, p), p += 4; + bfd_put_32 (obfd, LD_R11_0R12 | PPC_LO (offset), p), p += 4; + bfd_put_32 (obfd, BCTR, p), p += 4; + return p; +} + +/* Build the stubs for one function call. */ + +static boolean +build_one_stub (h, inf) + struct elf_link_hash_entry *h; + PTR inf; +{ + struct bfd_link_info *info; + struct ppc_link_hash_table *htab; + + 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); + + if (htab->elf.dynamic_sections_created + && h->plt.offset != (bfd_vma) -1 + && ((struct ppc_link_hash_entry *) h)->is_func_descriptor) + { + struct elf_link_hash_entry *fh; + asection *s; + bfd_vma plt_r2; + bfd_byte *p; + unsigned int indx; + + fh = elf_link_hash_lookup (&htab->elf, h->root.root.string - 1, + false, false, true); + + if (fh == NULL) + abort (); + + BFD_ASSERT (((struct ppc_link_hash_entry *) fh)->is_func); + + /* 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); + + if (plt_r2 + 0x80000000 > 0xffffffff + || (plt_r2 & 3) != 0) + { + (*_bfd_error_handler) + (_("linkage table error against `%s'"), + h->root.root.string); + bfd_set_error (bfd_error_bad_value); + htab->plt_overflow = 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; + + /* Build the .glink lazy link call stub. */ + s = htab->sglink; + p = s->contents + s->_cooked_size; + indx = s->reloc_count; + if (indx < 0x8000) + { + bfd_put_32 (s->owner, LI_R0_0 | indx, p); + p += 4; + } + else + { + bfd_put_32 (s->owner, LIS_R0_0 | PPC_HI (indx), p); + p += 4; + bfd_put_32 (s->owner, ORI_R0_R0_0 | PPC_LO (indx), p); + p += 4; + } + bfd_put_32 (s->owner, B_DOT | ((s->contents - p) & 0x3fffffc), p); + p += 4; + s->_cooked_size = p - s->contents; + s->reloc_count += 1; + } + return true; +} + +boolean +ppc64_elf_build_stubs (obfd, info) + bfd *obfd; + struct bfd_link_info *info; +{ + struct ppc_link_hash_table *htab = ppc_hash_table (info); + bfd_vma old_stub_size; + 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; + + /* 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) + { + 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; + + elf_link_hash_traverse (&htab->elf, build_one_stub, (PTR) info); + htab->sglink->reloc_count = 0; + + if (htab->plt_overflow) + return false; + + if (old_stub_size != htab->sstub->_cooked_size + || 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; + } + return true; } /* Set up any other section flags and such that may be necessary. */ @@ -3068,6 +3506,7 @@ ppc64_elf_relocate_section (output_bfd, bfd_vma *local_got_offsets; bfd_vma TOCstart; boolean ret = true; + boolean is_opd; /* Initialize howto table if needed. */ if (!ppc64_elf_howto_table[R_PPC64_ADDR32]) @@ -3078,6 +3517,7 @@ ppc64_elf_relocate_section (output_bfd, TOCstart = elf_gp (output_bfd); symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr; sym_hashes = elf_sym_hashes (input_bfd); + is_opd = strcmp (bfd_get_section_name (abfd, input_section), ".opd") == 0; rel = relocs; relend = relocs + input_section->reloc_count; @@ -3094,6 +3534,7 @@ ppc64_elf_relocate_section (output_bfd, unsigned long r_symndx; bfd_vma relocation; boolean unresolved_reloc; + boolean has_nop; long insn; r_type = (enum elf_ppc_reloc_type) ELF64_R_TYPE (rel->r_info); @@ -3140,9 +3581,8 @@ ppc64_elf_relocate_section (output_bfd, sec = local_sections[r_symndx]; sym_name = ""; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + addend = rel->r_addend; } else { @@ -3183,7 +3623,6 @@ ppc64_elf_relocate_section (output_bfd, || info->no_undefined || ELF_ST_VISIBILITY (h->other))))) return false; - relocation = 0; } } @@ -3224,26 +3663,52 @@ ppc64_elf_relocate_section (output_bfd, 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; if (h != NULL - && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0 + && h->plt.offset != (bfd_vma) -1 + && htab->sstub != 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; + /* Make sure that there really is an instruction after the branch that we can decode. */ - && offset + 8 <= input_section->_cooked_size) - { - bfd_byte *pnext; + if (offset + 8 <= input_section->_cooked_size) + { + bfd_byte *pnext; - pnext = contents + offset + 4; - insn = bfd_get_32 (input_bfd, 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 */ - { - bfd_put_32 (input_bfd, - (bfd_vma) 0xe8410028, /* ld r2,40(r1) */ - pnext); + if (insn == 0x60000000 /* nop (ori r0,r0,0) */ + || insn == 0x4def7b82 /* cror 15,15,15 */ + || insn == 0x4ffffb82) /* cror 31,31,31 */ + { + bfd_put_32 (input_bfd, + (bfd_vma) 0xe8410028, /* ld r2,40(r1) */ + pnext); + has_nop = 1; + } } } + + 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; + } break; } @@ -3401,21 +3866,12 @@ ppc64_elf_relocate_section (output_bfd, which is the address of the start of the TOC plus 0x8000. The TOC consists of sections .got, .toc, .tocbss, and .plt, in this order. */ - case R_PPC64_TOC16: case R_PPC64_TOC16_LO: case R_PPC64_TOC16_HI: case R_PPC64_TOC16_DS: case R_PPC64_TOC16_LO_DS: case R_PPC64_TOC16_HA: - /* Only .got, .toc and *UND* symbols are allowed. */ - BFD_ASSERT (sec != (asection *) 0 - && (bfd_is_und_section (sec) - || strcmp (bfd_get_section_name (abfd, sec), - ".toc") == 0 - || strcmp (bfd_get_section_name (abfd, sec), - ".got") == 0)); - addend -= TOCstart + TOC_BASE_OFF; break; @@ -3430,12 +3886,14 @@ ppc64_elf_relocate_section (output_bfd, addend -= sec->output_section->vma; break; + 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_REL24: case R_PPC64_REL32: case R_PPC64_REL64: case R_PPC64_ADDR14: @@ -3458,12 +3916,18 @@ ppc64_elf_relocate_section (output_bfd, case R_PPC64_UADDR16: case R_PPC64_UADDR32: case R_PPC64_UADDR64: - case R_PPC64_TOC: /* r_symndx will be zero only for relocs against symbols from removed linkonce sections, or sections discarded by a linker script. */ - if (r_symndx == 0 - || (input_section->flags & SEC_ALLOC) == 0) + if (r_symndx == 0) + break; + /* Fall thru. */ + + case R_PPC64_TOC: + if ((input_section->flags & SEC_ALLOC) == 0) + break; + + if (NO_OPD_RELOCS && is_opd) break; if ((info->shared @@ -3495,20 +3959,11 @@ ppc64_elf_relocate_section (output_bfd, skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, htab->elf.stab_info, input_section, - &elf_section_data (input_section)->stab_info, - offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -3521,6 +3976,7 @@ ppc64_elf_relocate_section (output_bfd, } else if (h != NULL && h->dynindx != -1 + && !is_opd && (!IS_ABSOLUTE_RELOC (r_type) || !info->shared || !info->symbolic @@ -3532,10 +3988,12 @@ ppc64_elf_relocate_section (output_bfd, } else { - /* This symbol is local, or marked to become local. */ + /* This symbol is local, or marked to become local, + or this is an opd section reloc which must point + at a local function. */ outrel.r_addend += relocation; relocate = true; - if (r_type == R_PPC64_ADDR64) + if (r_type == R_PPC64_ADDR64 || r_type == R_PPC64_TOC) { outrel.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE); } @@ -3543,7 +4001,7 @@ ppc64_elf_relocate_section (output_bfd, { long indx = 0; - if (r_type == R_PPC64_TOC || bfd_is_abs_section (sec)) + if (bfd_is_abs_section (sec)) ; else if (sec == NULL || sec->owner == NULL) { @@ -3742,31 +4200,18 @@ ppc64_elf_finish_dynamic_symbol (output_ htab = ppc_hash_table (info); dynobj = htab->elf.dynobj; - if (h->plt.offset != (bfd_vma) -1) + if (h->plt.offset != (bfd_vma) -1 + && ((struct ppc_link_hash_entry *) h)->is_func_descriptor) { - struct elf_link_hash_entry *funcdesc_h; Elf_Internal_Rela rela; Elf64_External_Rela *loc; /* This symbol has an entry in the procedure linkage table. Set it up. */ - if (h->dynindx == -1 - || htab->splt == NULL + if (htab->splt == NULL || htab->srelplt == NULL - || htab->sglink == NULL - || h->root.root.string[0] != '.' - || h->root.root.string[1] == '\0') - abort (); - - /* Find its corresponding function descriptor. - ppc64_elf_adjust_dynamic_symbol has already set it up for us. */ - - funcdesc_h = elf_link_hash_lookup (elf_hash_table (info), - h->root.root.string + 1, - false, false, false); - - if (funcdesc_h == NULL || funcdesc_h->dynindx == -1) + || htab->sglink == NULL) abort (); /* Create a JMP_SLOT reloc to inform the dynamic linker to @@ -3775,48 +4220,12 @@ ppc64_elf_finish_dynamic_symbol (output_ rela.r_offset = (htab->splt->output_section->vma + htab->splt->output_offset + h->plt.offset); - rela.r_info = ELF64_R_INFO (funcdesc_h->dynindx, R_PPC64_JMP_SLOT); + rela.r_info = ELF64_R_INFO (h->dynindx, R_PPC64_JMP_SLOT); rela.r_addend = 0; loc = (Elf64_External_Rela *) htab->srelplt->contents; loc += (h->plt.offset - PLT_INITIAL_ENTRY_SIZE) / PLT_ENTRY_SIZE; bfd_elf64_swap_reloca_out (output_bfd, &rela, loc); - - /* We need to create a linkage function. */ - if (h->root.u.def.section == htab->sglink) - { - bfd_byte *p; - bfd_vma pltoff; - const unsigned int *stub; - - /* Where to write it. */ - p = h->root.u.def.section->contents + h->root.u.def.value; - - /* The function descriptor is in the PLT. */ - pltoff = htab->splt->output_section->vma - + htab->splt->output_section->output_offset - + h->plt.offset - - elf_gp (output_bfd) - TOC_BASE_OFF; - - if (pltoff + 0x8000 > 0xffff) - { - (*_bfd_error_handler) - (_("linkage table overflow against `%s'"), - h->root.root.string); - } - - /* Write it out. */ - stub = ppc64_elf_glink_code; - bfd_put_32 (output_bfd, *stub | (pltoff & 0xfffc), p); - while (p += 4, ++stub < (ppc64_elf_glink_code - + (sizeof (ppc64_elf_glink_code) - / sizeof (*ppc64_elf_glink_code)))); - { - bfd_put_32 (output_bfd, (bfd_vma) *stub, p); - } - } - else - abort (); } if (h->got.offset != (bfd_vma) -1) @@ -3953,19 +4362,30 @@ ppc64_elf_finish_dynamic_sections (outpu default: continue; + case DT_PPC64_GLINK: + dyn.d_un.d_ptr = (htab->sglink->output_section->vma + + htab->sglink->output_offset); + break; + case DT_PLTGOT: - dyn.d_un.d_ptr = htab->splt->output_section->vma; + dyn.d_un.d_ptr = (htab->splt->output_section->vma + + htab->splt->output_offset); break; case DT_JMPREL: - dyn.d_un.d_ptr = htab->srelplt->output_section->vma; + dyn.d_un.d_ptr = (htab->srelplt->output_section->vma + + htab->srelplt->output_offset); break; case DT_PLTRELSZ: - if (htab->srelplt->output_section->_cooked_size != 0) - dyn.d_un.d_val = htab->srelplt->output_section->_cooked_size; - else - dyn.d_un.d_val = htab->srelplt->output_section->_raw_size; + dyn.d_un.d_val = htab->srelplt->_raw_size; + break; + + case DT_RELASZ: + /* Don't count procedure linkage table relocs in the + overall reloc count. */ + if (htab->srelplt != NULL) + dyn.d_un.d_val -= htab->srelplt->_raw_size; break; } @@ -3973,6 +4393,25 @@ ppc64_elf_finish_dynamic_sections (outpu } } + if (htab->sgot != NULL && htab->sgot->_raw_size != 0) + { + /* Fill in the first entry in the global offset table. + We use it to hold the link-time TOCbase. */ + bfd_put_64 (output_bfd, + elf_gp (output_bfd) + TOC_BASE_OFF, + htab->sgot->contents); + + /* Set .got entry size. */ + elf_section_data (htab->sgot->output_section)->this_hdr.sh_entsize = 8; + } + + if (htab->splt != NULL && htab->splt->_raw_size != 0) + { + /* Set .plt entry size. */ + elf_section_data (htab->splt->output_section)->this_hdr.sh_entsize + = PLT_ENTRY_SIZE; + } + return true; } @@ -3998,18 +4437,15 @@ ppc64_elf_finish_dynamic_sections (outpu #define elf_backend_plt_alignment 3 #define elf_backend_plt_not_loaded 1 #define elf_backend_got_symbol_offset 0 -#define elf_backend_got_header_size 0 +#define elf_backend_got_header_size 8 +#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 -#define elf_backend_plt_header_size PLT_INITIAL_ENTRY_SIZE - #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_copy_private_bfd_data ppc64_elf_copy_private_bfd_data #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_final_link ppc64_elf_final_link #define elf_backend_section_from_shdr ppc64_elf_section_from_shdr #define elf_backend_create_dynamic_sections ppc64_elf_create_dynamic_sections @@ -4018,6 +4454,8 @@ ppc64_elf_finish_dynamic_sections (outpu #define elf_backend_gc_mark_hook ppc64_elf_gc_mark_hook #define elf_backend_gc_sweep_hook ppc64_elf_gc_sweep_hook #define elf_backend_adjust_dynamic_symbol ppc64_elf_adjust_dynamic_symbol +#define elf_backend_hide_symbol ppc64_elf_hide_symbol +#define elf_backend_always_size_sections ppc64_elf_func_desc_adjust #define elf_backend_size_dynamic_sections ppc64_elf_size_dynamic_sections #define elf_backend_fake_sections ppc64_elf_fake_sections #define elf_backend_relocate_section ppc64_elf_relocate_section diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-ppc.h binutils-2.11.93.0.2/bfd/elf64-ppc.h --- binutils-2.11.92.0.12.3/bfd/elf64-ppc.h Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/elf64-ppc.h Sun Feb 3 11:22:30 2002 @@ -0,0 +1,22 @@ +/* PowerPC64-specific support for 64-bit ELF. + Copyright 2002 Free Software Foundation, Inc. + +This file is part of BFD, the Binary File Descriptor library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +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 *)); diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-s390.c binutils-2.11.93.0.2/bfd/elf64-s390.c --- binutils-2.11.92.0.12.3/bfd/elf64-s390.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-s390.c Thu Feb 7 10:21:03 2002 @@ -839,7 +839,7 @@ elf_s390_check_relocs (abfd, info, sec, /* This relocation describes which C++ vtable entries are actually used. Record for later use during GC. */ case R_390_GNU_VTENTRY: - if (!_bfd_elf64_gc_record_vtentry (abfd, sec, h, rel->r_offset)) + if (!_bfd_elf64_gc_record_vtentry (abfd, sec, h, rel->r_addend)) return false; break; @@ -887,13 +887,7 @@ elf_s390_gc_mark_hook (abfd, info, rel, } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1032,7 +1026,9 @@ elf_s390_adjust_dynamic_symbol (info, h) if (h->plt.refcount <= 0 || (! info->shared && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0 - && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)) + && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0 + && h->root.type != bfd_link_hash_undefweak + && h->root.type != bfd_link_hash_undefined)) { /* This case can occur if we saw a PLT32 reloc in an input file, but the symbol was never referred to by a dynamic @@ -1422,10 +1418,12 @@ elf_s390_size_dynamic_sections (output_b linker script /DISCARD/, so we'll be discarding the relocs too. */ } - else + else if (p->count != 0) { srela = elf_section_data (p->sec)->sreloc; srela->_raw_size += p->count * sizeof (Elf64_External_Rela); + if ((p->sec->output_section->flags & SEC_READONLY) != 0) + info->flags |= DF_TEXTREL; } } } @@ -1547,7 +1545,9 @@ elf_s390_size_dynamic_sections (output_b /* If any dynamic relocs apply to a read-only section, then we need a DT_TEXTREL entry. */ - elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, (PTR) info); + if ((info->flags & DF_TEXTREL) == 0) + elf_link_hash_traverse (&htab->elf, readonly_dynrelocs, + (PTR) info); if ((info->flags & DF_TEXTREL) != 0) { @@ -1643,9 +1643,7 @@ elf_s390_relocate_section (output_bfd, i { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -1893,18 +1891,11 @@ elf_s390_relocate_section (output_bfd, i skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - off = (_bfd_stab_section_offset - (output_bfd, htab->elf.stab_info, input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-sparc.c binutils-2.11.93.0.2/bfd/elf64-sparc.c --- binutils-2.11.92.0.12.3/bfd/elf64-sparc.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-sparc.c Sun Feb 3 11:22:30 2002 @@ -69,8 +69,6 @@ static boolean sparc64_elf_output_arch_s static void sparc64_elf_symbol_processing PARAMS ((bfd *, asymbol *)); -static boolean sparc64_elf_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); static boolean sparc64_elf_merge_private_bfd_data PARAMS ((bfd *, bfd *)); @@ -118,7 +116,7 @@ static reloc_howto_type sparc64_elf_howt HOWTO(R_SPARC_32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_32", false,0,0xffffffff,true), HOWTO(R_SPARC_DISP8, 0,0, 8,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP8", false,0,0x000000ff,true), HOWTO(R_SPARC_DISP16, 0,1,16,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP16", false,0,0x0000ffff,true), - HOWTO(R_SPARC_DISP32, 0,2,32,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP32", false,0,0x00ffffff,true), + HOWTO(R_SPARC_DISP32, 0,2,32,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP32", false,0,0xffffffff,true), HOWTO(R_SPARC_WDISP30, 2,2,30,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_WDISP30", false,0,0x3fffffff,true), HOWTO(R_SPARC_WDISP22, 2,2,22,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_WDISP22", false,0,0x003fffff,true), HOWTO(R_SPARC_HI22, 10,2,22,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_HI22", false,0,0x003fffff,true), @@ -137,8 +135,8 @@ static reloc_howto_type sparc64_elf_howt HOWTO(R_SPARC_RELATIVE, 0,0,00,false,0,complain_overflow_dont, bfd_elf_generic_reloc, "R_SPARC_RELATIVE",false,0,0x00000000,true), HOWTO(R_SPARC_UA32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_UA32", false,0,0xffffffff,true), #ifndef SPARC64_OLD_RELOCS + HOWTO(R_SPARC_PLT32, 0,2,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_PLT32", false,0,0xffffffff,true), /* These aren't implemented yet. */ - HOWTO(R_SPARC_PLT32, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsup_reloc, "R_SPARC_PLT32", false,0,0x00000000,true), HOWTO(R_SPARC_HIPLT22, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsup_reloc, "R_SPARC_HIPLT22", false,0,0x00000000,true), HOWTO(R_SPARC_LOPLT10, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsup_reloc, "R_SPARC_LOPLT10", false,0,0x00000000,true), HOWTO(R_SPARC_PCPLT32, 0,0,00,false,0,complain_overflow_dont, sparc_elf_notsup_reloc, "R_SPARC_PCPLT32", false,0,0x00000000,true), @@ -162,7 +160,7 @@ static reloc_howto_type sparc64_elf_howt HOWTO(R_SPARC_5, 0,2, 5,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_5", false,0,0x0000001f,true), HOWTO(R_SPARC_6, 0,2, 6,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_6", false,0,0x0000003f,true), HOWTO(R_SPARC_DISP64, 0,4,64,true, 0,complain_overflow_signed, bfd_elf_generic_reloc, "R_SPARC_DISP64", false,0,MINUS_ONE, true), - HOWTO(R_SPARC_PLT64, 0,4,64,false,0,complain_overflow_bitfield,sparc_elf_notsup_reloc, "R_SPARC_PLT64", false,0,MINUS_ONE, false), + HOWTO(R_SPARC_PLT64, 0,4,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_PLT64", false,0,MINUS_ONE, true), HOWTO(R_SPARC_HIX22, 0,4, 0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc, "R_SPARC_HIX22", false,0,MINUS_ONE, false), HOWTO(R_SPARC_LOX10, 0,4, 0,false,0,complain_overflow_dont, sparc_elf_lox10_reloc, "R_SPARC_LOX10", false,0,MINUS_ONE, false), HOWTO(R_SPARC_H44, 22,2,22,false,0,complain_overflow_unsigned,bfd_elf_generic_reloc, "R_SPARC_H44", false,0,0x003fffff,false), @@ -182,6 +180,7 @@ static const struct elf_reloc_map sparc_ { { BFD_RELOC_NONE, R_SPARC_NONE, }, { BFD_RELOC_16, R_SPARC_16, }, + { BFD_RELOC_16_PCREL, R_SPARC_DISP16 }, { BFD_RELOC_8, R_SPARC_8 }, { BFD_RELOC_8_PCREL, R_SPARC_DISP8 }, { BFD_RELOC_CTOR, R_SPARC_64 }, @@ -190,6 +189,7 @@ static const struct elf_reloc_map sparc_ { BFD_RELOC_HI22, R_SPARC_HI22 }, { BFD_RELOC_LO10, R_SPARC_LO10, }, { BFD_RELOC_32_PCREL_S2, R_SPARC_WDISP30 }, + { BFD_RELOC_64_PCREL, R_SPARC_DISP64 }, { BFD_RELOC_SPARC22, R_SPARC_22 }, { BFD_RELOC_SPARC13, R_SPARC_13 }, { BFD_RELOC_SPARC_GOT10, R_SPARC_GOT10 }, @@ -222,6 +222,9 @@ static const struct elf_reloc_map sparc_ { BFD_RELOC_SPARC_5, R_SPARC_5 }, { BFD_RELOC_SPARC_6, R_SPARC_6 }, { BFD_RELOC_SPARC_DISP64, R_SPARC_DISP64 }, +#ifndef SPARC64_OLD_RELOCS + { BFD_RELOC_SPARC_PLT32, R_SPARC_PLT32 }, +#endif { BFD_RELOC_SPARC_PLT64, R_SPARC_PLT64 }, { BFD_RELOC_SPARC_HIX22, R_SPARC_HIX22 }, { BFD_RELOC_SPARC_LOX10, R_SPARC_LOX10 }, @@ -1169,8 +1172,10 @@ sparc64_elf_check_relocs (abfd, info, se } h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT; - break; - + if (ELF64_R_TYPE_ID (rel->r_info) != R_SPARC_PLT32 + && ELF64_R_TYPE_ID (rel->r_info) != R_SPARC_PLT64) + break; + /* Fall through. */ case R_SPARC_PC10: case R_SPARC_PC22: case R_SPARC_PC_HH22: @@ -1326,11 +1331,9 @@ sparc64_elf_add_symbol_hook (abfd, info, if (p->name != NULL && strcmp (p->name, *namep)) { (*_bfd_error_handler) - (_("Register %%g%d used incompatibly: %s in %s"), + (_("Register %%g%d used incompatibly: %s in %s, previously %s in %s"), (int) sym->st_value, - **namep ? *namep : "#scratch", bfd_archive_filename (abfd)); - (*_bfd_error_handler) - (_(" previously %s in %s"), + **namep ? *namep : "#scratch", bfd_archive_filename (abfd), *p->name ? p->name : "#scratch", bfd_archive_filename (p->abfd)); return false; } @@ -1351,10 +1354,8 @@ sparc64_elf_add_symbol_hook (abfd, info, if (type > STT_FUNC) type = 0; (*_bfd_error_handler) - (_("Symbol `%s' has differing types: %s in %s"), - *namep, "REGISTER", bfd_archive_filename (abfd)); - (*_bfd_error_handler) - (_(" previously %s in %s"), + (_("Symbol `%s' has differing types: REGISTER in %s, previously %s in %s"), + *namep, bfd_archive_filename (abfd), stt_types[type], bfd_archive_filename (p->abfd)); return false; } @@ -1400,11 +1401,9 @@ sparc64_elf_add_symbol_hook (abfd, info, if (type > STT_FUNC) type = 0; (*_bfd_error_handler) - (_("Symbol `%s' has differing types: %s in %s"), - *namep, stt_types[type], bfd_archive_filename (abfd)); - (*_bfd_error_handler) - (_(" previously %s in %s"), - "REGISTER", bfd_archive_filename (p->abfd)); + (_("Symbol `%s' has differing types: %s in %s, previously REGISTER in %s"), + *namep, stt_types[type], bfd_archive_filename (abfd), + bfd_archive_filename (p->abfd)); return false; } } @@ -1931,6 +1930,7 @@ sparc64_elf_relocate_section (output_bfd asection *sec; bfd_vma relocation; bfd_reloc_status_type r; + boolean is_plt = false; r_type = ELF64_R_TYPE_ID (rel->r_info); if (r_type < 0 || r_type >= (int) R_SPARC_max_std) @@ -1969,9 +1969,7 @@ sparc64_elf_relocate_section (output_bfd { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); } else { @@ -2055,7 +2053,15 @@ sparc64_elf_relocate_section (output_bfd if (info->shared && ((!info->symbolic && h->dynindx != -1) || !(h->elf_link_hash_flags - & ELF_LINK_HASH_DEF_REGULAR))) + & ELF_LINK_HASH_DEF_REGULAR)) + && ((input_section->flags & SEC_ALLOC) != 0 + /* DWARF will emit R_SPARC_{32,64} relocations in + its sections against symbols defined externally + in shared libraries. We can't do anything + with them here. */ + || ((input_section->flags & SEC_DEBUGGING) != 0 + && (h->elf_link_hash_flags + & ELF_LINK_HASH_DEF_DYNAMIC) != 0))) skip_it = true; break; } @@ -2101,6 +2107,7 @@ sparc64_elf_relocate_section (output_bfd } } +do_dynreloc: /* When generating a shared object, these relocations are copied into the output file to be resolved at run time. */ if (info->shared && r_symndx != 0 && (input_section->flags & SEC_ALLOC)) @@ -2178,21 +2185,11 @@ sparc64_elf_relocate_section (output_bfd skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rel->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rel->r_offset)); - if (off == MINUS_ONE) - skip = true; - outrel.r_offset = off; - } + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rel->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); @@ -2225,7 +2222,7 @@ sparc64_elf_relocate_section (output_bfd memset (&outrel, 0, sizeof outrel); /* h->dynindx may be -1 if the symbol was marked to become local. */ - else if (h != NULL + else if (h != NULL && ! is_plt && ((! info->symbolic && h->dynindx != -1) || (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)) @@ -2249,7 +2246,9 @@ sparc64_elf_relocate_section (output_bfd { long indx; - if (h == NULL) + if (is_plt) + sec = splt; + else if (h == NULL) sec = local_sections[r_symndx]; else { @@ -2439,6 +2438,12 @@ sparc64_elf_relocate_section (output_bfd + sparc64_elf_plt_entry_offset (h->plt.offset)); if (r_type == R_SPARC_WPLT30) goto do_wplt30; + if (r_type == R_SPARC_PLT32 || r_type == R_SPARC_PLT64) + { + r_type = r_type == R_SPARC_PLT32 ? R_SPARC_32 : R_SPARC_64; + is_plt = true; + goto do_dynreloc; + } goto do_default; case R_SPARC_OLO10: @@ -2946,24 +2951,6 @@ sparc64_elf_reloc_type_class (rela) /* Functions for dealing with the e_flags field. */ -/* Copy backend specific data from one object module to another */ -static boolean -sparc64_elf_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd, *obfd; -{ - if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ @@ -3185,8 +3172,6 @@ const struct elf_size_info sparc64_elf_s sparc64_elf_print_symbol_all #define elf_backend_output_arch_syms \ sparc64_elf_output_arch_syms -#define bfd_elf64_bfd_copy_private_bfd_data \ - sparc64_elf_copy_private_bfd_data #define bfd_elf64_bfd_merge_private_bfd_data \ sparc64_elf_merge_private_bfd_data diff -uprN binutils-2.11.92.0.12.3/bfd/elf64-x86-64.c binutils-2.11.93.0.2/bfd/elf64-x86-64.c --- binutils-2.11.92.0.12.3/bfd/elf64-x86-64.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elf64-x86-64.c Sun Feb 3 11:22:30 2002 @@ -666,13 +666,7 @@ elf64_x86_64_gc_mark_hook (abfd, info, r } else { - if (!(elf_bad_symtab (abfd) - && ELF_ST_BIND (sym->st_info) != STB_LOCAL) - && ! ((sym->st_shndx <= 0 || sym->st_shndx >= SHN_LORESERVE) - && sym->st_shndx != SHN_COMMON)) - { - return bfd_section_from_elf_index (abfd, sym->st_shndx); - } + return bfd_section_from_elf_index (abfd, sym->st_shndx); } return NULL; @@ -1229,9 +1223,7 @@ elf64_x86_64_relocate_section (output_bf { sym = local_syms + r_symndx; sec = local_sections[r_symndx]; - relocation = (sec->output_section->vma - + sec->output_offset - + sym->st_value); + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rela); } else { @@ -1475,21 +1467,11 @@ elf64_x86_64_relocate_section (output_bf skip = false; - if (elf_section_data (input_section)->stab_info == NULL) - outrel.r_offset = rela->r_offset; - else - { - bfd_vma off; - - off = (_bfd_stab_section_offset - (output_bfd, &elf_hash_table (info)->stab_info, - input_section, - &elf_section_data (input_section)->stab_info, - rela->r_offset)); - if (off == (bfd_vma) -1) - skip = true; - outrel.r_offset = off; - } + outrel.r_offset = + _bfd_elf_section_offset (output_bfd, info, input_section, + rela->r_offset); + if (outrel.r_offset == (bfd_vma) -1) + skip = true; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); diff -uprN binutils-2.11.92.0.12.3/bfd/elfcode.h binutils-2.11.93.0.2/bfd/elfcode.h --- binutils-2.11.92.0.12.3/bfd/elfcode.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elfcode.h Sun Feb 3 11:22:30 2002 @@ -203,9 +203,10 @@ static char *elf_symbol_flags PARAMS ((f format. */ void -elf_swap_symbol_in (abfd, src, dst) +elf_swap_symbol_in (abfd, src, shndx, dst) bfd *abfd; const Elf_External_Sym *src; + const Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *dst; { int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma; @@ -219,24 +220,40 @@ elf_swap_symbol_in (abfd, src, dst) dst->st_info = H_GET_8 (abfd, src->st_info); dst->st_other = H_GET_8 (abfd, src->st_other); dst->st_shndx = H_GET_16 (abfd, src->st_shndx); + if (dst->st_shndx == SHN_XINDEX) + { + if (shndx == NULL) + abort (); + dst->st_shndx = H_GET_32 (abfd, shndx->est_shndx); + } } /* Translate an ELF symbol in internal format into an ELF symbol in external format. */ void -elf_swap_symbol_out (abfd, src, cdst) +elf_swap_symbol_out (abfd, src, cdst, shndx) bfd *abfd; const Elf_Internal_Sym *src; PTR cdst; + PTR shndx; { + unsigned int tmp; Elf_External_Sym *dst = (Elf_External_Sym *) cdst; H_PUT_32 (abfd, src->st_name, dst->st_name); H_PUT_WORD (abfd, src->st_value, dst->st_value); H_PUT_WORD (abfd, src->st_size, dst->st_size); H_PUT_8 (abfd, src->st_info, dst->st_info); H_PUT_8 (abfd, src->st_other, dst->st_other); - H_PUT_16 (abfd, src->st_shndx, dst->st_shndx); + tmp = src->st_shndx; + if (tmp > SHN_HIRESERVE) + { + if (shndx == NULL) + abort (); + H_PUT_32 (abfd, tmp, shndx); + tmp = SHN_XINDEX; + } + H_PUT_16 (abfd, tmp, dst->st_shndx); } /* Translate an ELF file header in external format into an ELF file header in @@ -277,6 +294,7 @@ elf_swap_ehdr_out (abfd, src, dst) const Elf_Internal_Ehdr *src; Elf_External_Ehdr *dst; { + unsigned int tmp; int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma; memcpy (dst->e_ident, src->e_ident, EI_NIDENT); /* note that all elements of dst are *arrays of unsigned char* already... */ @@ -294,8 +312,14 @@ elf_swap_ehdr_out (abfd, src, dst) H_PUT_16 (abfd, src->e_phentsize, dst->e_phentsize); H_PUT_16 (abfd, src->e_phnum, dst->e_phnum); H_PUT_16 (abfd, src->e_shentsize, dst->e_shentsize); - H_PUT_16 (abfd, src->e_shnum, dst->e_shnum); - H_PUT_16 (abfd, src->e_shstrndx, dst->e_shstrndx); + tmp = src->e_shnum; + if (tmp >= SHN_LORESERVE) + tmp = SHN_UNDEF; + H_PUT_16 (abfd, tmp, dst->e_shnum); + tmp = src->e_shstrndx; + if (tmp >= SHN_LORESERVE) + tmp = SHN_XINDEX; + H_PUT_16 (abfd, tmp, dst->e_shstrndx); } /* Translate an ELF section header table entry in external format into an @@ -479,6 +503,16 @@ elf_file_p (x_ehdrp) && (x_ehdrp->e_ident[EI_MAG3] == ELFMAG3)); } +struct bfd_preserve +{ + const struct bfd_arch_info *arch_info; + struct elf_obj_tdata *tdata; + struct bfd_hash_table section_htab; + struct sec *sections; + struct sec **section_tail; + unsigned int section_count; +}; + /* Check to see if the file associated with ABFD matches the target vector that ABFD points to. @@ -494,23 +528,17 @@ elf_object_p (abfd) Elf_External_Ehdr x_ehdr; /* Elf file header, external form */ Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */ Elf_External_Shdr x_shdr; /* Section header table entry, external form */ - Elf_Internal_Shdr *i_shdrp = NULL; /* Section header table, internal form */ + Elf_Internal_Shdr i_shdr; + Elf_Internal_Shdr *i_shdrp; /* Section header table, internal form */ unsigned int shindex; char *shstrtab; /* Internal copy of section header stringtab */ struct elf_backend_data *ebd; - struct elf_obj_tdata *preserved_tdata = elf_tdata (abfd); - struct sec *preserved_sections = abfd->sections; - unsigned int preserved_section_count = abfd->section_count; - enum bfd_architecture previous_arch = bfd_get_arch (abfd); - unsigned long previous_mach = bfd_get_mach (abfd); + struct bfd_preserve preserve; struct elf_obj_tdata *new_tdata = NULL; asection *s; bfd_size_type amt; - /* Clear section information, since there might be a recognized bfd that - we now check if we can replace, and we don't want to append to it. */ - abfd->sections = NULL; - abfd->section_count = 0; + preserve.arch_info = abfd->arch_info; /* Read in the ELF header in external format. */ @@ -557,8 +585,21 @@ elf_object_p (abfd) new_tdata = (struct elf_obj_tdata *) bfd_zalloc (abfd, amt); if (new_tdata == NULL) goto got_no_match; + preserve.tdata = elf_tdata (abfd); elf_tdata (abfd) = new_tdata; + /* Clear section information, since there might be a recognized bfd that + we now check if we can replace, and we don't want to append to it. */ + preserve.sections = abfd->sections; + preserve.section_tail = abfd->section_tail; + preserve.section_count = abfd->section_count; + preserve.section_htab = abfd->section_htab; + abfd->sections = NULL; + abfd->section_tail = &abfd->sections; + abfd->section_count = 0; + if (!bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc)) + goto got_no_match; + /* Now that we know the byte order, swap in the rest of the header */ i_ehdrp = elf_elfheader (abfd); elf_swap_ehdr_in (abfd, &x_ehdr, i_ehdrp); @@ -634,38 +675,80 @@ elf_object_p (abfd) /* Remember the entry point specified in the ELF file header. */ bfd_set_start_address (abfd, i_ehdrp->e_entry); + /* Seek to the section header table in the file. */ + if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_shoff, SEEK_SET) != 0) + goto got_no_match; + + /* Read the first section header at index 0, and convert to internal + form. */ + if (bfd_bread ((PTR) & x_shdr, (bfd_size_type) sizeof x_shdr, abfd) + != sizeof (x_shdr)) + goto got_no_match; + elf_swap_shdr_in (abfd, &x_shdr, &i_shdr); + + /* If the section count is zero, the actual count is in the first + section header. */ + if (i_ehdrp->e_shnum == SHN_UNDEF) + i_ehdrp->e_shnum = i_shdr.sh_size; + + /* And similarly for the string table index. */ + if (i_ehdrp->e_shstrndx == SHN_XINDEX) + i_ehdrp->e_shstrndx = i_shdr.sh_link; + /* Allocate space for a copy of the section header table in - internal form, seek to the section header table in the file, - read it in, and convert it to internal form. */ + internal form. */ if (i_ehdrp->e_shnum != 0) { + Elf_Internal_Shdr *shdrp; + unsigned int num_sec; + amt = sizeof (*i_shdrp) * i_ehdrp->e_shnum; i_shdrp = (Elf_Internal_Shdr *) bfd_alloc (abfd, amt); - amt = sizeof (i_shdrp) * i_ehdrp->e_shnum; - elf_elfsections (abfd) = (Elf_Internal_Shdr **) bfd_alloc (abfd, amt); - if (!i_shdrp || !elf_elfsections (abfd)) - goto got_no_match; - if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_shoff, SEEK_SET) != 0) + if (!i_shdrp) goto got_no_match; - } - for (shindex = 0; shindex < i_ehdrp->e_shnum; shindex++) - { - if (bfd_bread ((PTR) & x_shdr, (bfd_size_type) sizeof x_shdr, abfd) - != sizeof (x_shdr)) + num_sec = i_ehdrp->e_shnum; + if (num_sec > SHN_LORESERVE) + num_sec += SHN_HIRESERVE + 1 - SHN_LORESERVE; + elf_numsections (abfd) = num_sec; + amt = sizeof (i_shdrp) * num_sec; + elf_elfsections (abfd) = (Elf_Internal_Shdr **) bfd_alloc (abfd, amt); + if (!elf_elfsections (abfd)) goto got_no_match; - elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex); - elf_elfsections (abfd)[shindex] = i_shdrp + shindex; - /* If the section is loaded, but not page aligned, clear - D_PAGED. */ - if (i_shdrp[shindex].sh_size != 0 - && (i_shdrp[shindex].sh_flags & SHF_ALLOC) != 0 - && i_shdrp[shindex].sh_type != SHT_NOBITS - && (((i_shdrp[shindex].sh_addr - i_shdrp[shindex].sh_offset) - % ebd->maxpagesize) - != 0)) - abfd->flags &= ~D_PAGED; + memcpy (i_shdrp, &i_shdr, sizeof (*i_shdrp)); + shdrp = i_shdrp; + shindex = 0; + if (num_sec > SHN_LORESERVE) + { + for ( ; shindex < SHN_LORESERVE; shindex++) + elf_elfsections (abfd)[shindex] = shdrp++; + for ( ; shindex < SHN_HIRESERVE + 1; shindex++) + elf_elfsections (abfd)[shindex] = i_shdrp; + } + for ( ; shindex < num_sec; shindex++) + elf_elfsections (abfd)[shindex] = shdrp++; + + /* Read in the rest of the section header table and convert it + to internal form. */ + for (shindex = 1; shindex < i_ehdrp->e_shnum; shindex++) + { + if (bfd_bread ((PTR) & x_shdr, (bfd_size_type) sizeof x_shdr, abfd) + != sizeof (x_shdr)) + goto got_no_match; + elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex); + + /* If the section is loaded, but not page aligned, clear + D_PAGED. */ + if (i_shdrp[shindex].sh_size != 0 + && (i_shdrp[shindex].sh_flags & SHF_ALLOC) != 0 + && i_shdrp[shindex].sh_type != SHT_NOBITS + && (((i_shdrp[shindex].sh_addr - i_shdrp[shindex].sh_offset) + % ebd->maxpagesize) + != 0)) + abfd->flags &= ~D_PAGED; + } } + if (i_ehdrp->e_shstrndx) { if (! bfd_section_from_shdr (abfd, i_ehdrp->e_shstrndx)) @@ -706,6 +789,8 @@ elf_object_p (abfd) if (i_ehdrp->e_shstrndx != 0) { + unsigned int num_sec; + shstrtab = bfd_elf_get_str_section (abfd, i_ehdrp->e_shstrndx); if (!shstrtab) goto got_no_match; @@ -713,11 +798,13 @@ elf_object_p (abfd) /* Once all of the section headers have been read and converted, we can start processing them. Note that the first section header is a dummy placeholder entry, so we ignore it. */ - - for (shindex = 1; shindex < i_ehdrp->e_shnum; shindex++) + num_sec = elf_numsections (abfd); + for (shindex = 1; shindex < num_sec; shindex++) { if (! bfd_section_from_shdr (abfd, shindex)) goto got_no_match; + if (shindex == SHN_LORESERVE - 1) + shindex += SHN_HIRESERVE + 1 - SHN_LORESERVE; } } @@ -748,6 +835,10 @@ elf_object_p (abfd) } } + /* It would be nice to be able to free more memory here, eg. old + elf_elfsections, old tdata, but that's not possible since these + blocks are sitting inside obj_alloc'd memory. */ + bfd_hash_table_free (&preserve.section_htab); return (abfd->xvec); got_wrong_format_error: @@ -760,20 +851,22 @@ elf_object_p (abfd) target-specific elf_backend_object_p function. Note that saving the whole bfd here and restoring it would be even worse; the first thing you notice is that the cached bfd file position gets out of sync. */ - bfd_default_set_arch_mach (abfd, previous_arch, previous_mach); bfd_set_error (bfd_error_wrong_format); + got_no_match: - if (new_tdata != NULL - && new_tdata->elf_sect_ptr != NULL) - bfd_release (abfd, new_tdata->elf_sect_ptr); - if (i_shdrp != NULL) - bfd_release (abfd, i_shdrp); + abfd->arch_info = preserve.arch_info; if (new_tdata != NULL) - bfd_release (abfd, new_tdata); - elf_tdata (abfd) = preserved_tdata; - abfd->sections = preserved_sections; - abfd->section_count = preserved_section_count; - return (NULL); + { + /* bfd_release frees all memory more recently bfd_alloc'd than + its arg, as well as its arg. */ + bfd_release (abfd, new_tdata); + elf_tdata (abfd) = preserve.tdata; + abfd->section_htab = preserve.section_htab; + abfd->sections = preserve.sections; + abfd->section_tail = preserve.section_tail; + abfd->section_count = preserve.section_count; + } + return NULL; } /* ELF .o/exec file writing */ @@ -987,21 +1080,30 @@ elf_write_shdrs_and_ehdr (abfd) || bfd_bwrite ((PTR) & x_ehdr, amt, abfd) != amt) return false; + /* Some fields in the first section header handle overflow of ehdr + fields. */ + if (i_ehdrp->e_shnum >= SHN_LORESERVE) + i_shdrp[0]->sh_size = i_ehdrp->e_shnum; + if (i_ehdrp->e_shstrndx >= SHN_LORESERVE) + i_shdrp[0]->sh_link = i_ehdrp->e_shstrndx; + /* at this point we've concocted all the ELF sections... */ - amt = sizeof (*x_shdrp) * i_ehdrp->e_shnum; + amt = i_ehdrp->e_shnum; + amt *= sizeof (*x_shdrp); x_shdrp = (Elf_External_Shdr *) bfd_alloc (abfd, amt); if (!x_shdrp) return false; - for (count = 0; count < i_ehdrp->e_shnum; count++) + for (count = 0; count < i_ehdrp->e_shnum; i_shdrp++, count++) { #if DEBUG & 2 - elf_debug_section (count, i_shdrp[count]); + elf_debug_section (count, *i_shdrp); #endif - elf_swap_shdr_out (abfd, i_shdrp[count], x_shdrp + count); + elf_swap_shdr_out (abfd, *i_shdrp, x_shdrp + count); + + if (count == SHN_LORESERVE - 1) + i_shdrp += SHN_HIRESERVE + 1 - SHN_LORESERVE; } - amt = i_ehdrp->e_shnum; - amt *= sizeof (*x_shdrp); if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_shoff, SEEK_SET) != 0 || bfd_bwrite ((PTR) x_shdrp, amt, abfd) != amt) return false; @@ -1024,6 +1126,7 @@ elf_slurp_symbol_table (abfd, symptrs, d elf_symbol_type *symbase; /* Buffer for generated bfd symbols */ Elf_Internal_Sym i_sym; Elf_External_Sym *x_symp = NULL; + Elf_External_Sym_Shndx *x_shndx = NULL; Elf_External_Versym *x_versymp = NULL; bfd_size_type amt; @@ -1039,8 +1142,24 @@ elf_slurp_symbol_table (abfd, symptrs, d if (! dynamic) { + Elf_Internal_Shdr *shndx_hdr; + hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; verhdr = NULL; + + /* If we have a SHT_SYMTAB_SHNDX section for the symbol table, + read the raw contents. */ + if (elf_elfsections (abfd) != NULL + && elf_elfsections (abfd)[shndx_hdr->sh_link] == hdr) + { + amt = shndx_hdr->sh_size; + x_shndx = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (x_shndx == NULL + || bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread ((PTR) x_shndx, amt, abfd) != amt) + goto error_return; + } } else { @@ -1060,7 +1179,7 @@ elf_slurp_symbol_table (abfd, symptrs, d } if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0) - return -1; + goto error_return; symcount = hdr->sh_size / sizeof (Elf_External_Sym); @@ -1071,20 +1190,20 @@ elf_slurp_symbol_table (abfd, symptrs, d unsigned long i; if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0) - return -1; + goto error_return; amt = symcount; amt *= sizeof (elf_symbol_type); symbase = (elf_symbol_type *) bfd_zalloc (abfd, amt); if (symbase == (elf_symbol_type *) NULL) - return -1; + goto error_return; sym = symbase; /* Temporarily allocate room for the raw ELF symbols. */ amt = symcount; amt *= sizeof (Elf_External_Sym); x_symp = (Elf_External_Sym *) bfd_malloc (amt); - if (x_symp == NULL && symcount != 0) + if (x_symp == NULL) goto error_return; if (bfd_bread ((PTR) x_symp, amt, abfd) != amt) @@ -1123,7 +1242,8 @@ elf_slurp_symbol_table (abfd, symptrs, d /* Skip first symbol, which is a null dummy. */ for (i = 1; i < symcount; i++) { - elf_swap_symbol_in (abfd, x_symp + i, &i_sym); + elf_swap_symbol_in (abfd, x_symp + i, + x_shndx + (x_shndx != NULL ? i : 0), &i_sym); memcpy (&sym->internal_elf_sym, &i_sym, sizeof (Elf_Internal_Sym)); #ifdef ELF_KEEP_EXTSYM memcpy (&sym->native_elf_sym, x_symp + i, sizeof (Elf_External_Sym)); @@ -1136,7 +1256,12 @@ elf_slurp_symbol_table (abfd, symptrs, d sym->symbol.value = i_sym.st_value; - if (i_sym.st_shndx > 0 && i_sym.st_shndx < SHN_LORESERVE) + if (i_sym.st_shndx == SHN_UNDEF) + { + sym->symbol.section = bfd_und_section_ptr; + } + else if (i_sym.st_shndx < SHN_LORESERVE + || i_sym.st_shndx > SHN_HIRESERVE) { sym->symbol.section = section_from_elf_index (abfd, i_sym.st_shndx); @@ -1161,10 +1286,6 @@ elf_slurp_symbol_table (abfd, symptrs, d moment) about the alignment. */ sym->symbol.value = i_sym.st_size; } - else if (i_sym.st_shndx == SHN_UNDEF) - { - sym->symbol.section = bfd_und_section_ptr; - } else sym->symbol.section = bfd_abs_section_ptr; @@ -1251,12 +1372,17 @@ elf_slurp_symbol_table (abfd, symptrs, d *symptrs = 0; /* Final null pointer */ } + if (x_shndx != NULL) + free (x_shndx); if (x_versymp != NULL) free (x_versymp); if (x_symp != NULL) free (x_symp); return symcount; + error_return: + if (x_shndx != NULL) + free (x_shndx); if (x_versymp != NULL) free (x_versymp); if (x_symp != NULL) diff -uprN binutils-2.11.92.0.12.3/bfd/elfcore.h binutils-2.11.93.0.2/bfd/elfcore.h --- binutils-2.11.92.0.12.3/bfd/elfcore.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elfcore.h Sun Feb 3 11:22:30 2002 @@ -81,21 +81,14 @@ elf_core_file_p (abfd) { Elf_External_Ehdr x_ehdr; /* Elf file header, external form */ Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */ - Elf_Internal_Phdr *i_phdrp = NULL; /* Elf program header, internal form */ + Elf_Internal_Phdr *i_phdrp; /* Elf program header, internal form */ unsigned int phindex; struct elf_backend_data *ebd; - struct elf_obj_tdata *preserved_tdata = elf_tdata (abfd); - struct sec *preserved_sections = abfd->sections; - unsigned int preserved_section_count = abfd->section_count; - enum bfd_architecture previous_arch = bfd_get_arch (abfd); - unsigned long previous_mach = bfd_get_mach (abfd); + struct bfd_preserve preserve; struct elf_obj_tdata *new_tdata = NULL; bfd_size_type amt; - /* Clear section information, since there might be a recognized bfd that - we now check if we can replace, and we don't want to append to it. */ - abfd->sections = NULL; - abfd->section_count = 0; + preserve.arch_info = abfd->arch_info; /* Read in the ELF header in external format. */ if (bfd_bread ((PTR) &x_ehdr, (bfd_size_type) sizeof (x_ehdr), abfd) @@ -136,8 +129,21 @@ elf_core_file_p (abfd) new_tdata = (struct elf_obj_tdata *) bfd_zalloc (abfd, amt); if (new_tdata == NULL) return NULL; + preserve.tdata = elf_tdata (abfd); elf_tdata (abfd) = new_tdata; + /* Clear section information, since there might be a recognized bfd that + we now check if we can replace, and we don't want to append to it. */ + preserve.sections = abfd->sections; + preserve.section_tail = abfd->section_tail; + preserve.section_count = abfd->section_count; + preserve.section_htab = abfd->section_htab; + abfd->sections = NULL; + abfd->section_tail = &abfd->sections; + abfd->section_count = 0; + if (!bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc)) + goto fail; + /* Swap in the rest of the header, now that we have the byte order. */ i_ehdrp = elf_elfheader (abfd); elf_swap_ehdr_in (abfd, &x_ehdr, i_ehdrp); @@ -214,18 +220,20 @@ elf_core_file_p (abfd) elf_swap_phdr_in (abfd, &x_phdr, i_phdrp + phindex); } - /* Process each program header. */ - for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex) + /* Set the machine architecture. Do this before processing the + program headers since we need to know the architecture type + when processing the notes of some systems' core files. */ + if (! bfd_default_set_arch_mach (abfd, ebd->arch, 0)) { - if (! bfd_section_from_phdr (abfd, i_phdrp + phindex, (int) phindex)) + /* It's OK if this fails for the generic target. */ + if (ebd->elf_machine_code != EM_NONE) goto fail; } - /* Set the machine architecture. */ - if (! bfd_default_set_arch_mach (abfd, ebd->arch, 0)) + /* Process each program header. */ + for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex) { - /* It's OK if this fails for the generic target. */ - if (ebd->elf_machine_code != EM_NONE) + if (! bfd_section_from_phdr (abfd, i_phdrp + phindex, (int) phindex)) goto fail; } @@ -240,6 +248,7 @@ elf_core_file_p (abfd) goto wrong; } + bfd_hash_table_free (&preserve.section_htab); return abfd->xvec; wrong: @@ -252,15 +261,20 @@ wrong: target-specific elf_backend_object_p function. Note that saving the whole bfd here and restoring it would be even worse; the first thing you notice is that the cached bfd file position gets out of sync. */ - bfd_default_set_arch_mach (abfd, previous_arch, previous_mach); bfd_set_error (bfd_error_wrong_format); + fail: - if (i_phdrp != NULL) - bfd_release (abfd, i_phdrp); + abfd->arch_info = preserve.arch_info; if (new_tdata != NULL) - bfd_release (abfd, new_tdata); - elf_tdata (abfd) = preserved_tdata; - abfd->sections = preserved_sections; - abfd->section_count = preserved_section_count; + { + /* bfd_release frees all memory more recently bfd_alloc'd than + its arg, as well as its arg. */ + bfd_release (abfd, new_tdata); + elf_tdata (abfd) = preserve.tdata; + abfd->section_htab = preserve.section_htab; + abfd->sections = preserve.sections; + abfd->section_tail = preserve.section_tail; + abfd->section_count = preserve.section_count; + } return NULL; } diff -uprN binutils-2.11.92.0.12.3/bfd/elflink.c binutils-2.11.93.0.2/bfd/elflink.c --- binutils-2.11.92.0.12.3/bfd/elflink.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elflink.c Sun Feb 3 11:22:30 2002 @@ -137,7 +137,7 @@ _bfd_elf_create_dynamic_sections (abfd, pltflags = flags; pltflags |= SEC_CODE; if (bed->plt_not_loaded) - pltflags &= ~ (SEC_LOAD | SEC_HAS_CONTENTS); + pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS); if (bed->plt_readonly) pltflags |= SEC_READONLY; diff -uprN binutils-2.11.92.0.12.3/bfd/elflink.h binutils-2.11.93.0.2/bfd/elflink.h --- binutils-2.11.92.0.12.3/bfd/elflink.h Wed Nov 28 22:55:47 2001 +++ binutils-2.11.93.0.2/bfd/elflink.h Sun Feb 3 11:22:30 2002 @@ -173,7 +173,7 @@ elf_link_check_versioned_symbol (info, h Elf_Internal_Sym sym; Elf_Internal_Versym iver; - elf_swap_symbol_in (input, esym, &sym); + elf_swap_symbol_in (input, esym, NULL, &sym); if (ELF_ST_BIND (sym.st_info) == STB_LOCAL || sym.st_shndx == SHN_UNDEF) continue; @@ -290,9 +290,12 @@ elf_link_is_defined_archive_symbol (abfd carsym * symdef; { Elf_Internal_Shdr * hdr; + Elf_Internal_Shdr * shndx_hdr; Elf_External_Sym * esym; Elf_External_Sym * esymend; Elf_External_Sym * buf = NULL; + Elf_External_Sym_Shndx * shndx_buf = NULL; + Elf_External_Sym_Shndx * shndx; bfd_size_type symcount; bfd_size_type extsymcount; bfd_size_type extsymoff; @@ -316,9 +319,15 @@ elf_link_is_defined_archive_symbol (abfd /* Select the appropriate symbol table. */ if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0) - hdr = &elf_tdata (abfd)->symtab_hdr; + { + hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + } else - hdr = &elf_tdata (abfd)->dynsymtab_hdr; + { + hdr = &elf_tdata (abfd)->dynsymtab_hdr; + shndx_hdr = NULL; + } symcount = hdr->sh_size / sizeof (Elf_External_Sym); @@ -345,21 +354,31 @@ elf_link_is_defined_archive_symbol (abfd pos = hdr->sh_offset + extsymoff * sizeof (Elf_External_Sym); if (bfd_seek (abfd, pos, SEEK_SET) != 0 || bfd_bread ((PTR) buf, amt, abfd) != amt) + goto error_exit; + + if (shndx_hdr != NULL && shndx_hdr->sh_size != 0) { - free (buf); - return false; + amt = extsymcount * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL && extsymcount != 0) + goto error_exit; + + pos = shndx_hdr->sh_offset + extsymoff * sizeof (Elf_External_Sym_Shndx); + if (bfd_seek (abfd, pos, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_exit; } /* Scan the symbol table looking for SYMDEF. */ esymend = buf + extsymcount; - for (esym = buf; + for (esym = buf, shndx = shndx_buf; esym < esymend; - esym++) + esym++, shndx = (shndx != NULL ? shndx + 1 : NULL)) { Elf_Internal_Sym sym; const char * name; - elf_swap_symbol_in (abfd, esym, & sym); + elf_swap_symbol_in (abfd, esym, shndx, &sym); name = bfd_elf_string_from_elf_section (abfd, hdr->sh_link, sym.st_name); if (name == (const char *) NULL) @@ -372,7 +391,11 @@ elf_link_is_defined_archive_symbol (abfd } } - free (buf); + error_exit: + if (shndx_buf != NULL) + free (shndx_buf); + if (buf != NULL) + free (buf); return result; } @@ -1303,10 +1326,13 @@ elf_link_add_object_symbols (abfd, info) asection *, const Elf_Internal_Rela *)); boolean collect; Elf_Internal_Shdr *hdr; + Elf_Internal_Shdr *shndx_hdr; bfd_size_type symcount; bfd_size_type extsymcount; bfd_size_type extsymoff; Elf_External_Sym *buf = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; + Elf_External_Sym_Shndx *shndx; struct elf_link_hash_entry **sym_hash; boolean dynamic; Elf_External_Versym *extversym = NULL; @@ -1423,9 +1449,15 @@ elf_link_add_object_symbols (abfd, info) look at .symtab for a dynamic object. */ if (! dynamic || elf_dynsymtab (abfd) == 0) - hdr = &elf_tdata (abfd)->symtab_hdr; + { + hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + } else - hdr = &elf_tdata (abfd)->dynsymtab_hdr; + { + hdr = &elf_tdata (abfd)->dynsymtab_hdr; + shndx_hdr = NULL; + } if (dynamic) { @@ -1472,6 +1504,14 @@ elf_link_add_object_symbols (abfd, info) if (buf == NULL && extsymcount != 0) goto error_return; + if (shndx_hdr != NULL && shndx_hdr->sh_size != 0) + { + amt = extsymcount * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL && extsymcount != 0) + goto error_return; + } + /* We store a pointer to the hash table entry for each external symbol. */ amt = extsymcount * sizeof (struct elf_link_hash_entry *); @@ -1680,8 +1720,7 @@ elf_link_add_object_symbols (abfd, info) SEC_NEVER_LOAD flag is not the one we want, because that one still implies that the section takes up space in the output file. */ - abfd->sections = NULL; - abfd->section_count = 0; + bfd_section_list_clear (abfd); /* If this is the first dynamic object found in the link, create the special sections required for dynamic linking. */ @@ -1748,13 +1787,23 @@ elf_link_add_object_symbols (abfd, info) || bfd_bread ((PTR) buf, amt, abfd) != amt) goto error_return; + if (shndx_hdr != NULL && shndx_hdr->sh_size != 0) + { + amt = extsymcount * sizeof (Elf_External_Sym_Shndx); + pos = shndx_hdr->sh_offset + extsymoff * sizeof (Elf_External_Sym_Shndx); + if (bfd_seek (abfd, pos, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx_buf, amt, abfd) != amt) + goto error_return; + } + weaks = NULL; ever = extversym != NULL ? extversym + extsymoff : NULL; esymend = buf + extsymcount; - for (esym = buf; + for (esym = buf, shndx = shndx_buf; esym < esymend; - esym++, sym_hash++, ever = (ever != NULL ? ever + 1 : NULL)) + esym++, sym_hash++, ever = (ever != NULL ? ever + 1 : NULL), + shndx = (shndx != NULL ? shndx + 1 : NULL)) { Elf_Internal_Sym sym; int bind; @@ -1771,7 +1820,7 @@ elf_link_add_object_symbols (abfd, info) override = false; - elf_swap_symbol_in (abfd, esym, &sym); + elf_swap_symbol_in (abfd, esym, shndx, &sym); flags = BSF_NO_FLAGS; sec = NULL; @@ -1802,7 +1851,7 @@ elf_link_add_object_symbols (abfd, info) if (sym.st_shndx == SHN_UNDEF) sec = bfd_und_section_ptr; - else if (sym.st_shndx > 0 && sym.st_shndx < SHN_LORESERVE) + else if (sym.st_shndx < SHN_LORESERVE || sym.st_shndx > SHN_HIRESERVE) { sec = section_from_elf_index (abfd, sym.st_shndx); if (sec == NULL) @@ -2159,10 +2208,7 @@ elf_link_add_object_symbols (abfd, info) { case STV_INTERNAL: case STV_HIDDEN: - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - (*bed->elf_backend_hide_symbol) (info, h); - _bfd_elf_strtab_delref (hash_table->dynstr, - h->dynstr_index); + (*bed->elf_backend_hide_symbol) (info, h, true); break; } @@ -2366,7 +2412,7 @@ elf_link_add_object_symbols (abfd, info) asection *stab, *stabstr; stab = bfd_get_section_by_name (abfd, ".stab"); - if (stab != NULL) + if (stab != NULL && !(stab->flags & SEC_MERGE)) { stabstr = bfd_get_section_by_name (abfd, ".stabstr"); @@ -2378,8 +2424,10 @@ elf_link_add_object_symbols (abfd, info) if (! _bfd_link_section_stabs (abfd, & hash_table->stab_info, stab, stabstr, - &secdata->stab_info)) + &secdata->sec_info)) goto error_return; + if (secdata->sec_info) + secdata->sec_info_type = ELF_INFO_TYPE_STABS; } } } @@ -2390,10 +2438,18 @@ elf_link_add_object_symbols (abfd, info) asection *s; for (s = abfd->sections; s != NULL; s = s->next) - if ((s->flags & SEC_MERGE) - && ! _bfd_merge_section (abfd, & hash_table->merge_info, s, - & elf_section_data (s)->merge_info)) - goto error_return; + if (s->flags & SEC_MERGE) + { + struct bfd_elf_section_data *secdata; + + secdata = elf_section_data (s); + if (! _bfd_merge_section (abfd, + & hash_table->merge_info, + s, &secdata->sec_info)) + goto error_return; + else if (secdata->sec_info) + secdata->sec_info_type = ELF_INFO_TYPE_MERGE; + } } if (is_elf_hash_table (info)) @@ -2468,6 +2524,16 @@ elf_link_create_dynamic_sections (abfd, return false; } + if (! info->traditional_format + && info->hash->creator->flavour == bfd_target_elf_flavour) + { + s = bfd_make_section (abfd, ".eh_frame_hdr"); + if (s == NULL + || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY) + || ! bfd_set_section_alignment (abfd, s, 2)) + return false; + } + /* Create sections to hold version informations. These are removed if they are not needed. */ s = bfd_make_section (abfd, ".gnu.version_d"); @@ -2604,6 +2670,8 @@ elf_link_record_local_dynamic_symbol (in struct elf_link_hash_table *eht; struct elf_strtab_hash *dynstr; Elf_External_Sym esym; + Elf_External_Sym_Shndx eshndx; + Elf_External_Sym_Shndx *shndx; unsigned long dynstr_index; char *name; file_ptr pos; @@ -2626,9 +2694,20 @@ elf_link_record_local_dynamic_symbol (in amt = sizeof (Elf_External_Sym); pos = elf_tdata (input_bfd)->symtab_hdr.sh_offset + input_indx * amt; if (bfd_seek (input_bfd, pos, SEEK_SET) != 0 - || bfd_bread (&esym, amt, input_bfd) != amt) + || bfd_bread ((PTR) &esym, amt, input_bfd) != amt) return false; - elf_swap_symbol_in (input_bfd, &esym, &entry->isym); + shndx = NULL; + if (elf_tdata (input_bfd)->symtab_shndx_hdr.sh_size != 0) + { + amt = sizeof (Elf_External_Sym_Shndx); + pos = elf_tdata (input_bfd)->symtab_shndx_hdr.sh_offset; + pos += input_indx * amt; + shndx = &eshndx; + if (bfd_seek (input_bfd, pos, SEEK_SET) != 0 + || bfd_bread ((PTR) shndx, amt, input_bfd) != amt) + return false; + } + elf_swap_symbol_in (input_bfd, &esym, shndx, &entry->isym); name = (bfd_elf_string_from_elf_section (input_bfd, elf_tdata (input_bfd)->symtab_hdr.sh_link, @@ -3150,6 +3229,9 @@ NAME(bfd_elf,size_dynamic_sections) (out if (dynobj == NULL) return true; + if (! _bfd_elf_maybe_strip_eh_frame_hdr (info)) + return false; + if (elf_hash_table (info)->dynamic_sections_created) { struct elf_info_failed eif; @@ -3328,6 +3410,10 @@ NAME(bfd_elf,size_dynamic_sections) (out just linking a regular application. */ verdefs = asvinfo.verdefs; + /* Skip anonymous version tag. */ + if (verdefs != NULL && verdefs->vernum == 0) + verdefs = verdefs->next; + if (verdefs == NULL) _bfd_strip_section_from_output (info, s); else @@ -3675,8 +3761,7 @@ NAME(bfd_elf,size_dynamic_sections) (out isym.st_info = 0; isym.st_other = 0; isym.st_shndx = 0; - elf_swap_symbol_out (output_bfd, &isym, - (PTR) (Elf_External_Sym *) s->contents); + elf_swap_symbol_out (output_bfd, &isym, (PTR) s->contents, (PTR) 0); } /* Compute the size of the hashing table. As a side effect this @@ -3953,16 +4038,13 @@ elf_fix_symbol_flags (h, eif) && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0) { struct elf_backend_data *bed; + boolean force_local; bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj); - if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL - || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN) - { - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - _bfd_elf_strtab_delref (elf_hash_table (eif->info)->dynstr, - h->dynstr_index); - } - (*bed->elf_backend_hide_symbol) (eif->info, h); + + force_local = (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL + || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN); + (*bed->elf_backend_hide_symbol) (eif->info, h, force_local); } /* If this is a weak defined symbol in a dynamic object, and we know @@ -4313,7 +4395,7 @@ elf_link_assign_sym_version (h, data) struct bfd_elf_version_expr *d; len = p - h->root.root.string; - alc = bfd_alloc (sinfo->output_bfd, (bfd_size_type) len); + alc = bfd_malloc ((bfd_size_type) len); if (alc == NULL) return false; strncpy (alc, h->root.root.string, len - 1); @@ -4344,10 +4426,7 @@ elf_link_assign_sym_version (h, data) && info->shared && ! info->export_dynamic) { - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - (*bed->elf_backend_hide_symbol) (info, h); - _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, - h->dynstr_index); + (*bed->elf_backend_hide_symbol) (info, h, true); } break; @@ -4355,7 +4434,7 @@ elf_link_assign_sym_version (h, data) } } - bfd_release (sinfo->output_bfd, alc); + free (alc); break; } } @@ -4390,6 +4469,9 @@ elf_link_assign_sym_version (h, data) t->used = true; version_index = 1; + /* Don't count anonymous version tag. */ + if (sinfo->verdefs != NULL && sinfo->verdefs->vernum == 0) + version_index = 0; for (pp = &sinfo->verdefs; *pp != NULL; pp = &(*pp)->next) ++version_index; t->vernum = version_index; @@ -4456,10 +4538,7 @@ elf_link_assign_sym_version (h, data) && info->shared && ! info->export_dynamic) { - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - (*bed->elf_backend_hide_symbol) (info, h); - _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, - h->dynstr_index); + (*bed->elf_backend_hide_symbol) (info, h, true); } break; } @@ -4477,10 +4556,7 @@ elf_link_assign_sym_version (h, data) && info->shared && ! info->export_dynamic) { - h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL; - (*bed->elf_backend_hide_symbol) (info, h); - _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr, - h->dynstr_index); + (*bed->elf_backend_hide_symbol) (info, h, true); } } } @@ -4515,6 +4591,8 @@ struct elf_final_link_info /* Buffer large enough to hold external local symbols of any input BFD. */ Elf_External_Sym *external_syms; + /* And a buffer for symbol section indices. */ + Elf_External_Sym_Shndx *locsym_shndx; /* Buffer large enough to hold internal local symbols of any input BFD. */ Elf_Internal_Sym *internal_syms; @@ -4526,6 +4604,8 @@ struct elf_final_link_info asection **sections; /* Buffer to hold swapped out symbols. */ Elf_External_Sym *symbuf; + /* And one for symbol section indices. */ + Elf_External_Sym_Shndx *symshndxbuf; /* Number of swapped out symbols in buffer. */ size_t symbuf_count; /* Number of symbols which fit in symbuf. */ @@ -4923,6 +5003,7 @@ elf_bfd_final_link (abfd, info) bfd_size_type max_external_reloc_size; bfd_size_type max_internal_reloc_count; bfd_size_type max_sym_count; + bfd_size_type max_sym_shndx_count; file_ptr off; Elf_Internal_Sym elfsym; unsigned int i; @@ -4973,10 +5054,12 @@ elf_bfd_final_link (abfd, info) finfo.external_relocs = NULL; finfo.internal_relocs = NULL; finfo.external_syms = NULL; + finfo.locsym_shndx = NULL; finfo.internal_syms = NULL; finfo.indices = NULL; finfo.sections = NULL; finfo.symbuf = NULL; + finfo.symshndxbuf = NULL; finfo.symbuf_count = 0; /* Count up the number of relocations we will output for each output @@ -4986,6 +5069,7 @@ elf_bfd_final_link (abfd, info) max_external_reloc_size = 0; max_internal_reloc_count = 0; max_sym_count = 0; + max_sym_shndx_count = 0; merged = false; for (o = abfd->sections; o != (asection *) NULL; o = o->next) { @@ -5049,6 +5133,10 @@ elf_bfd_final_link (abfd, info) if (sym_count > max_sym_count) max_sym_count = sym_count; + if (sym_count > max_sym_shndx_count + && elf_symtab_shndx (sec->owner) != 0) + max_sym_shndx_count = sym_count; + if ((sec->flags & SEC_RELOC) != 0) { size_t ext_size; @@ -5202,6 +5290,14 @@ elf_bfd_final_link (abfd, info) finfo.symbuf = (Elf_External_Sym *) bfd_malloc (amt); if (finfo.symbuf == NULL) goto error_return; + if (elf_numsections (abfd) > SHN_LORESERVE) + { + amt = finfo.symbuf_size; + amt *= sizeof (Elf_External_Sym_Shndx); + finfo.symshndxbuf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (finfo.symshndxbuf == NULL) + goto error_return; + } /* Start writing out the symbol table. The first symbol is always a dummy symbol. */ @@ -5245,7 +5341,7 @@ elf_bfd_final_link (abfd, info) elfsym.st_size = 0; elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION); elfsym.st_other = 0; - for (i = 1; i < elf_elfheader (abfd)->e_shnum; i++) + for (i = 1; i < elf_numsections (abfd); i++) { o = section_from_elf_index (abfd, i); if (o != NULL) @@ -5258,34 +5354,66 @@ elf_bfd_final_link (abfd, info) if (! elf_link_output_sym (&finfo, (const char *) NULL, &elfsym, o)) goto error_return; + if (i == SHN_LORESERVE) + i += SHN_HIRESERVE + 1 - SHN_LORESERVE; } } /* Allocate some memory to hold information read in from the input files. */ - finfo.contents = (bfd_byte *) bfd_malloc (max_contents_size); - finfo.external_relocs = (PTR) bfd_malloc (max_external_reloc_size); - finfo.internal_relocs = ((Elf_Internal_Rela *) - bfd_malloc (max_internal_reloc_count - * sizeof (Elf_Internal_Rela) - * bed->s->int_rels_per_ext_rel)); - finfo.external_syms = ((Elf_External_Sym *) - bfd_malloc (max_sym_count - * sizeof (Elf_External_Sym))); - finfo.internal_syms = ((Elf_Internal_Sym *) - bfd_malloc (max_sym_count - * sizeof (Elf_Internal_Sym))); - finfo.indices = (long *) bfd_malloc (max_sym_count * sizeof (long)); - finfo.sections = ((asection **) - bfd_malloc (max_sym_count * sizeof (asection *))); - if ((finfo.contents == NULL && max_contents_size != 0) - || (finfo.external_relocs == NULL && max_external_reloc_size != 0) - || (finfo.internal_relocs == NULL && max_internal_reloc_count != 0) - || (finfo.external_syms == NULL && max_sym_count != 0) - || (finfo.internal_syms == NULL && max_sym_count != 0) - || (finfo.indices == NULL && max_sym_count != 0) - || (finfo.sections == NULL && max_sym_count != 0)) - goto error_return; + if (max_contents_size != 0) + { + finfo.contents = (bfd_byte *) bfd_malloc (max_contents_size); + if (finfo.contents == NULL) + goto error_return; + } + + if (max_external_reloc_size != 0) + { + finfo.external_relocs = (PTR) bfd_malloc (max_external_reloc_size); + if (finfo.external_relocs == NULL) + goto error_return; + } + + if (max_internal_reloc_count != 0) + { + amt = max_internal_reloc_count * bed->s->int_rels_per_ext_rel; + amt *= sizeof (Elf_Internal_Rela); + finfo.internal_relocs = (Elf_Internal_Rela *) bfd_malloc (amt); + if (finfo.internal_relocs == NULL) + goto error_return; + } + + if (max_sym_count != 0) + { + amt = max_sym_count * sizeof (Elf_External_Sym); + finfo.external_syms = (Elf_External_Sym *) bfd_malloc (amt); + if (finfo.external_syms == NULL) + goto error_return; + + amt = max_sym_count * sizeof (Elf_Internal_Sym); + finfo.internal_syms = (Elf_Internal_Sym *) bfd_malloc (amt); + if (finfo.internal_syms == NULL) + goto error_return; + + amt = max_sym_count * sizeof (long); + finfo.indices = (long *) bfd_malloc (amt); + if (finfo.indices == NULL) + goto error_return; + + amt = max_sym_count * sizeof (asection *); + finfo.sections = (asection **) bfd_malloc (amt); + if (finfo.sections == NULL) + goto error_return; + } + + if (max_sym_shndx_count != 0) + { + amt = max_sym_shndx_count * sizeof (Elf_External_Sym_Shndx); + finfo.locsym_shndx = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (finfo.locsym_shndx == NULL) + goto error_return; + } /* Since ELF permits relocations to be against local symbols, we must have the local symbols available when we do the relocations. @@ -5385,13 +5513,14 @@ elf_bfd_final_link (abfd, info) for (s = abfd->sections; s != NULL; s = s->next) { int indx; + Elf_External_Sym *dest; + indx = elf_section_data (s)->this_idx; BFD_ASSERT (indx > 0); sym.st_shndx = indx; sym.st_value = s->vma; - - elf_swap_symbol_out (abfd, &sym, - dynsym + elf_section_data (s)->dynindx); + dest = dynsym + elf_section_data (s)->dynindx; + elf_swap_symbol_out (abfd, &sym, (PTR) dest, (PTR) 0); } last_local = bfd_count_sections (abfd); @@ -5404,6 +5533,7 @@ elf_bfd_final_link (abfd, info) for (e = elf_hash_table (info)->dynlocal; e ; e = e->next) { asection *s; + Elf_External_Sym *dest; sym.st_size = e->isym.st_size; sym.st_other = e->isym.st_other; @@ -5413,7 +5543,8 @@ elf_bfd_final_link (abfd, info) the original st_name with the dynstr_index. */ sym = e->isym; - if (e->isym.st_shndx > 0 && e->isym.st_shndx < SHN_LORESERVE) + if (e->isym.st_shndx < SHN_LORESERVE + || e->isym.st_shndx > SHN_HIRESERVE) { s = bfd_section_from_elf_index (e->input_bfd, e->isym.st_shndx); @@ -5428,7 +5559,8 @@ elf_bfd_final_link (abfd, info) if (last_local < e->dynindx) last_local = e->dynindx; - elf_swap_symbol_out (abfd, &sym, dynsym + e->dynindx); + dest = dynsym + e->dynindx; + elf_swap_symbol_out (abfd, &sym, (PTR) dest, (PTR) 0); } } @@ -5618,7 +5750,7 @@ elf_bfd_final_link (abfd, info) else type = SHT_RELA; dyn.d_un.d_val = 0; - for (i = 1; i < elf_elfheader (abfd)->e_shnum; i++) + for (i = 1; i < elf_numsections (abfd); i++) { Elf_Internal_Shdr *hdr; @@ -5690,6 +5822,19 @@ elf_bfd_final_link (abfd, info) goto error_return; } + if (info->eh_frame_hdr && elf_hash_table (info)->dynobj) + { + o = bfd_get_section_by_name (elf_hash_table (info)->dynobj, + ".eh_frame_hdr"); + if (o + && (elf_section_data (o)->sec_info_type + == ELF_INFO_TYPE_EH_FRAME_HDR)) + { + if (! _bfd_elf_write_section_eh_frame_hdr (abfd, o)) + goto error_return; + } + } + if (finfo.symstrtab != NULL) _bfd_stringtab_free (finfo.symstrtab); if (finfo.contents != NULL) @@ -5700,6 +5845,8 @@ elf_bfd_final_link (abfd, info) free (finfo.internal_relocs); if (finfo.external_syms != NULL) free (finfo.external_syms); + if (finfo.locsym_shndx != NULL) + free (finfo.locsym_shndx); if (finfo.internal_syms != NULL) free (finfo.internal_syms); if (finfo.indices != NULL) @@ -5708,6 +5855,8 @@ elf_bfd_final_link (abfd, info) free (finfo.sections); if (finfo.symbuf != NULL) free (finfo.symbuf); + if (finfo.symshndxbuf != NULL) + free (finfo.symbuf); for (o = abfd->sections; o != NULL; o = o->next) { if ((o->flags & SEC_RELOC) != 0 @@ -5730,6 +5879,8 @@ elf_bfd_final_link (abfd, info) free (finfo.internal_relocs); if (finfo.external_syms != NULL) free (finfo.external_syms); + if (finfo.locsym_shndx != NULL) + free (finfo.locsym_shndx); if (finfo.internal_syms != NULL) free (finfo.internal_syms); if (finfo.indices != NULL) @@ -5738,6 +5889,8 @@ elf_bfd_final_link (abfd, info) free (finfo.sections); if (finfo.symbuf != NULL) free (finfo.symbuf); + if (finfo.symshndxbuf != NULL) + free (finfo.symbuf); for (o = abfd->sections; o != NULL; o = o->next) { if ((o->flags & SEC_RELOC) != 0 @@ -5757,6 +5910,9 @@ elf_link_output_sym (finfo, name, elfsym Elf_Internal_Sym *elfsym; asection *input_sec; { + Elf_External_Sym *dest; + Elf_External_Sym_Shndx *destshndx; + boolean (*output_symbol_hook) PARAMS ((bfd *, struct bfd_link_info *info, const char *, @@ -5790,8 +5946,11 @@ elf_link_output_sym (finfo, name, elfsym return false; } - elf_swap_symbol_out (finfo->output_bfd, elfsym, - (PTR) (finfo->symbuf + finfo->symbuf_count)); + dest = finfo->symbuf + finfo->symbuf_count; + destshndx = finfo->symshndxbuf; + if (destshndx != NULL) + destshndx += finfo->symbuf_count; + elf_swap_symbol_out (finfo->output_bfd, elfsym, (PTR) dest, (PTR) destshndx); ++finfo->symbuf_count; ++ bfd_get_symcount (finfo->output_bfd); @@ -5807,18 +5966,31 @@ elf_link_flush_output_syms (finfo) { if (finfo->symbuf_count > 0) { - Elf_Internal_Shdr *symtab; + Elf_Internal_Shdr *hdr; file_ptr pos; bfd_size_type amt; - symtab = &elf_tdata (finfo->output_bfd)->symtab_hdr; - pos = symtab->sh_offset + symtab->sh_size; + hdr = &elf_tdata (finfo->output_bfd)->symtab_hdr; + pos = hdr->sh_offset + hdr->sh_size; amt = finfo->symbuf_count * sizeof (Elf_External_Sym); if (bfd_seek (finfo->output_bfd, pos, SEEK_SET) != 0 || bfd_bwrite ((PTR) finfo->symbuf, amt, finfo->output_bfd) != amt) return false; - symtab->sh_size += finfo->symbuf_count * sizeof (Elf_External_Sym); + hdr->sh_size += amt; + + if (finfo->symshndxbuf != NULL) + { + hdr = &elf_tdata (finfo->output_bfd)->symtab_shndx_hdr; + pos = hdr->sh_offset + hdr->sh_size; + amt = finfo->symbuf_count * sizeof (Elf_External_Sym_Shndx); + if (bfd_seek (finfo->output_bfd, pos, SEEK_SET) != 0 + || (bfd_bwrite ((PTR) finfo->symshndxbuf, amt, finfo->output_bfd) + != amt)) + return false; + + hdr->sh_size += amt; + } finfo->symbuf_count = 0; } @@ -5839,14 +6011,14 @@ elf_link_sec_merge_syms (h, data) if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) && ((sec = h->root.u.def.section)->flags & SEC_MERGE) - && elf_section_data (sec)->merge_info) + && elf_section_data (sec)->sec_info_type == ELF_INFO_TYPE_MERGE) { bfd *output_bfd = (bfd *) data; h->root.u.def.value = _bfd_merged_section_offset (output_bfd, &h->root.u.def.section, - elf_section_data (sec)->merge_info, + elf_section_data (sec)->sec_info, h->root.u.def.value, (bfd_vma) 0); } @@ -5983,7 +6155,7 @@ elf_link_output_extsym (h, data) sym.st_shndx = _bfd_elf_section_from_bfd_section (finfo->output_bfd, input_sec->output_section); - if (sym.st_shndx == (unsigned short) -1) + if (sym.st_shndx == SHN_BAD) { (*_bfd_error_handler) (_("%s: could not find output section %s for input section %s"), @@ -6096,7 +6268,7 @@ elf_link_output_extsym (h, data) sym.st_name = h->dynstr_index; esym = (Elf_External_Sym *) finfo->dynsym_sec->contents + h->dynindx; - elf_swap_symbol_out (finfo->output_bfd, &sym, (PTR) esym); + elf_swap_symbol_out (finfo->output_bfd, &sym, (PTR) esym, (PTR) 0); bucketcount = elf_hash_table (finfo->info)->bucketcount; bucket = h->elf_hash_value % bucketcount; @@ -6268,11 +6440,14 @@ elf_link_input_bfd (finfo, input_bfd) Elf_Internal_Sym *, asection **)); bfd *output_bfd; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; size_t locsymcount; size_t extsymoff; Elf_External_Sym *external_syms; Elf_External_Sym *esym; Elf_External_Sym *esymend; + Elf_External_Sym_Shndx *shndx_buf; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym *isym; long *pindex; asection **ppsection; @@ -6321,20 +6496,31 @@ elf_link_input_bfd (finfo, input_bfd) return false; } + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; + shndx_buf = NULL; + if (shndx_hdr->sh_size != 0 && locsymcount != 0) + { + bfd_size_type amt = locsymcount * sizeof (Elf_External_Sym_Shndx); + shndx_buf = finfo->locsym_shndx; + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread (shndx_buf, amt, input_bfd) != amt) + return false; + } + /* Swap in the local symbols and write out the ones which we know are going into the output file. */ - esym = external_syms; - esymend = esym + locsymcount; - isym = finfo->internal_syms; - pindex = finfo->indices; - ppsection = finfo->sections; - for (; esym < esymend; esym++, isym++, pindex++, ppsection++) + for (esym = external_syms, esymend = esym + locsymcount, + isym = finfo->internal_syms, pindex = finfo->indices, + ppsection = finfo->sections, shndx = shndx_buf; + esym < esymend; + esym++, isym++, pindex++, ppsection++, + shndx = (shndx != NULL ? shndx + 1 : NULL)) { asection *isec; const char *name; Elf_Internal_Sym osym; - elf_swap_symbol_in (input_bfd, esym, isym); + elf_swap_symbol_in (input_bfd, esym, shndx, isym); *pindex = -1; if (elf_bad_symtab (input_bfd)) @@ -6348,14 +6534,16 @@ elf_link_input_bfd (finfo, input_bfd) if (isym->st_shndx == SHN_UNDEF) isec = bfd_und_section_ptr; - else if (isym->st_shndx > 0 && isym->st_shndx < SHN_LORESERVE) + else if (isym->st_shndx < SHN_LORESERVE + || isym->st_shndx > SHN_HIRESERVE) { isec = section_from_elf_index (input_bfd, isym->st_shndx); - if (isec && elf_section_data (isec)->merge_info + if (isec + && elf_section_data (isec)->sec_info_type == ELF_INFO_TYPE_MERGE && ELF_ST_TYPE (isym->st_info) != STT_SECTION) isym->st_value = _bfd_merged_section_offset (output_bfd, &isec, - elf_section_data (isec)->merge_info, + elf_section_data (isec)->sec_info, isym->st_value, (bfd_vma) 0); } else if (isym->st_shndx == SHN_ABS) @@ -6400,8 +6588,7 @@ elf_link_input_bfd (finfo, input_bfd) linker_mark is only reliable for sections that have contents. For the benefit of the MIPS ELF linker, we check SEC_EXCLUDE as well as linker_mark. */ - if (isym->st_shndx > 0 - && isym->st_shndx < SHN_LORESERVE + if ((isym->st_shndx < SHN_LORESERVE || isym->st_shndx > SHN_HIRESERVE) && isec != NULL && ((! isec->linker_mark && (isec->flags & SEC_HAS_CONTENTS) != 0) || (! finfo->info->relocateable @@ -6431,7 +6618,7 @@ elf_link_input_bfd (finfo, input_bfd) /* Adjust the section index for the output file. */ osym.st_shndx = _bfd_elf_section_from_bfd_section (output_bfd, isec->output_section); - if (osym.st_shndx == (unsigned short) -1) + if (osym.st_shndx == SHN_BAD) return false; *pindex = bfd_get_symcount (output_bfd); @@ -6536,9 +6723,7 @@ elf_link_input_bfd (finfo, input_bfd) discarded section. */ if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) - && ! bfd_is_abs_section (h->root.u.def.section) - && bfd_is_abs_section (h->root.u.def.section - ->output_section)) + && elf_discarded_section (h->root.u.def.section)) { #if BFD_VERSION_DATE < 20031005 if ((o->flags & SEC_DEBUGGING) != 0) @@ -6567,9 +6752,7 @@ elf_link_input_bfd (finfo, input_bfd) { asection *sec = finfo->sections[r_symndx]; - if (sec != NULL - && ! bfd_is_abs_section (sec) - && bfd_is_abs_section (sec->output_section)) + if (sec != NULL && elf_discarded_section (sec)) { #if BFD_VERSION_DATE < 20031005 if ((o->flags & SEC_DEBUGGING) != 0 @@ -6769,7 +6952,7 @@ elf_link_input_bfd (finfo, input_bfd) isym->st_shndx = _bfd_elf_section_from_bfd_section (output_bfd, osec); - if (isym->st_shndx == (unsigned short) -1) + if (isym->st_shndx == SHN_BAD) return false; isym->st_value += sec->output_offset; @@ -6818,30 +7001,45 @@ elf_link_input_bfd (finfo, input_bfd) { /* Section written out. */ } - else if (elf_section_data (o)->stab_info) + else switch (elf_section_data (o)->sec_info_type) { + case ELF_INFO_TYPE_STABS: if (! (_bfd_write_section_stabs - (output_bfd, &elf_hash_table (finfo->info)->stab_info, - o, &elf_section_data (o)->stab_info, contents))) + (output_bfd, + &elf_hash_table (finfo->info)->stab_info, + o, &elf_section_data (o)->sec_info, contents))) return false; - } - else if (elf_section_data (o)->merge_info) - { + break; + case ELF_INFO_TYPE_MERGE: if (! (_bfd_write_merged_section - (output_bfd, o, elf_section_data (o)->merge_info))) + (output_bfd, o, elf_section_data (o)->sec_info))) return false; - } - else - { - bfd_size_type sec_size; + break; + case ELF_INFO_TYPE_EH_FRAME: + { + asection *ehdrsec; - sec_size = (o->_cooked_size != 0 ? o->_cooked_size : o->_raw_size); - if (! (o->flags & SEC_EXCLUDE) - && ! bfd_set_section_contents (output_bfd, o->output_section, - contents, - (file_ptr) o->output_offset, - sec_size)) - return false; + ehdrsec + = bfd_get_section_by_name (elf_hash_table (finfo->info)->dynobj, + ".eh_frame_hdr"); + if (! (_bfd_elf_write_section_eh_frame (output_bfd, o, ehdrsec, + contents))) + return false; + } + break; + default: + { + bfd_size_type sec_size; + + sec_size = (o->_cooked_size != 0 ? o->_cooked_size : o->_raw_size); + if (! (o->flags & SEC_EXCLUDE) + && ! bfd_set_section_contents (output_bfd, o->output_section, + contents, + (file_ptr) o->output_offset, + sec_size)) + return false; + } + break; } } @@ -7362,10 +7560,12 @@ elf_gc_mark (info, sec, gc_mark_hook) { Elf_Internal_Rela *relstart, *rel, *relend; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; struct elf_link_hash_entry **sym_hashes; size_t nlocsyms; size_t extsymoff; Elf_External_Sym *locsyms, *freesyms = NULL; + Elf_External_Sym_Shndx *locsym_shndx; bfd *input_bfd = sec->owner; struct elf_backend_data *bed = get_elf_backend_data (input_bfd); @@ -7383,6 +7583,7 @@ elf_gc_mark (info, sec, gc_mark_hook) } else extsymoff = nlocsyms = symtab_hdr->sh_info; + if (symtab_hdr->contents) locsyms = (Elf_External_Sym *) symtab_hdr->contents; else if (nlocsyms == 0) @@ -7400,6 +7601,17 @@ elf_gc_mark (info, sec, gc_mark_hook) } } + shndx_hdr = &elf_tdata (input_bfd)->symtab_shndx_hdr; + locsym_shndx = NULL; + if (shndx_hdr->sh_size != 0 && nlocsyms != 0) + { + bfd_size_type amt = nlocsyms * sizeof (Elf_External_Sym_Shndx); + locsym_shndx = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (bfd_seek (input_bfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread (locsym_shndx, amt, input_bfd) != amt) + return false; + } + /* Read the relocations. */ relstart = (NAME(_bfd_elf,link_read_relocs) (sec->owner, sec, NULL, (Elf_Internal_Rela *) NULL, @@ -7424,7 +7636,10 @@ elf_gc_mark (info, sec, gc_mark_hook) if (elf_bad_symtab (sec->owner)) { - elf_swap_symbol_in (input_bfd, &locsyms[r_symndx], &s); + elf_swap_symbol_in (input_bfd, + locsyms + r_symndx, + locsym_shndx + (locsym_shndx ? r_symndx : 0), + &s); if (ELF_ST_BIND (s.st_info) == STB_LOCAL) rsec = (*gc_mark_hook) (sec->owner, info, rel, NULL, &s); else @@ -7440,7 +7655,10 @@ elf_gc_mark (info, sec, gc_mark_hook) } else { - elf_swap_symbol_in (input_bfd, &locsyms[r_symndx], &s); + elf_swap_symbol_in (input_bfd, + locsyms + r_symndx, + locsym_shndx + (locsym_shndx ? r_symndx : 0), + &s); rsec = (*gc_mark_hook) (sec->owner, info, rel, NULL, &s); } @@ -7989,7 +8207,7 @@ elf_reloc_symbol_deleted_p (offset, cook bfd_vma offset; PTR cookie; { - struct elf_reloc_cookie *rcookie = (struct elf_reloc_cookie *)cookie; + struct elf_reloc_cookie *rcookie = (struct elf_reloc_cookie *) cookie; if (rcookie->bad_symtab) rcookie->rel = rcookie->rels; @@ -8006,9 +8224,16 @@ elf_reloc_symbol_deleted_p (offset, cook continue; if (rcookie->locsyms && r_symndx < rcookie->locsymcount) - elf_swap_symbol_in (rcookie->abfd, - (Elf_External_Sym *) rcookie->locsyms + r_symndx, - &isym); + { + Elf_External_Sym *lsym; + Elf_External_Sym_Shndx *lshndx; + + lsym = (Elf_External_Sym *) rcookie->locsyms + r_symndx; + lshndx = (Elf_External_Sym_Shndx *) rcookie->locsym_shndx; + if (lshndx != NULL) + lshndx += r_symndx; + elf_swap_symbol_in (rcookie->abfd, lsym, lshndx, &isym); + } if (r_symndx >= rcookie->locsymcount || (rcookie->locsyms @@ -8024,9 +8249,7 @@ elf_reloc_symbol_deleted_p (offset, cook if ((h->root.type == bfd_link_hash_defined || h->root.type == bfd_link_hash_defweak) - && ! bfd_is_abs_section (h->root.u.def.section) - && bfd_is_abs_section (h->root.u.def.section - ->output_section)) + && elf_discarded_section (h->root.u.def.section)) return true; else return false; @@ -8039,12 +8262,10 @@ elf_reloc_symbol_deleted_p (offset, cook asection *isec; /* Need to: get the symbol; get the section. */ - if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE) + if (isym.st_shndx < SHN_LORESERVE || isym.st_shndx > SHN_HIRESERVE) { isec = section_from_elf_index (rcookie->abfd, isym.st_shndx); - if (isec != NULL - && ! bfd_is_abs_section (isec) - && bfd_is_abs_section (isec->output_section)) + if (isec != NULL && elf_discarded_section (isec)) return true; } } @@ -8059,24 +8280,31 @@ elf_reloc_symbol_deleted_p (offset, cook which is true for all known assemblers. */ boolean -elf_bfd_discard_info (info) +elf_bfd_discard_info (output_bfd, info) + bfd *output_bfd; struct bfd_link_info *info; { struct elf_reloc_cookie cookie; - asection *o; + asection *stab, *eh, *ehdr; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_External_Sym *freesyms; struct elf_backend_data *bed; bfd *abfd; boolean ret = false; + boolean strip = info->strip == strip_all || info->strip == strip_debugger; if (info->relocateable || info->traditional_format || info->hash->creator->flavour != bfd_target_elf_flavour - || ! is_elf_hash_table (info) - || info->strip == strip_all - || info->strip == strip_debugger) + || ! is_elf_hash_table (info)) return false; + + ehdr = NULL; + if (elf_hash_table (info)->dynobj != NULL) + ehdr = bfd_get_section_by_name (elf_hash_table (info)->dynobj, + ".eh_frame_hdr"); + for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link_next) { if (bfd_get_flavour (abfd) != bfd_target_elf_flavour) @@ -8087,11 +8315,22 @@ elf_bfd_discard_info (info) if ((abfd->flags & DYNAMIC) != 0) continue; - o = bfd_get_section_by_name (abfd, ".stab"); - if (! o && ! bed->elf_backend_discard_info) + eh = NULL; + if (ehdr) + { + eh = bfd_get_section_by_name (abfd, ".eh_frame"); + if (eh && eh->_raw_size == 0) + eh = NULL; + } + + stab = strip ? NULL : bfd_get_section_by_name (abfd, ".stab"); + if ((! stab || elf_section_data(stab)->sec_info_type != ELF_INFO_TYPE_STABS) + && ! eh + && (strip || ! bed->elf_backend_discard_info)) continue; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; cookie.abfd = abfd; cookie.sym_hashes = elf_sym_hashes (abfd); @@ -8117,35 +8356,47 @@ elf_bfd_discard_info (info) { bfd_size_type amt = cookie.locsymcount * sizeof (Elf_External_Sym); cookie.locsyms = bfd_malloc (amt); - if (cookie.locsyms == NULL - || bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 + if (cookie.locsyms == NULL) + return false; + freesyms = cookie.locsyms; + if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 || bfd_bread (cookie.locsyms, amt, abfd) != amt) { - /* Something is very wrong - but we can still do our job for - global symbols, so don't give up. */ - if (cookie.locsyms) - free (cookie.locsyms); - cookie.locsyms = NULL; + error_ret_free_loc: + free (cookie.locsyms); + return false; } - else + } + + cookie.locsym_shndx = NULL; + if (shndx_hdr->sh_size != 0 && cookie.locsymcount != 0) + { + bfd_size_type amt; + amt = cookie.locsymcount * sizeof (Elf_External_Sym_Shndx); + cookie.locsym_shndx = bfd_malloc (amt); + if (cookie.locsym_shndx == NULL) + goto error_ret_free_loc; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread (cookie.locsym_shndx, amt, abfd) != amt) { - freesyms = cookie.locsyms; + free (cookie.locsym_shndx); + goto error_ret_free_loc; } - } + } - if (o) + if (stab) { cookie.rels = (NAME(_bfd_elf,link_read_relocs) - (abfd, o, (PTR) NULL, + (abfd, stab, (PTR) NULL, (Elf_Internal_Rela *) NULL, info->keep_memory)); if (cookie.rels) { cookie.rel = cookie.rels; cookie.relend = - cookie.rels + o->reloc_count * bed->s->int_rels_per_ext_rel; - if (_bfd_discard_section_stabs (abfd, o, - elf_section_data (o)->stab_info, + cookie.rels + stab->reloc_count * bed->s->int_rels_per_ext_rel; + if (_bfd_discard_section_stabs (abfd, stab, + elf_section_data (stab)->sec_info, elf_reloc_symbol_deleted_p, &cookie)) ret = true; @@ -8154,15 +8405,47 @@ elf_bfd_discard_info (info) } } + if (eh) + { + cookie.rels = NULL; + cookie.rel = NULL; + cookie.relend = NULL; + if (eh->reloc_count) + cookie.rels = (NAME(_bfd_elf,link_read_relocs) + (abfd, eh, (PTR) NULL, + (Elf_Internal_Rela *) NULL, + info->keep_memory)); + if (cookie.rels) + { + cookie.rel = cookie.rels; + cookie.relend = + cookie.rels + eh->reloc_count * bed->s->int_rels_per_ext_rel; + } + if (_bfd_elf_discard_section_eh_frame (abfd, info, eh, ehdr, + elf_reloc_symbol_deleted_p, + &cookie)) + ret = true; + if (! info->keep_memory) + free (cookie.rels); + } + if (bed->elf_backend_discard_info) { if (bed->elf_backend_discard_info (abfd, &cookie, info)) ret = true; } - if (freesyms) + if (cookie.locsym_shndx != NULL) + free (cookie.locsym_shndx); + + if (freesyms != NULL) free (freesyms); } + + if (ehdr + && _bfd_elf_discard_section_eh_frame_hdr (output_bfd, + info, ehdr)) + ret = true; return ret; } @@ -8170,13 +8453,19 @@ static boolean elf_section_ignore_discarded_relocs (sec) asection *sec; { - if (strcmp (sec->name, ".stab") == 0) - return true; - else if ((get_elf_backend_data (sec->owner) - ->elf_backend_ignore_discarded_relocs != NULL) - && (*get_elf_backend_data (sec->owner) - ->elf_backend_ignore_discarded_relocs) (sec)) + switch (elf_section_data (sec)->sec_info_type) + { + case ELF_INFO_TYPE_STABS: + case ELF_INFO_TYPE_EH_FRAME: + return true; + default: + break; + } + if ((get_elf_backend_data (sec->owner)->elf_backend_ignore_discarded_relocs + != NULL) + && (*get_elf_backend_data (sec->owner) + ->elf_backend_ignore_discarded_relocs) (sec)) return true; - else - return false; + + return false; } diff -uprN binutils-2.11.92.0.12.3/bfd/elfxx-ia64.c binutils-2.11.93.0.2/bfd/elfxx-ia64.c --- binutils-2.11.92.0.12.3/bfd/elfxx-ia64.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/elfxx-ia64.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* IA-64 support for 64-bit ELF - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of BFD, the Binary File Descriptor library. @@ -111,6 +111,10 @@ struct elfNN_ia64_local_hash_entry { struct bfd_hash_entry root; struct elfNN_ia64_dyn_sym_info *info; + + /* True if this hash entry's addends was translated for + SHF_MERGE optimization. */ + unsigned sec_merge_done : 1; }; struct elfNN_ia64_local_hash_table @@ -159,7 +163,7 @@ static boolean elfNN_ia64_relax_section PARAMS((bfd *abfd, asection *sec, struct bfd_link_info *link_info, boolean *again)); static boolean is_unwind_section_name - PARAMS ((const char *)); + PARAMS ((bfd *abfd, const char *)); static boolean elfNN_ia64_section_from_shdr PARAMS ((bfd *, ElfNN_Internal_Shdr *, char *)); static boolean elfNN_ia64_section_flags @@ -200,7 +204,7 @@ static struct bfd_hash_entry *elfNN_ia64 static void elfNN_ia64_hash_copy_indirect PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *)); static void elfNN_ia64_hash_hide_symbol - PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *)); + PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *, boolean)); static struct bfd_link_hash_table *elfNN_ia64_hash_table_create PARAMS ((bfd *abfd)); static struct elfNN_ia64_local_hash_entry *elfNN_ia64_local_hash_lookup @@ -216,6 +220,9 @@ static void elfNN_ia64_dyn_sym_traverse PTR info)); static boolean elfNN_ia64_create_dynamic_sections PARAMS ((bfd *abfd, struct bfd_link_info *info)); +static struct elfNN_ia64_local_hash_entry * get_local_sym_hash + PARAMS ((struct elfNN_ia64_link_hash_table *ia64_info, + bfd *abfd, const Elf_Internal_Rela *rel, boolean create)); static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_info PARAMS ((struct elfNN_ia64_link_hash_table *ia64_info, struct elf_link_hash_entry *h, @@ -294,14 +301,18 @@ static boolean elfNN_ia64_finish_dynamic PARAMS ((bfd *abfd, struct bfd_link_info *info)); static boolean elfNN_ia64_set_private_flags PARAMS ((bfd *abfd, flagword flags)); -static boolean elfNN_ia64_copy_private_bfd_data - PARAMS ((bfd *ibfd, bfd *obfd)); static boolean elfNN_ia64_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd)); static boolean elfNN_ia64_print_private_bfd_data PARAMS ((bfd *abfd, PTR ptr)); static enum elf_reloc_type_class elfNN_ia64_reloc_type_class PARAMS ((const Elf_Internal_Rela *)); +static boolean elfNN_ia64_hpux_vec + PARAMS ((const bfd_target *vec)); +static void elfNN_hpux_post_process_headers + PARAMS ((bfd *abfd, struct bfd_link_info *info)); +boolean elfNN_hpux_backend_section_from_bfd_section + PARAMS ((bfd *abfd, asection *sec, int *retval)); /* ia64-specific relocation */ @@ -637,6 +648,7 @@ elfNN_ia64_relax_section (abfd, sec, lin }; Elf_Internal_Shdr *symtab_hdr; + Elf_Internal_Shdr *shndx_hdr; Elf_Internal_Rela *internal_relocs; Elf_Internal_Rela *free_relocs = NULL; Elf_Internal_Rela *irel, *irelend; @@ -644,6 +656,7 @@ elfNN_ia64_relax_section (abfd, sec, lin bfd_byte *free_contents = NULL; ElfNN_External_Sym *extsyms; ElfNN_External_Sym *free_extsyms = NULL; + Elf_External_Sym_Shndx *shndx_buf = NULL; struct elfNN_ia64_link_hash_table *ia64_info; struct one_fixup *fixups = NULL; boolean changed_contents = false; @@ -705,18 +718,34 @@ elfNN_ia64_relax_section (abfd, sec, lin goto error_return; } - /* Read this BFD's symbols. */ + /* Read this BFD's local symbols. */ if (symtab_hdr->contents != NULL) extsyms = (ElfNN_External_Sym *) symtab_hdr->contents; else { - extsyms = (ElfNN_External_Sym *) bfd_malloc (symtab_hdr->sh_size); + bfd_size_type amt; + + amt = symtab_hdr->sh_info * sizeof (ElfNN_External_Sym); + extsyms = (ElfNN_External_Sym *) bfd_malloc (amt); if (extsyms == NULL) goto error_return; free_extsyms = extsyms; if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0 - || (bfd_bread (extsyms, symtab_hdr->sh_size, abfd) - != symtab_hdr->sh_size)) + || bfd_bread (extsyms, amt, abfd) != amt) + goto error_return; + } + + shndx_hdr = &elf_tdata (abfd)->symtab_shndx_hdr; + if (shndx_hdr->sh_size != 0) + { + bfd_size_type amt; + + amt = symtab_hdr->sh_info * sizeof (Elf_External_Sym_Shndx); + shndx_buf = (Elf_External_Sym_Shndx *) bfd_malloc (amt); + if (shndx_buf == NULL) + goto error_return; + if (bfd_seek (abfd, shndx_hdr->sh_offset, SEEK_SET) != 0 + || bfd_bread (shndx_buf, amt, abfd) != amt) goto error_return; } @@ -734,20 +763,23 @@ elfNN_ia64_relax_section (abfd, sec, lin /* Get the value of the symbol referred to by the reloc. */ if (ELFNN_R_SYM (irel->r_info) < symtab_hdr->sh_info) { + ElfNN_External_Sym *esym; + Elf_External_Sym_Shndx *shndx; + /* A local symbol. */ - bfd_elfNN_swap_symbol_in (abfd, - extsyms + ELFNN_R_SYM (irel->r_info), - &isym); + esym = extsyms + ELFNN_R_SYM (irel->r_info); + shndx = shndx_buf + (shndx_buf ? ELFNN_R_SYM (irel->r_info) : 0); + bfd_elfNN_swap_symbol_in (abfd, esym, shndx, &isym); if (isym.st_shndx == SHN_UNDEF) continue; /* We can't do anthing with undefined symbols. */ else if (isym.st_shndx == SHN_ABS) tsec = bfd_abs_section_ptr; else if (isym.st_shndx == SHN_COMMON) tsec = bfd_com_section_ptr; - else if (isym.st_shndx > 0 && isym.st_shndx < SHN_LORESERVE) - tsec = bfd_section_from_elf_index (abfd, isym.st_shndx); + else if (isym.st_shndx == SHN_IA_64_ANSI_COMMON) + tsec = bfd_com_section_ptr; else - continue; /* who knows. */ + tsec = bfd_section_from_elf_index (abfd, isym.st_shndx); toff = isym.st_value; } @@ -915,6 +947,9 @@ elfNN_ia64_relax_section (abfd, sec, lin } } + if (shndx_buf != NULL) + free (shndx_buf); + if (free_extsyms != NULL) { if (! link_info->keep_memory) @@ -934,6 +969,8 @@ elfNN_ia64_relax_section (abfd, sec, lin free (free_relocs); if (free_contents != NULL) free (free_contents); + if (shndx_buf != NULL) + free (shndx_buf); if (free_extsyms != NULL) free (free_extsyms); return false; @@ -942,11 +979,16 @@ elfNN_ia64_relax_section (abfd, sec, lin /* Return true if NAME is an unwind table section name. */ static inline boolean -is_unwind_section_name (name) +is_unwind_section_name (abfd, name) + bfd *abfd; const char *name; { size_t len1, len2, len3; + if (elfNN_ia64_hpux_vec (abfd->xvec) + && !strcmp (name, ELF_STRING_ia64_unwind_hdr)) + return false; + len1 = sizeof (ELF_STRING_ia64_unwind) - 1; len2 = sizeof (ELF_STRING_ia64_unwind_info) - 1; len3 = sizeof (ELF_STRING_ia64_unwind_once) - 1; @@ -974,6 +1016,10 @@ elfNN_ia64_section_from_shdr (abfd, hdr, switch (hdr->sh_type) { case SHT_IA_64_UNWIND: + case SHT_INIT_ARRAY: + case SHT_FINI_ARRAY: + case SHT_PREINIT_ARRAY: + case SHT_IA_64_HP_OPT_ANOT: break; case SHT_IA_64_EXT: @@ -1021,7 +1067,7 @@ elfNN_ia64_fake_sections (abfd, hdr, sec name = bfd_get_section_name (abfd, sec); - if (is_unwind_section_name (name)) + if (is_unwind_section_name (abfd, name)) { /* We don't have the sections numbered at this point, so sh_info is set later, in elfNN_ia64_final_write_processing. */ @@ -1030,6 +1076,14 @@ elfNN_ia64_fake_sections (abfd, hdr, sec } else if (strcmp (name, ELF_STRING_ia64_archext) == 0) hdr->sh_type = SHT_IA_64_EXT; + else if (strcmp (name, ".init_array") == 0) + hdr->sh_type = SHT_INIT_ARRAY; + else if (strcmp (name, ".fini_array") == 0) + hdr->sh_type = SHT_FINI_ARRAY; + else if (strcmp (name, ".preinit_array") == 0) + hdr->sh_type = SHT_PREINIT_ARRAY; + else if (strcmp (name, ".HP.opt_annot") == 0) + hdr->sh_type = SHT_IA_64_HP_OPT_ANOT; else if (strcmp (name, ".reloc") == 0) /* * This is an ugly, but unfortunately necessary hack that is @@ -1097,11 +1151,29 @@ elfNN_ia64_final_write_processing (abfd, { /* .gnu.linkonce.ia64unw.FOO -> .gnu.linkonce.t.FOO */ size_t len2 = sizeof (".gnu.linkonce.t.") - 1; - char *once_name = alloca (len2 + strlen (sname) - len + 1); + char *once_name = bfd_malloc (len2 + strlen (sname + len) + 1); - memcpy (once_name, ".gnu.linkonce.t.", len2); - strcpy (once_name + len2, sname + len); - text_sect = bfd_get_section_by_name (abfd, once_name); + if (once_name != NULL) + { + memcpy (once_name, ".gnu.linkonce.t.", len2); + strcpy (once_name + len2, sname + len); + text_sect = bfd_get_section_by_name (abfd, once_name); + free (once_name); + } + else + /* Should only happen if we run out of memory, in + which case we're probably toast anyway. Try to + cope by finding the section the slow way. */ + for (text_sect = abfd->sections; + text_sect != NULL; + text_sect = text_sect->next) + { + if (strncmp (bfd_section_name (abfd, text_sect), + ".gnu.linkonce.t.", len2) == 0 + && strcmp (bfd_section_name (abfd, text_sect) + len2, + sname + len) == 0) + break; + } } else /* last resort: fall back on .text */ @@ -1218,15 +1290,15 @@ elfNN_ia64_aix_add_symbol_hook (abfd, in } else if (sym->st_shndx == SHN_LOOS) { - int i; + unsigned int i; /* SHN_AIX_SYSCALL: Treat this as any other symbol. The special symbol is only relevant when compiling code for extended system calls. Replace the "special" section with .text, if possible. Note that these symbols are always assumed to be in .text. */ - for (i = 1; i < elf_elfheader (abfd)->e_shnum; i++) + for (i = 1; i < elf_numsections (abfd); i++) { - asection * sec = bfd_section_from_elf_index (abfd, (unsigned) i); + asection * sec = bfd_section_from_elf_index (abfd, i); if (sec && strcmp (sec->name, ".text") == 0) { @@ -1282,7 +1354,7 @@ elfNN_ia64_additional_program_headers (a /* Count how many PT_IA_64_UNWIND segments we need. */ for (s = abfd->sections; s; s = s->next) - if (is_unwind_section_name(s->name) && (s->flags & SEC_LOAD)) + if (is_unwind_section_name (abfd, s->name) && (s->flags & SEC_LOAD)) ++ret; return ret; @@ -1295,6 +1367,8 @@ elfNN_ia64_modify_segment_map (abfd) struct elf_segment_map *m, **pm; Elf_Internal_Shdr *hdr; asection *s; + boolean unwind_found; + asection *unwind_sec; /* If we need a PT_IA_64_ARCHEXT segment, it must come before all PT_LOAD segments. */ @@ -1337,8 +1411,24 @@ elfNN_ia64_modify_segment_map (abfd) if (s && (s->flags & SEC_LOAD)) { for (m = elf_tdata (abfd)->segment_map; m != NULL; m = m->next) - if (m->p_type == PT_IA_64_UNWIND && m->sections[0] == s) - break; + if (m->p_type == PT_IA_64_UNWIND) + { + /* Look through all sections in the unwind segment + for a match since there may be multiple sections + to a segment. */ + + unwind_sec = m->sections[0]; + unwind_found = false; + while (unwind_sec != NULL && !unwind_found) + { + if (unwind_sec == s) + unwind_found = true; + else + unwind_sec = unwind_sec -> next; + } + if (unwind_found) + break; + } if (m == NULL) { @@ -1556,18 +1646,17 @@ elfNN_ia64_hash_copy_indirect (xdir, xin } static void -elfNN_ia64_hash_hide_symbol (info, xh) - struct bfd_link_info *info ATTRIBUTE_UNUSED; +elfNN_ia64_hash_hide_symbol (info, xh, force_local) + struct bfd_link_info *info; struct elf_link_hash_entry *xh; + boolean force_local; { struct elfNN_ia64_link_hash_entry *h; struct elfNN_ia64_dyn_sym_info *dyn_i; h = (struct elfNN_ia64_link_hash_entry *)xh; - h->root.elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT; - if ((h->root.elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0) - h->root.dynindx = -1; + _bfd_elf_link_hash_hide_symbol (info, &h->root, force_local); for (dyn_i = h->info; dyn_i; dyn_i = dyn_i->next) dyn_i->want_plt2 = 0; @@ -1719,6 +1808,37 @@ elfNN_ia64_create_dynamic_sections (abfd return true; } +/* Find and/or create a hash entry for local symbol. */ +static struct elfNN_ia64_local_hash_entry * +get_local_sym_hash (ia64_info, abfd, rel, create) + struct elfNN_ia64_link_hash_table *ia64_info; + bfd *abfd; + const Elf_Internal_Rela *rel; + boolean create; +{ + char *addr_name; + size_t len; + struct elfNN_ia64_local_hash_entry *ret; + + /* Construct a string for use in the elfNN_ia64_local_hash_table. + name describes what was once anonymous memory. */ + + len = sizeof (void*)*2 + 1 + sizeof (bfd_vma)*4 + 1 + 1; + len += 10; /* %p slop */ + + addr_name = bfd_malloc (len); + if (addr_name == NULL) + return 0; + sprintf (addr_name, "%p:%lx", + (void *) abfd, (unsigned long) ELFNN_R_SYM (rel->r_info)); + + /* Collect the canonical entry data for this address. */ + ret = elfNN_ia64_local_hash_lookup (&ia64_info->loc_hash_table, + addr_name, create, create); + free (addr_name); + return ret; +} + /* Find and/or create a descriptor for dynamic symbol info. This will vary based on global or local symbol, and the addend to the reloc. */ @@ -1739,22 +1859,8 @@ get_dyn_sym_info (ia64_info, h, abfd, re else { struct elfNN_ia64_local_hash_entry *loc_h; - char *addr_name; - size_t len; - - /* Construct a string for use in the elfNN_ia64_local_hash_table. - The name describes what was once anonymous memory. */ - - len = sizeof (void*)*2 + 1 + sizeof (bfd_vma)*4 + 1 + 1; - len += 10; /* %p slop */ - addr_name = alloca (len); - sprintf (addr_name, "%p:%lx", - (void *) abfd, (unsigned long) ELFNN_R_SYM (rel->r_info)); - - /* Collect the canonical entry data for this address. */ - loc_h = elfNN_ia64_local_hash_lookup (&ia64_info->loc_hash_table, - addr_name, create, create); + loc_h = get_local_sym_hash (ia64_info, abfd, rel, create); BFD_ASSERT (loc_h); pp = &loc_h->info; @@ -2995,33 +3101,19 @@ elfNN_ia64_install_dyn_reloc (abfd, info { Elf_Internal_Rela outrel; - outrel.r_offset = (sec->output_section->vma - + sec->output_offset - + offset); + offset += sec->output_section->vma + sec->output_offset; BFD_ASSERT (dynindx != -1); outrel.r_info = ELFNN_R_INFO (dynindx, type); outrel.r_addend = addend; - - if (elf_section_data (sec)->stab_info != NULL) + outrel.r_offset = _bfd_elf_section_offset (abfd, info, sec, offset); + if (outrel.r_offset == (bfd_vma) -1) { - /* This may be NULL for linker-generated relocations, as it is - inconvenient to pass all the bits around. And this shouldn't - happen. */ - BFD_ASSERT (info != NULL); - - offset = (_bfd_stab_section_offset - (abfd, &elf_hash_table (info)->stab_info, sec, - &elf_section_data (sec)->stab_info, offset)); - if (offset == (bfd_vma) -1) - { - /* Run for the hills. We shouldn't be outputting a relocation - for this. So do what everyone else does and output a no-op. */ - outrel.r_info = ELFNN_R_INFO (0, R_IA64_NONE); - outrel.r_addend = 0; - offset = 0; - } - outrel.r_offset = offset; + /* Run for the hills. We shouldn't be outputting a relocation + for this. So do what everyone else does and output a no-op. */ + outrel.r_info = ELFNN_R_INFO (0, R_IA64_NONE); + outrel.r_addend = 0; + outrel.r_offset = 0; } bfd_elfNN_swap_reloca_out (abfd, &outrel, @@ -3481,9 +3573,39 @@ elfNN_ia64_relocate_section (output_bfd, /* Reloc against local symbol. */ sym = local_syms + r_symndx; sym_sec = local_sections[r_symndx]; - value = (sym_sec->output_section->vma - + sym_sec->output_offset - + sym->st_value); + value = _bfd_elf_rela_local_sym (output_bfd, sym, sym_sec, rel); + if ((sym_sec->flags & SEC_MERGE) + && ELF_ST_TYPE (sym->st_info) == STT_SECTION + && (elf_section_data (sym_sec)->sec_info_type + == ELF_INFO_TYPE_MERGE)) + { + struct elfNN_ia64_local_hash_entry *loc_h; + + loc_h = get_local_sym_hash (ia64_info, input_bfd, rel, false); + if (loc_h && ! loc_h->sec_merge_done) + { + struct elfNN_ia64_dyn_sym_info *dynent; + asection *msec; + + for (dynent = loc_h->info; dynent; dynent = dynent->next) + { + msec = sym_sec; + dynent->addend = + _bfd_merged_section_offset (output_bfd, &msec, + elf_section_data (msec)-> + sec_info, + sym->st_value + + dynent->addend, + (bfd_vma) 0); + dynent->addend -= sym->st_value; + dynent->addend += msec->output_section->vma + + msec->output_offset + - sym_sec->output_section->vma + - sym_sec->output_offset; + } + loc_h->sec_merge_done = 1; + } + } } else { @@ -4203,24 +4325,6 @@ elfNN_ia64_set_private_flags (abfd, flag return true; } -/* Copy backend specific data from one object module to another */ -static boolean -elfNN_ia64_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd, *obfd; -{ - if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour - || bfd_get_flavour (obfd) != bfd_target_elf_flavour) - return true; - - BFD_ASSERT (!elf_flags_init (obfd) - || (elf_elfheader (obfd)->e_flags - == elf_elfheader (ibfd)->e_flags)); - - elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags; - elf_flags_init (obfd) = true; - return true; -} - /* Merge backend specific data from an object file to the output object file when linking. */ static boolean @@ -4356,6 +4460,38 @@ elfNN_ia64_reloc_type_class (rela) return reloc_class_normal; } } + +static boolean +elfNN_ia64_hpux_vec (const bfd_target *vec) +{ + extern const bfd_target bfd_elfNN_ia64_hpux_big_vec; + return (vec == & bfd_elfNN_ia64_hpux_big_vec); +} + +static void +elfNN_hpux_post_process_headers (abfd, info) + bfd *abfd; + struct bfd_link_info *info ATTRIBUTE_UNUSED; +{ + Elf_Internal_Ehdr *i_ehdrp = elf_elfheader (abfd); + + i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_HPUX; + i_ehdrp->e_ident[EI_ABIVERSION] = 1; +} + +boolean +elfNN_hpux_backend_section_from_bfd_section (abfd, sec, retval) + bfd *abfd ATTRIBUTE_UNUSED; + asection *sec; + int *retval; +{ + if (bfd_is_com_section (sec)) + { + *retval = SHN_IA_64_ANSI_COMMON; + return true; + } + return false; +} #define TARGET_LITTLE_SYM bfd_elfNN_ia64_little_vec #define TARGET_LITTLE_NAME "elfNN-ia64-little" @@ -4411,8 +4547,6 @@ elfNN_ia64_reloc_type_class (rela) #define bfd_elfNN_bfd_final_link \ elfNN_ia64_final_link -#define bfd_elfNN_bfd_copy_private_bfd_data \ - elfNN_ia64_copy_private_bfd_data #define bfd_elfNN_bfd_merge_private_bfd_data \ elfNN_ia64_merge_private_bfd_data #define bfd_elfNN_bfd_set_private_flags \ @@ -4456,3 +4590,36 @@ elfNN_ia64_reloc_type_class (rela) #define elfNN_bed elfNN_ia64_aix_bed #include "elfNN-target.h" + +/* HPUX-specific vectors. */ + +#undef TARGET_LITTLE_SYM +#undef TARGET_LITTLE_NAME +#undef TARGET_BIG_SYM +#define TARGET_BIG_SYM bfd_elfNN_ia64_hpux_big_vec +#undef TARGET_BIG_NAME +#define TARGET_BIG_NAME "elfNN-ia64-hpux-big" + +/* We need to undo the AIX specific functions. */ + +#undef elf_backend_add_symbol_hook +#define elf_backend_add_symbol_hook elfNN_ia64_add_symbol_hook + +#undef bfd_elfNN_bfd_link_add_symbols +#define bfd_elfNN_bfd_link_add_symbols _bfd_generic_link_add_symbols + +/* These are HP-UX specific functions. */ + +#undef elf_backend_post_process_headers +#define elf_backend_post_process_headers elfNN_hpux_post_process_headers + +#undef elf_backend_section_from_bfd_section +#define elf_backend_section_from_bfd_section elfNN_hpux_backend_section_from_bfd_section + +#undef ELF_MAXPAGESIZE +#define ELF_MAXPAGESIZE 0x1000 /* 1K */ + +#undef elfNN_bed +#define elfNN_bed elfNN_ia64_hpux_bed + +#include "elfNN-target.h" diff -uprN binutils-2.11.92.0.12.3/bfd/elfxx-target.h binutils-2.11.93.0.2/bfd/elfxx-target.h --- binutils-2.11.92.0.12.3/bfd/elfxx-target.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/elfxx-target.h Sun Feb 3 11:22:30 2002 @@ -142,7 +142,7 @@ Foundation, Inc., 59 Temple Place - Suit #endif #ifndef bfd_elfNN_bfd_copy_private_bfd_data #define bfd_elfNN_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) + _bfd_elf_copy_private_bfd_data #endif #ifndef bfd_elfNN_bfd_print_private_bfd_data #define bfd_elfNN_bfd_print_private_bfd_data \ diff -uprN binutils-2.11.92.0.12.3/bfd/hppabsd-core.c binutils-2.11.93.0.2/bfd/hppabsd-core.c --- binutils-2.11.92.0.12.3/bfd/hppabsd-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/hppabsd-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for HPPA BSD core files. - Copyright 1993, 1994, 1995, 1998, 1999, 2001 + Copyright 1993, 1994, 1995, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -51,7 +51,6 @@ static asection *make_bfd_asection PARAMS ((bfd *, const char *, flagword, bfd_size_type, file_ptr, unsigned int)); -static asymbol *hppabsd_core_make_empty_symbol PARAMS ((bfd *)); static const bfd_target *hppabsd_core_core_file_p PARAMS ((bfd *)); static char *hppabsd_core_core_file_failing_command PARAMS ((bfd *)); static int hppabsd_core_core_file_failing_signal PARAMS ((bfd *)); @@ -100,18 +99,6 @@ make_bfd_asection (abfd, name, flags, _r return asect; } -static asymbol * -hppabsd_core_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - static const bfd_target * hppabsd_core_core_file_p (abfd) bfd *abfd; @@ -183,6 +170,8 @@ hppabsd_core_core_file_p (abfd) clicksz * u.u_ssize, NBPG * (USIZE + KSTAKSIZE) + clicksz * u.u_dsize, 2); + if (core_stacksec (abfd) == NULL) + goto fail; core_stacksec (abfd)->vma = USRSTACK; core_datasec (abfd) = make_bfd_asection (abfd, ".data", @@ -190,17 +179,27 @@ hppabsd_core_core_file_p (abfd) + SEC_HAS_CONTENTS, clicksz * u.u_dsize, NBPG * (USIZE + KSTAKSIZE), 2); + if (core_datasec (abfd) == NULL) + goto fail; core_datasec (abfd)->vma = UDATASEG; core_regsec (abfd) = make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS, KSTAKSIZE * NBPG, NBPG * USIZE, 2); + if (core_regsec (abfd) == NULL) + goto fail; core_regsec (abfd)->vma = 0; strncpy (core_command (abfd), u.u_comm, MAXCOMLEN + 1); core_signal (abfd) = u.u_code; return abfd->xvec; + + fail: + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); + return NULL; } static char * @@ -227,19 +226,6 @@ hppabsd_core_core_file_matches_executabl return true; } -#define hppabsd_core_get_symtab_upper_bound \ - _bfd_nosymbols_get_symtab_upper_bound -#define hppabsd_core_get_symtab _bfd_nosymbols_get_symtab -#define hppabsd_core_print_symbol _bfd_nosymbols_print_symbol -#define hppabsd_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define hppabsd_core_bfd_is_local_label_name \ - _bfd_nosymbols_bfd_is_local_label_name -#define hppabsd_core_get_lineno _bfd_nosymbols_get_lineno -#define hppabsd_core_find_nearest_line _bfd_nosymbols_find_nearest_line -#define hppabsd_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define hppabsd_core_read_minisymbols _bfd_nosymbols_read_minisymbols -#define hppabsd_core_minisymbol_to_symbol _bfd_nosymbols_minisymbol_to_symbol - /* If somebody calls any byte-swapping routines, shoot them. */ static void swap_abort () @@ -288,15 +274,15 @@ const bfd_target hppabsd_core_vec = bfd_false, bfd_false }, - BFD_JUMP_TABLE_GENERIC (_bfd_generic), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (hppabsd_core), - BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), - BFD_JUMP_TABLE_SYMBOLS (hppabsd_core), - BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), - BFD_JUMP_TABLE_WRITE (_bfd_generic), - BFD_JUMP_TABLE_LINK (_bfd_nolink), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (hppabsd_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, diff -uprN binutils-2.11.92.0.12.3/bfd/hpux-core.c binutils-2.11.93.0.2/bfd/hpux-core.c --- binutils-2.11.92.0.12.3/bfd/hpux-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/hpux-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for HP/UX core files. - Copyright 1993, 1994, 1996, 1998, 1999, 2001 + Copyright 1993, 1994, 1996, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. Written by Stu Grossman, Cygnus Support. Converted to back-end form by Ian Lance Taylor, Cygnus SUpport @@ -103,7 +103,6 @@ struct hpux_core_struct static asection *make_bfd_asection PARAMS ((bfd *, const char *, flagword, bfd_size_type, bfd_vma, unsigned int)); -static asymbol *hpux_core_make_empty_symbol PARAMS ((bfd *)); static const bfd_target *hpux_core_core_file_p PARAMS ((bfd *)); static char *hpux_core_core_file_failing_command PARAMS ((bfd *)); static int hpux_core_core_file_failing_signal PARAMS ((bfd *)); @@ -142,18 +141,6 @@ make_bfd_asection (abfd, name, flags, _r return asect; } -static asymbol * -hpux_core_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - /* this function builds a bfd target if the file is a corefile. It returns null or 0 if it finds out thaat it is not a core file. The way it checks this is by looking for allowed 'type' field values. @@ -246,7 +233,7 @@ hpux_core_core_file_p (abfd) core_header.len, (int) &proc_info - (int) & proc_info.hw_regs, 2)) - return NULL; + goto fail; } else { @@ -259,7 +246,7 @@ hpux_core_core_file_p (abfd) core_header.len, (int) &proc_info - (int) & proc_info.hw_regs, 2)) - return NULL; + goto fail; } /* We always make one of these sections, for every thread. */ sprintf (secname, ".reg/%d", core_kernel_thread_id (abfd)); @@ -268,7 +255,7 @@ hpux_core_core_file_p (abfd) core_header.len, (int) &proc_info - (int) & proc_info.hw_regs, 2)) - return NULL; + goto fail; } core_signal (abfd) = proc_info.sig; if (bfd_seek (abfd, (file_ptr) core_header.len, SEEK_CUR) != 0) @@ -286,7 +273,7 @@ hpux_core_core_file_p (abfd) if (!make_bfd_asection (abfd, ".data", SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS, core_header.len, core_header.addr, 2)) - return NULL; + goto fail; bfd_seek (abfd, (file_ptr) core_header.len, SEEK_CUR); good_sections++; @@ -302,7 +289,8 @@ hpux_core_core_file_p (abfd) unknown_sections++; break; - default: return 0; /*unrecognized core file type */ + default: + goto fail; /*unrecognized core file type */ } } @@ -320,6 +308,12 @@ hpux_core_core_file_p (abfd) abfd->filename); return abfd->xvec; + + fail: + bfd_release (abfd, core_hdr (abfd)); + core_hdr (abfd) = NULL; + bfd_section_list_clear (abfd); + return NULL; } static char * @@ -346,18 +340,6 @@ hpux_core_core_file_matches_executable_p return true; /* FIXME, We have no way of telling at this point */ } -#define hpux_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound -#define hpux_core_get_symtab _bfd_nosymbols_get_symtab -#define hpux_core_print_symbol _bfd_nosymbols_print_symbol -#define hpux_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define hpux_core_bfd_is_local_label_name \ - _bfd_nosymbols_bfd_is_local_label_name -#define hpux_core_get_lineno _bfd_nosymbols_get_lineno -#define hpux_core_find_nearest_line _bfd_nosymbols_find_nearest_line -#define hpux_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define hpux_core_read_minisymbols _bfd_nosymbols_read_minisymbols -#define hpux_core_minisymbol_to_symbol _bfd_nosymbols_minisymbol_to_symbol - /* If somebody calls any byte-swapping routines, shoot them. */ static void swap_abort () @@ -404,15 +386,15 @@ const bfd_target hpux_core_vec = bfd_false, bfd_false }, - BFD_JUMP_TABLE_GENERIC (_bfd_generic), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (hpux_core), - BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), - BFD_JUMP_TABLE_SYMBOLS (hpux_core), - BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), - BFD_JUMP_TABLE_WRITE (_bfd_generic), - BFD_JUMP_TABLE_LINK (_bfd_nolink), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (hpux_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, diff -uprN binutils-2.11.92.0.12.3/bfd/ieee.c binutils-2.11.93.0.2/bfd/ieee.c --- binutils-2.11.92.0.12.3/bfd/ieee.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/ieee.c Sun Feb 3 11:22:30 2002 @@ -1,25 +1,25 @@ /* BFD back-end for ieee-695 objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define KEEPMINUSPCININST 0 @@ -874,7 +874,7 @@ ieee_slurp_external_symbols (abfd) break; default: (*_bfd_error_handler) - (_("%s: unimplemented ATI record %u for symbol %u"), + (_("%s: unimplemented ATI record %u for symbol %u"), bfd_archive_filename (abfd), symbol_attribute_def, symbol_name_index); bfd_set_error (bfd_error_bad_value); diff -uprN binutils-2.11.92.0.12.3/bfd/ihex.c binutils-2.11.93.0.2/bfd/ihex.c --- binutils-2.11.92.0.12.3/bfd/ihex.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/ihex.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for Intel Hex objects. - Copyright 1995, 1996, 1998, 1999, 2000, 2001 + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor of Cygnus Support . @@ -139,7 +139,6 @@ static boolean ihex_set_section_contents static boolean ihex_write_record PARAMS ((bfd *, size_t, unsigned int, unsigned int, bfd_byte *)); static boolean ihex_write_object_contents PARAMS ((bfd *)); -static asymbol *ihex_make_empty_symbol PARAMS ((bfd *)); static boolean ihex_set_arch_mach PARAMS ((bfd *, enum bfd_architecture, unsigned long)); static int ihex_sizeof_headers PARAMS ((bfd *, boolean)); @@ -861,7 +860,7 @@ ihex_write_object_contents (abfd) sprintf_vma (buf, where); (*_bfd_error_handler) - (_("%s: address 0x%s out of range for Intex Hex file"), + (_("%s: address 0x%s out of range for Intel Hex file"), bfd_get_filename (abfd), buf); bfd_set_error (bfd_error_bad_value); return false; @@ -916,21 +915,6 @@ ihex_write_object_contents (abfd) return true; } -/* Make an empty symbol. This is required only because - bfd_make_section_anyway wants to create a symbol for the section. */ - -static asymbol * -ihex_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new != NULL) - new->the_bfd = abfd; - return new; -} - /* Set the architecture for the output file. The architecture is irrelevant, so we ignore errors about unknown architectures. */ @@ -970,6 +954,7 @@ ihex_sizeof_headers (abfd, exec) #define ihex_get_symtab_upper_bound bfd_0l #define ihex_get_symtab \ ((long (*) PARAMS ((bfd *, asymbol **))) bfd_0l) +#define ihex_make_empty_symbol _bfd_generic_make_empty_symbol #define ihex_print_symbol _bfd_nosymbols_print_symbol #define ihex_get_symbol_info _bfd_nosymbols_get_symbol_info #define ihex_bfd_is_local_label_name _bfd_nosymbols_bfd_is_local_label_name diff -uprN binutils-2.11.92.0.12.3/bfd/irix-core.c binutils-2.11.93.0.2/bfd/irix-core.c --- binutils-2.11.92.0.12.3/bfd/irix-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/irix-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* BFD back-end for Irix core files. - Copyright 1993, 1994, 1996, 1999, 2001 Free Software Foundation, Inc. + Copyright 1993, 1994, 1996, 1999, 2001, 2002 + Free Software Foundation, Inc. Written by Stu Grossman, Cygnus Support. Converted to back-end form by Ian Lance Taylor, Cygnus Support @@ -47,7 +48,6 @@ static char *irix_core_core_file_failing static int irix_core_core_file_failing_signal PARAMS ((bfd *)); static boolean irix_core_core_file_matches_executable_p PARAMS ((bfd *, bfd *)); -static asymbol *irix_core_make_empty_symbol PARAMS ((bfd *)); static void swap_abort PARAMS ((void)); static asection * @@ -109,7 +109,7 @@ irix_core_core_file_p (abfd) core_signal (abfd) = coreout.c_sigcause; if (bfd_seek (abfd, coreout.c_vmapoffset, SEEK_SET) != 0) - return NULL; + goto fail; for (i = 0; i < coreout.c_nvmap; i++) { @@ -146,7 +146,7 @@ irix_core_core_file_p (abfd) vmap.v_len, vmap.v_vaddr, vmap.v_offset)) - return NULL; + goto fail; } /* Make sure that the regs are contiguous within the core file. */ @@ -157,21 +157,28 @@ irix_core_core_file_p (abfd) if (idg->i_offset + idg->i_len != idf->i_offset || idf->i_offset + idf->i_len != ids->i_offset) - return 0; /* Can't deal with non-contig regs */ + goto fail; /* Can't deal with non-contig regs */ if (bfd_seek (abfd, idg->i_offset, SEEK_SET) != 0) - return NULL; + goto fail; - make_bfd_asection (abfd, ".reg", - SEC_HAS_CONTENTS, - idg->i_len + idf->i_len + ids->i_len, - 0, - idg->i_offset); + if (!make_bfd_asection (abfd, ".reg", + SEC_HAS_CONTENTS, + idg->i_len + idf->i_len + ids->i_len, + 0, + idg->i_offset)) + goto fail; /* OK, we believe you. You're a core file (sure, sure). */ bfd_default_set_arch_mach (abfd, bfd_arch_mips, 0); return abfd->xvec; + + fail: + bfd_release (abfd, core_hdr (abfd)); + core_hdr (abfd) = NULL; + bfd_section_list_clear (abfd); + return NULL; } static char * @@ -195,29 +202,6 @@ irix_core_core_file_matches_executable_p return true; /* XXX - FIXME */ } -static asymbol * -irix_core_make_empty_symbol (abfd) - bfd *abfd; -{ - bfd_size_type amt = sizeof (asymbol); - asymbol *new = (asymbol *) bfd_zalloc (abfd, amt); - if (new) - new->the_bfd = abfd; - return new; -} - -#define irix_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound -#define irix_core_get_symtab _bfd_nosymbols_get_symtab -#define irix_core_print_symbol _bfd_nosymbols_print_symbol -#define irix_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define irix_core_bfd_is_local_label_name \ - _bfd_nosymbols_bfd_is_local_label_name -#define irix_core_get_lineno _bfd_nosymbols_get_lineno -#define irix_core_find_nearest_line _bfd_nosymbols_find_nearest_line -#define irix_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define irix_core_read_minisymbols _bfd_nosymbols_read_minisymbols -#define irix_core_minisymbol_to_symbol _bfd_nosymbols_minisymbol_to_symbol - /* If somebody calls any byte-swapping routines, shoot them. */ static void swap_abort() @@ -264,15 +248,15 @@ const bfd_target irix_core_vec = bfd_false, bfd_false }, - BFD_JUMP_TABLE_GENERIC (_bfd_generic), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (irix_core), - BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), - BFD_JUMP_TABLE_SYMBOLS (irix_core), - BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), - BFD_JUMP_TABLE_WRITE (_bfd_generic), - BFD_JUMP_TABLE_LINK (_bfd_nolink), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (irix_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, diff -uprN binutils-2.11.92.0.12.3/bfd/libbfd-in.h binutils-2.11.93.0.2/bfd/libbfd-in.h --- binutils-2.11.92.0.12.3/bfd/libbfd-in.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/libbfd-in.h Sun Feb 3 11:22:30 2002 @@ -112,6 +112,7 @@ boolean _bfd_compute_and_write_armap PAR bfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos)); extern bfd *_bfd_generic_get_elt_at_index PARAMS ((bfd *, symindex)); bfd * _bfd_new_bfd PARAMS ((void)); +void _bfd_delete_bfd PARAMS ((bfd *)); boolean bfd_false PARAMS ((bfd *ignore)); boolean bfd_true PARAMS ((bfd *ignore)); @@ -250,8 +251,7 @@ extern boolean _bfd_archive_coff_constru #define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1 #define _bfd_nosymbols_get_symtab \ ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1) -#define _bfd_nosymbols_make_empty_symbol \ - ((asymbol *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol #define _bfd_nosymbols_print_symbol \ ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void) #define _bfd_nosymbols_get_symbol_info \ @@ -368,6 +368,10 @@ extern boolean _bfd_dwarf2_find_nearest_ const char **, unsigned int *, unsigned int, PTR *)); +/* Create a new section entry. */ +extern struct bfd_hash_entry *bfd_section_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); + /* A routine to create entries for a bfd_link_hash_table. */ extern struct bfd_hash_entry *_bfd_link_hash_newfunc PARAMS ((struct bfd_hash_entry *entry, @@ -474,7 +478,7 @@ extern boolean _bfd_merge_section /* Attempt to merge SEC_MERGE sections. */ extern boolean _bfd_merge_sections - PARAMS ((bfd *, PTR)); + PARAMS ((bfd *, PTR, void (*)(bfd *, asection *))); /* Write out a merged section. */ diff -uprN binutils-2.11.92.0.12.3/bfd/libbfd.c binutils-2.11.93.0.2/bfd/libbfd.c --- binutils-2.11.92.0.12.3/bfd/libbfd.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/libbfd.c Sun Feb 3 11:22:30 2002 @@ -1,24 +1,24 @@ /* Assorted BFD support routines, only used internally. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. -This file is part of BFD, the Binary File Descriptor library. + This file is part of BFD, the Binary File Descriptor library. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" #include "sysdep.h" @@ -1448,6 +1448,7 @@ _bfd_generic_verify_endian_match (ibfd, /* Give a warning at runtime if someone compiles code which calls old routines. */ + void warn_deprecated (what, file, line, func) const char *what; @@ -1460,11 +1461,13 @@ warn_deprecated (what, file, line, func) if (~(size_t) func & ~mask) { - fprintf (stderr, _("Deprecated %s called"), what); + /* Note: seperate sentances in order to allow + for translation into other languages. */ if (func) - fprintf (stderr, _(" at %s line %d in %s\n"), file, line, func); + fprintf (stderr, _("Deprecated %s called at %s line %d in %s\n"), + what, file, line, func); else - fprintf (stderr, "\n"); + fprintf (stderr, _("Deprecated %s called\n"), what); mask |= ~(size_t) func; } } diff -uprN binutils-2.11.92.0.12.3/bfd/libbfd.h binutils-2.11.93.0.2/bfd/libbfd.h --- binutils-2.11.92.0.12.3/bfd/libbfd.h Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/libbfd.h Sun Feb 3 11:22:30 2002 @@ -117,6 +117,7 @@ boolean _bfd_compute_and_write_armap PAR bfd *_bfd_get_elt_at_filepos PARAMS ((bfd *archive, file_ptr filepos)); extern bfd *_bfd_generic_get_elt_at_index PARAMS ((bfd *, symindex)); bfd * _bfd_new_bfd PARAMS ((void)); +void _bfd_delete_bfd PARAMS ((bfd *)); boolean bfd_false PARAMS ((bfd *ignore)); boolean bfd_true PARAMS ((bfd *ignore)); @@ -255,8 +256,7 @@ extern boolean _bfd_archive_coff_constru #define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1 #define _bfd_nosymbols_get_symtab \ ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1) -#define _bfd_nosymbols_make_empty_symbol \ - ((asymbol *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol #define _bfd_nosymbols_print_symbol \ ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void) #define _bfd_nosymbols_get_symbol_info \ @@ -373,6 +373,10 @@ extern boolean _bfd_dwarf2_find_nearest_ const char **, unsigned int *, unsigned int, PTR *)); +/* Create a new section entry. */ +extern struct bfd_hash_entry *bfd_section_hash_newfunc + PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *)); + /* A routine to create entries for a bfd_link_hash_table. */ extern struct bfd_hash_entry *_bfd_link_hash_newfunc PARAMS ((struct bfd_hash_entry *entry, @@ -479,7 +483,7 @@ extern boolean _bfd_merge_section /* Attempt to merge SEC_MERGE sections. */ extern boolean _bfd_merge_sections - PARAMS ((bfd *, PTR)); + PARAMS ((bfd *, PTR, void (*)(bfd *, asection *))); /* Write out a merged section. */ @@ -697,6 +701,7 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_SPARC_7", "BFD_RELOC_SPARC_6", "BFD_RELOC_SPARC_5", + "BFD_RELOC_SPARC_PLT32", "BFD_RELOC_SPARC_PLT64", "BFD_RELOC_SPARC_HIX22", "BFD_RELOC_SPARC_LOX10", @@ -1141,6 +1146,9 @@ static const char *const bfd_reloc_code_ "BFD_RELOC_H8_DIR24A8", "BFD_RELOC_H8_DIR24R8", "BFD_RELOC_H8_DIR32A16", + "BFD_RELOC_XSTORMY16_REL_12", + "BFD_RELOC_XSTORMY16_24", + "BFD_RELOC_XSTORMY16_FPTR16", "@@overflow: BFD_RELOC_UNUSED@@", }; #endif diff -uprN binutils-2.11.92.0.12.3/bfd/libxcoff.h binutils-2.11.93.0.2/bfd/libxcoff.h --- binutils-2.11.92.0.12.3/bfd/libxcoff.h Mon Oct 15 21:27:22 2001 +++ binutils-2.11.93.0.2/bfd/libxcoff.h Sun Feb 3 11:22:30 2002 @@ -28,10 +28,7 @@ Foundation, Inc., 59 Temple Place - Suit struct xcoff_backend_data_rec { - /* - * COFF backend information. Must be the first field. - * This is where the std coff swap table goes - */ + /* COFF backend information. */ bfd_coff_backend_data coff; /* Magic number */ @@ -60,12 +57,9 @@ struct xcoff_backend_data_rec /* size of the small aout file header */ unsigned int _xcoff_small_aout_header_size; - /* - * version - * loader version - * 1 : xcoff32 - * 2 : xcoff64 - */ + /* Loader version + 1 : XCOFF32 + 2 : XCOFF64 */ unsigned long _xcoff_ldhdr_version; boolean (* _xcoff_put_symbol_name)(bfd *, struct bfd_strtab_hash *, @@ -80,38 +74,28 @@ struct xcoff_backend_data_rec asection * (* _xcoff_create_csect_from_smclas) (bfd *, union internal_auxent *, const char *); - /* - * line_no and reloc overflow - * 32 overflows to another section when the line_no or reloc count go - * over 0xffff. 64 does not overflow. - */ + /* Line number and relocation overflow. + XCOFF32 overflows to another section when the line number or the + relocation count exceeds 0xffff. XCOFF64 does not overflow. */ boolean (*_xcoff_is_lineno_count_overflow)(bfd *, bfd_vma); boolean (*_xcoff_is_reloc_count_overflow)(bfd *, bfd_vma); - /* - * .loader symbol table offset - * 32 is after the .loader header - * 64 is offset in .loader header - * - * Similar for the reloc table - */ + /* Loader section symbol and relocation table offset + XCOFF32 is after the .loader header + XCOFF64 is offset in .loader header */ bfd_vma (*_xcoff_loader_symbol_offset)(bfd *, struct internal_ldhdr *); bfd_vma (*_xcoff_loader_reloc_offset)(bfd *, struct internal_ldhdr *); - - - /* - * Global linkage - * - * The first word of global linkage code must be be modified by - * filling in the correct TOC offset. - */ + + /* Global linkage. The first word of global linkage code must be be + modified by filling in the correct TOC offset. */ unsigned long *_xcoff_glink_code; - - /* - * Size of the global link code in bytes of the xcoff_glink_code table - */ + + /* Size of the global link code in bytes of the xcoff_glink_code table. */ unsigned long _xcoff_glink_size; + /* rtinit */ + unsigned int _xcoff_rtinit_size; + boolean (*_xcoff_generate_rtinit)(bfd *, const char *, const char *); }; /* Look up an entry in an XCOFF link hash table. */ @@ -201,65 +185,13 @@ struct xcoff_backend_data_rec #define bfd_xcoff_glink_code(a, b) ((xcoff_backend(a)->_xcoff_glink_code[(b)])) #define bfd_xcoff_glink_code_size(a) ((xcoff_backend(a)->_xcoff_glink_size)) +/* Check for the magic number U803XTOCMAGIC for 64 bit targets. */ #define bfd_xcoff_is_xcoff64(a) (0x01EF == (bfd_xcoff_magic_number(a))) -#define bfd_xcoff_is_xcoff32(a) (0x01DF == (bfd_xcoff_magic_number(a))) -/* Functions in xcofflink.c. */ +/* Check for the magic number U802TOMAGIC for 32 bit targets. */ +#define bfd_xcoff_is_xcoff32(a) (0x01DF == (bfd_xcoff_magic_number(a))) -extern long _bfd_xcoff_get_dynamic_symtab_upper_bound PARAMS ((bfd *)); -extern long _bfd_xcoff_canonicalize_dynamic_symtab - PARAMS ((bfd *, asymbol **)); -extern long _bfd_xcoff_get_dynamic_reloc_upper_bound PARAMS ((bfd *)); -extern long _bfd_xcoff_canonicalize_dynamic_reloc - PARAMS ((bfd *, arelent **, asymbol **)); -extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create - PARAMS ((bfd *)); -extern boolean _bfd_xcoff_bfd_link_add_symbols - PARAMS ((bfd *, struct bfd_link_info *)); -extern boolean _bfd_xcoff_bfd_final_link - PARAMS ((bfd *, struct bfd_link_info *)); -extern boolean _bfd_xcoff_slurp_symbol_table - PARAMS ((bfd *)); -extern long _bfd_xcoff_get_symbol_table - PARAMS ((bfd *, asymbol **)); -extern asymbol *_bfd_xcoff_make_empty_symbol - PARAMS ((bfd *)); -extern long _bfd_xcoff_get_symbol_table_upper_bound - PARAMS ((bfd *)); -extern void _bfd_xcoff_print_symbol - PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); -extern void _bfd_xcoff_get_symbol_info - PARAMS ((bfd *, asymbol *, symbol_info *)); -extern long _bfd_xcoff_canonicalize_reloc - PARAMS((bfd *, sec_ptr, arelent **, asymbol **)); -extern reloc_howto_type *_bfd_xcoff_rtype_to_howto - PARAMS ((bfd *, asection *, struct internal_reloc *, - struct coff_link_hash_entry *, struct internal_syment *, - bfd_vma *)); -extern boolean _bfd_xcoff_set_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); -boolean _bfd_xcoff_write_object_contents PARAMS ((bfd *)); - - -/* XCOFF support routines for the linker. */ - -extern boolean bfd_xcoff_link_record_set - PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, - bfd_size_type)); -extern boolean bfd_xcoff_import_symbol - PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, - bfd_vma, const char *, const char *, const char *, unsigned int)); -extern boolean bfd_xcoff_export_symbol - PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *)); -extern boolean bfd_xcoff_link_count_reloc - PARAMS ((bfd *, struct bfd_link_info *, const char *)); -extern boolean bfd_xcoff_record_link_assignment - PARAMS ((bfd *, struct bfd_link_info *, const char *)); -extern boolean bfd_xcoff_size_dynamic_sections - PARAMS ((bfd *, struct bfd_link_info *, const char *, const char *, - unsigned long, unsigned long, unsigned long, boolean, - int, boolean, boolean, struct sec **)); -extern boolean xcoff_slurp_reloc_table - PARAMS ((bfd *, asection *, asymbol **)); +#define bfd_xcoff_rtinit_size(a) ((xcoff_backend(a)->_xcoff_rtinit_size)) +#define bfd_xcoff_generate_rtinit(a, b, c) ((xcoff_backend(a)->_xcoff_generate_rtinit ((a), (b), (c)))) #endif /* LIBXCOFF_H */ diff -uprN binutils-2.11.92.0.12.3/bfd/lynx-core.c binutils-2.11.93.0.2/bfd/lynx-core.c --- binutils-2.11.92.0.12.3/bfd/lynx-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/lynx-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back end for Lynx core files - Copyright 1993, 1994, 1995, 2001 Free Software Foundation, Inc. + Copyright 1993, 1994, 1995, 2001, 2002 Free Software Foundation, Inc. Written by Stu Grossman of Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -129,19 +129,19 @@ lynx_core_file_p (abfd) threadp = (core_st_t *) bfd_alloc (abfd, tcontext_size); if (!threadp) - return NULL; + goto fail; /* Save thread contexts */ if (bfd_seek (abfd, (file_ptr) pagesize, SEEK_SET) != 0) - return NULL; + goto fail; if (bfd_bread ((void *) threadp, tcontext_size, abfd) != tcontext_size) { /* Probably too small to be a core file */ if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return NULL; + goto fail; } core_signal (abfd) = threadp->currsig; @@ -152,7 +152,7 @@ lynx_core_file_p (abfd) pss.slimit, pagesize + tcontext_size); if (!newsect) - return NULL; + goto fail; newsect = make_bfd_asection (abfd, ".data", SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS, @@ -170,7 +170,7 @@ lynx_core_file_p (abfd) #endif ); if (!newsect) - return NULL; + goto fail; /* And, now for the .reg/XXX pseudo sections. Each thread has it's own .reg/XXX section, where XXX is the thread id (without leading zeros). The @@ -185,7 +185,7 @@ lynx_core_file_p (abfd) 0, pagesize); if (!newsect) - return NULL; + goto fail; for (secnum = 0; secnum < pss.threadcnt; secnum++) { @@ -198,10 +198,16 @@ lynx_core_file_p (abfd) 0, pagesize + secnum * sizeof (core_st_t)); if (!newsect) - return NULL; + goto fail; } return abfd->xvec; + + fail: + bfd_release (abfd, core_hdr (abfd)); + core_hdr (abfd) = NULL; + bfd_section_list_clear (abfd); + return NULL; } char * diff -uprN binutils-2.11.92.0.12.3/bfd/merge.c binutils-2.11.93.0.2/bfd/merge.c --- binutils-2.11.92.0.12.3/bfd/merge.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/merge.c Sun Feb 3 11:22:30 2002 @@ -771,9 +771,10 @@ alloc_failure: with _bfd_merge_section. */ boolean -_bfd_merge_sections (abfd, xsinfo) +_bfd_merge_sections (abfd, xsinfo, remove_hook) bfd *abfd ATTRIBUTE_UNUSED; PTR xsinfo; + void (*remove_hook) PARAMS((bfd *, asection *)); { struct sec_merge_info *sinfo; @@ -792,7 +793,11 @@ _bfd_merge_sections (abfd, xsinfo) /* Record the sections into the hash table. */ for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next) if (secinfo->sec->flags & SEC_EXCLUDE) - *secinfo->psecinfo = NULL; + { + *secinfo->psecinfo = NULL; + if (remove_hook) + (*remove_hook) (abfd, secinfo->sec); + } else if (! record_section (sinfo, secinfo)) break; diff -uprN binutils-2.11.92.0.12.3/bfd/mmo.c binutils-2.11.93.0.2/bfd/mmo.c --- binutils-2.11.92.0.12.3/bfd/mmo.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/mmo.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for mmo objects (MMIX-specific object-format). - Copyright 2001 + Copyright 2001, 2002 Free Software Foundation, Inc. Written by Hans-Peter Nilsson (hp@bitrange.com). Infrastructure and other bits originally copied from srec.c and @@ -201,7 +201,6 @@ EXAMPLE #include "libiberty.h" #include "elf/mmix.h" #include "opcode/mmix.h" -#include #define LOP 0x98 #define LOP_QUOTE 0 @@ -381,7 +380,6 @@ static boolean mmo_get_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); static long mmo_get_symtab_upper_bound PARAMS ((bfd *)); static long mmo_get_symtab PARAMS ((bfd *, asymbol **)); -static asymbol *mmo_make_empty_symbol PARAMS ((bfd *)); static void mmo_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static void mmo_print_symbol PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); @@ -482,10 +480,9 @@ mmo_init () static const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:_"; - if (inited == false) - { - inited = true; - } + if (inited == true) + return; + inited = true; /* Fill in the set of valid symbol characters. */ strcpy (valid_mmo_symbol_character_set, letters); @@ -2188,19 +2185,6 @@ mmo_get_symtab (abfd, alocation) return symcount; } -/* Make an empty symbol. */ - -static asymbol * -mmo_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new = (asymbol *) bfd_zalloc (abfd, sizeof (asymbol)); - - if (new) - new->the_bfd = abfd; - return new; -} - /* Get information about a symbol. */ static void @@ -3171,6 +3155,7 @@ mmo_canonicalize_reloc (abfd, section, r /* FIXME: We can do better on this one, if we have a dwarf2 .debug_line section or if MMO line numbers are implemented. */ #define mmo_find_nearest_line _bfd_nosymbols_find_nearest_line +#define mmo_make_empty_symbol _bfd_generic_make_empty_symbol #define mmo_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol #define mmo_read_minisymbols _bfd_generic_read_minisymbols #define mmo_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol diff -uprN binutils-2.11.92.0.12.3/bfd/netbsd-core.c binutils-2.11.93.0.2/bfd/netbsd-core.c --- binutils-2.11.92.0.12.3/bfd/netbsd-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/netbsd-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* BFD back end for NetBSD style core files - Copyright 1988, 1989, 1991, 1992, 1993, 1996, 1998, 1999, 2000, 2001 + Copyright 1988, 1989, 1991, 1992, 1993, 1996, 1998, 1999, 2000, 2001, + 2002 Free Software Foundation, Inc. Written by Paul Kranenburg, EUR @@ -78,10 +79,7 @@ netbsd_core_file_p (abfd) amt = sizeof (struct netbsd_core_struct); rawptr = (struct netbsd_core_struct *) bfd_zalloc (abfd, amt); if (rawptr == NULL) - { - bfd_set_error (bfd_error_no_memory); - return 0; - } + return 0; rawptr->core = core; abfd->tdata.netbsd_core_data = rawptr; @@ -89,6 +87,8 @@ netbsd_core_file_p (abfd) offset = core.c_hdrsize; for (i = 0; i < core.c_nseg; i++) { + const char *sname; + flagword flags; if (bfd_seek (abfd, offset, SEEK_SET) != 0) goto punt; @@ -107,78 +107,63 @@ netbsd_core_file_p (abfd) offset += core.c_seghdrsize; - amt = sizeof (asection); - asect = (asection *) bfd_zalloc (abfd, amt); - if (asect == NULL) + switch (CORE_GETFLAG (coreseg)) { - bfd_set_error (bfd_error_no_memory); - goto punt; + case CORE_CPU: + sname = ".reg"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; + break; + case CORE_DATA: + sname = ".data"; + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; + break; + case CORE_STACK: + sname = ".stack"; + flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; + break; + default: + sname = ".unknown"; + flags = SEC_ALLOC + SEC_HAS_CONTENTS; + break; } + asect = bfd_make_section_anyway (abfd, sname); + if (asect == NULL) + goto punt; + asect->flags = flags; asect->_raw_size = coreseg.c_size; asect->vma = coreseg.c_addr; asect->filepos = offset; asect->alignment_power = 2; - asect->next = abfd->sections; - abfd->sections = asect; - abfd->section_count++; + offset += coreseg.c_size; - switch (CORE_GETFLAG(coreseg)) +#ifdef CORE_FPU_OFFSET + switch (CORE_GETFLAG (coreseg)) { case CORE_CPU: - asect->name = ".reg"; - asect->flags = SEC_ALLOC + SEC_HAS_CONTENTS; -#ifdef CORE_FPU_OFFSET /* Hackish... */ asect->_raw_size = CORE_FPU_OFFSET; - amt = sizeof (asection); - asect2 = (asection *) bfd_zalloc (abfd, amt); + asect2 = bfd_make_section_anyway (abfd, ".reg2"); if (asect2 == NULL) - { - bfd_set_error (bfd_error_no_memory); - goto punt; - } + goto punt; asect2->_raw_size = coreseg.c_size - CORE_FPU_OFFSET; asect2->vma = 0; asect2->filepos = asect->filepos + CORE_FPU_OFFSET; asect2->alignment_power = 2; - asect2->next = abfd->sections; - asect2->name = ".reg2"; asect2->flags = SEC_ALLOC + SEC_HAS_CONTENTS; - abfd->sections = asect2; - abfd->section_count++; -#endif - - break; - case CORE_DATA: - asect->name = ".data"; - asect->flags = SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS; - break; - case CORE_STACK: - asect->name = ".stack"; - asect->flags = SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS; break; } +#endif } /* OK, we believe you. You're a core file (sure, sure). */ return abfd->xvec; punt: - { - asection *anext; - for (asect = abfd->sections; asect; asect = anext) - { - anext = asect->next; - free ((void *) asect); - } - } - - free ((void *) rawptr); - abfd->tdata.netbsd_core_data = NULL; - abfd->sections = NULL; - abfd->section_count = 0; + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); return 0; } diff -uprN binutils-2.11.92.0.12.3/bfd/opncls.c binutils-2.11.93.0.2/bfd/opncls.c --- binutils-2.11.92.0.12.3/bfd/opncls.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/opncls.c Sun Feb 3 11:22:30 2002 @@ -57,6 +57,7 @@ _bfd_new_bfd () if (nbfd->memory == NULL) { bfd_set_error (bfd_error_no_memory); + free (nbfd); return NULL; } @@ -65,7 +66,13 @@ _bfd_new_bfd () nbfd->direction = no_direction; nbfd->iostream = NULL; nbfd->where = 0; + if (!bfd_hash_table_init (&nbfd->section_htab, bfd_section_hash_newfunc)) + { + free (nbfd); + return NULL; + } nbfd->sections = (asection *) NULL; + nbfd->section_tail = &nbfd->sections; nbfd->format = bfd_unknown; nbfd->my_archive = (bfd *) NULL; nbfd->origin = 0; @@ -96,6 +103,17 @@ _bfd_new_bfd_contained_in (obfd) return nbfd; } +/* Delete a BFD. */ + +void +_bfd_delete_bfd (abfd) + bfd *abfd; +{ + bfd_hash_table_free (&abfd->section_htab); + objalloc_free ((struct objalloc *) abfd->memory); + free (abfd); +} + /* SECTION Opening and closing BFDs @@ -135,9 +153,8 @@ bfd_openr (filename, target) target_vec = bfd_find_target (target, nbfd); if (target_vec == NULL) { - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); bfd_set_error (bfd_error_invalid_target); + _bfd_delete_bfd (nbfd); return NULL; } @@ -148,8 +165,7 @@ bfd_openr (filename, target) { /* File didn't exist, or some such */ bfd_set_error (bfd_error_system_call); - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -216,8 +232,7 @@ bfd_fdopenr (filename, target, fd) if (target_vec == NULL) { bfd_set_error (bfd_error_invalid_target); - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -236,8 +251,7 @@ bfd_fdopenr (filename, target, fd) if (nbfd->iostream == NULL) { - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -259,8 +273,7 @@ bfd_fdopenr (filename, target, fd) if (! bfd_cache_init (nbfd)) { - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } nbfd->opened_once = true; @@ -299,8 +312,7 @@ bfd_openstreamr (filename, target, strea if (target_vec == NULL) { bfd_set_error (bfd_error_invalid_target); - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -310,8 +322,7 @@ bfd_openstreamr (filename, target, strea if (! bfd_cache_init (nbfd)) { - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -358,8 +369,7 @@ bfd_openw (filename, target) target_vec = bfd_find_target (target, nbfd); if (target_vec == NULL) { - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -369,8 +379,7 @@ bfd_openw (filename, target) if (bfd_open_file (nbfd) == NULL) { bfd_set_error (bfd_error_system_call); /* File not writeable, etc */ - objalloc_free ((struct objalloc *) nbfd->memory); - free (nbfd); + _bfd_delete_bfd (nbfd); return NULL; } @@ -437,8 +446,7 @@ bfd_close (abfd) } } - objalloc_free ((struct objalloc *) abfd->memory); - free (abfd); + _bfd_delete_bfd (abfd); return ret; } @@ -492,8 +500,7 @@ bfd_close_all_done (abfd) } } - objalloc_free ((struct objalloc *) abfd->memory); - free (abfd); + _bfd_delete_bfd (abfd); return ret; } @@ -680,7 +687,8 @@ bfd_zalloc (abfd, size) return res; } -/* Free a block allocated for a BFD. */ +/* Free a block allocated for a BFD. + Note: Also frees all more recently allocated blocks! */ void bfd_release (abfd, block) diff -uprN binutils-2.11.92.0.12.3/bfd/osf-core.c binutils-2.11.93.0.2/bfd/osf-core.c --- binutils-2.11.92.0.12.3/bfd/osf-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/osf-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for OSF/1 core files. - Copyright 1993, 1994, 1995, 1998, 1999, 2001 + Copyright 1993, 1994, 1995, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -30,21 +30,13 @@ Foundation, Inc., 59 Temple Place - Suit /* forward declarations */ -static asection * -make_bfd_asection PARAMS ((bfd *, const char *, flagword, bfd_size_type, - bfd_vma, file_ptr)); -static asymbol * -osf_core_make_empty_symbol PARAMS ((bfd *)); -static const bfd_target * -osf_core_core_file_p PARAMS ((bfd *)); -static char * -osf_core_core_file_failing_command PARAMS ((bfd *)); -static int -osf_core_core_file_failing_signal PARAMS ((bfd *)); -static boolean -osf_core_core_file_matches_executable_p PARAMS ((bfd *, bfd *)); -static void -swap_abort PARAMS ((void)); +static asection *make_bfd_asection + PARAMS ((bfd *, const char *, flagword, bfd_size_type, bfd_vma, file_ptr)); +static const bfd_target *osf_core_core_file_p PARAMS ((bfd *)); +static char *osf_core_core_file_failing_command PARAMS ((bfd *)); +static int osf_core_core_file_failing_signal PARAMS ((bfd *)); +static boolean osf_core_core_file_matches_executable_p PARAMS ((bfd *, bfd *)); +static void swap_abort PARAMS ((void)); /* These are stored in the bfd's tdata */ @@ -82,18 +74,6 @@ make_bfd_asection (abfd, name, flags, _r return asect; } -static asymbol * -osf_core_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - static const bfd_target * osf_core_core_file_p (abfd) bfd *abfd; @@ -158,12 +138,18 @@ osf_core_core_file_p (abfd) (bfd_size_type) core_scnhdr.size, (bfd_vma) core_scnhdr.vaddr, (file_ptr) core_scnhdr.scnptr)) - return NULL; + goto fail; } /* OK, we believe you. You're a core file (sure, sure). */ return abfd->xvec; + + fail: + bfd_release (abfd, core_hdr (abfd)); + core_hdr (abfd) = NULL; + bfd_section_list_clear (abfd); + return NULL; } static char * @@ -190,17 +176,6 @@ osf_core_core_file_matches_executable_p return true; /* FIXME, We have no way of telling at this point */ } -#define osf_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound -#define osf_core_get_symtab _bfd_nosymbols_get_symtab -#define osf_core_print_symbol _bfd_nosymbols_print_symbol -#define osf_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define osf_core_bfd_is_local_label_name _bfd_nosymbols_bfd_is_local_label_name -#define osf_core_get_lineno _bfd_nosymbols_get_lineno -#define osf_core_find_nearest_line _bfd_nosymbols_find_nearest_line -#define osf_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define osf_core_read_minisymbols _bfd_nosymbols_read_minisymbols -#define osf_core_minisymbol_to_symbol _bfd_nosymbols_minisymbol_to_symbol - /* If somebody calls any byte-swapping routines, shoot them. */ static void swap_abort() @@ -247,15 +222,15 @@ const bfd_target osf_core_vec = bfd_false, bfd_false }, - BFD_JUMP_TABLE_GENERIC (_bfd_generic), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (osf_core), - BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), - BFD_JUMP_TABLE_SYMBOLS (osf_core), - BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), - BFD_JUMP_TABLE_WRITE (_bfd_generic), - BFD_JUMP_TABLE_LINK (_bfd_nolink), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (osf_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, diff -uprN binutils-2.11.92.0.12.3/bfd/pe-mips.c binutils-2.11.93.0.2/bfd/pe-mips.c --- binutils-2.11.92.0.12.3/bfd/pe-mips.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/pe-mips.c Sun Feb 3 11:22:30 2002 @@ -527,7 +527,7 @@ coff_mips_reloc_type_lookup (abfd, code) case BFD_RELOC_LO16: mips_type = MIPS_R_REFLO; break; - case BFD_RELOC_MIPS_GPREL: + case BFD_RELOC_GPREL16: mips_type = MIPS_R_GPREL; break; case BFD_RELOC_MIPS_LITERAL: diff -uprN binutils-2.11.92.0.12.3/bfd/peXXigen.c binutils-2.11.93.0.2/bfd/peXXigen.c --- binutils-2.11.92.0.12.3/bfd/peXXigen.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/peXXigen.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* Support for the generic parts of PE/PEI; the common executable parts. - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Solutions. @@ -22,8 +22,7 @@ Foundation, Inc., 59 Temple Place - Suit /* Most of this hacked by Steve Chamberlain . PE/PEI rearrangement (and code added): Donn Terry - Softway Systems, Inc. -*/ + Softway Systems, Inc. */ /* Hey look, some documentation [and in a place you expect to find it]! @@ -51,8 +50,7 @@ Foundation, Inc., 59 Temple Place - Suit FIXME: Please add more docs here so the next poor fool that has to hack on this code has a chance of getting something accomplished without - wasting too much time. -*/ + wasting too much time. */ /* This expands into COFF_WITH_pe or COFF_WITH_pep depending on whether we're compiling for straight PE or PE+. */ @@ -1129,9 +1127,9 @@ pe_print_idata (abfd, vfile) _("\nThe Import Tables (interpreted %s section contents)\n"), section->name); fprintf (file, - _(" vma: Hint Time Forward DLL First\n")); - fprintf (file, - _(" Table Stamp Chain Name Thunk\n")); + _("\ + vma: Hint Time Forward DLL First\n\ + Table Stamp Chain Name Thunk\n")); amt = dataoff + datasize; data = (bfd_byte *) bfd_malloc (amt); @@ -1539,10 +1537,9 @@ pe_print_pdata (abfd, vfile) fprintf (file, _(" vma:\t\t\tBegin Address End Address Unwind Info\n")); #else - fprintf (file, - _(" vma:\t\tBegin End EH EH PrologEnd Exception\n")); - fprintf (file, - _(" \t\tAddress Address Handler Data Address Mask\n")); + fprintf (file, _("\ + vma:\t\tBegin End EH EH PrologEnd Exception\n\ + \t\tAddress Address Handler Data Address Mask\n")); #endif datasize = bfd_section_size (abfd, section); diff -uprN binutils-2.11.92.0.12.3/bfd/po/.cvsignore binutils-2.11.93.0.2/bfd/po/.cvsignore --- binutils-2.11.92.0.12.3/bfd/po/.cvsignore Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/po/.cvsignore Sun Feb 3 11:22:30 2002 @@ -0,0 +1 @@ +*.gmo diff -uprN binutils-2.11.92.0.12.3/bfd/po/Make-in binutils-2.11.93.0.2/bfd/po/Make-in --- binutils-2.11.92.0.12.3/bfd/po/Make-in Sun Jun 10 10:55:09 2001 +++ binutils-2.11.93.0.2/bfd/po/Make-in Sun Feb 3 11:22:30 2002 @@ -205,12 +205,12 @@ clean: mostlyclean distclean: clean rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m - rm -f SRC-POTFILES BLD-POTFILES SRC-POTFILES.in BLD-POTFILES.in + rm -f SRC-POTFILES BLD-POTFILES maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) + rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: update-po $(DISTFILES) diff -uprN binutils-2.11.92.0.12.3/bfd/po/SRC-POTFILES.in binutils-2.11.93.0.2/bfd/po/SRC-POTFILES.in --- binutils-2.11.92.0.12.3/bfd/po/SRC-POTFILES.in Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/po/SRC-POTFILES.in Sun Feb 3 11:22:30 2002 @@ -12,6 +12,7 @@ aout64.c aoutf1.h aoutx.h archive.c +archive64.c archures.c armnetbsd.c bfd.c @@ -36,6 +37,7 @@ coff-i960.c coff-m68k.c coff-m88k.c coff-mips.c +coff-or32.c coff-rs6000.c coff-sh.c coff-sparc.c @@ -83,6 +85,7 @@ cpu-mips.c cpu-mmix.c cpu-ns32k.c cpu-openrisc.c +cpu-or32.c cpu-pdp11.c cpu-pj.c cpu-powerpc.c @@ -97,6 +100,7 @@ cpu-v850.c cpu-vax.c cpu-w65.c cpu-we32k.c +cpu-xstormy16.c cpu-z8k.c demo64.c dwarf1.c @@ -107,6 +111,7 @@ ecoffswap.h efi-app-ia32.c efi-app-ia64.c elf-bfd.h +elf-eh-frame.c elf-hppa.h elf-m10200.c elf-m10300.c @@ -139,9 +144,11 @@ elf32-pj.c elf32-ppc.c elf32-s390.c elf32-sh-lin.c +elf32-sh-nbsd.c elf32-sh.c elf32-sparc.c elf32-v850.c +elf32-xstormy16.c elf32.c elf64-alpha.c elf64-gen.c diff -uprN binutils-2.11.92.0.12.3/bfd/po/bfd.pot binutils-2.11.93.0.2/bfd/po/bfd.pot --- binutils-2.11.92.0.12.3/bfd/po/bfd.pot Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/po/bfd.pot Sun Feb 3 11:22:30 2002 @@ -6,13 +6,13 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-10-12 22:46+0100\n" +"POT-Creation-Date: 2002-01-31 17:07+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Transfer-Encoding: 8bit\n" #: aout-adobe.c:196 #, c-format @@ -54,16 +54,16 @@ msgstr "" msgid "%s: relocateable link from %s to %s not supported" msgstr "" -#: archive.c:1839 +#: archive.c:1826 msgid "Warning: writing archive was slow: rewriting timestamp\n" msgstr "" -#: archive.c:2106 +#: archive.c:2093 msgid "Reading archive file mod timestamp" msgstr "" #. FIXME: bfd can't call perror. -#: archive.c:2133 +#: archive.c:2120 msgid "Writing updated armap timestamp" msgstr "" @@ -159,33 +159,18 @@ msgstr "" #: bfd.c:723 #, c-format -msgid "BFD %sinternal error, aborting at %s line %d\n" +msgid "BFD %s internal error, aborting at %s line %d\n" msgstr "" #: bfd.c:725 msgid "Please report this bug.\n" msgstr "" -#: binary.c:315 +#: binary.c:306 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." msgstr "" -#: coff-rs6000.c:2578 coff64-rs6000.c:1161 -#, c-format -msgid "%s: unsupported relocation type 0x%02x" -msgstr "" - -#: coff-rs6000.c:2624 coff64-rs6000.c:1207 -#, c-format -msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" -msgstr "" - -#: coff-rs6000.c:2874 coff64-rs6000.c:2057 -#, c-format -msgid "%s: symbol `%s' has unrecognized smclas %d" -msgstr "" - #: coff-a29k.c:119 msgid "Missing IHCONST" msgstr "" @@ -194,7 +179,7 @@ msgstr "" msgid "Missing IHIHALF" msgstr "" -#: coff-a29k.c:212 +#: coff-a29k.c:212 coff-or32.c:228 msgid "Unrecognized reloc" msgstr "" @@ -206,7 +191,7 @@ msgstr "" msgid "missing IHIHALF reloc" msgstr "" -#: coff-alpha.c:881 coff-alpha.c:918 +#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 msgid "GP relative relocation used when GP not defined" msgstr "" @@ -214,10 +199,6 @@ msgstr "" msgid "using multiple gp values" msgstr "" -#: coff-alpha.c:1989 coff-mips.c:1433 -msgid "GP relative relocation when GP not defined" -msgstr "" - #: coff-arm.c:1051 elf32-arm.h:285 #, c-format msgid "%s: unable to find THUMB glue '%s' for `%s'" @@ -292,12 +273,12 @@ msgstr "" #: coff-arm.c:2300 #, c-format -msgid "Warning: input file %s supports interworking, whereas %s does not." +msgid "Warning: %s supports interworking, whereas %s does not." msgstr "" #: coff-arm.c:2303 #, c-format -msgid "Warning: input file %s does not support interworking, whereas %s does." +msgid "Warning: %s does not support interworking, whereas %s does." msgstr "" #: coff-arm.c:2330 @@ -305,7 +286,7 @@ msgstr "" msgid "private flags = %x:" msgstr "" -#: coff-arm.c:2338 elf32-arm.h:2293 +#: coff-arm.c:2338 elf32-arm.h:2408 msgid " [floats passed in float registers]" msgstr "" @@ -313,7 +294,7 @@ msgstr "" msgid " [floats passed in integer registers]" msgstr "" -#: coff-arm.c:2343 elf32-arm.h:2296 +#: coff-arm.c:2343 elf32-arm.h:2411 msgid " [position independent]" msgstr "" @@ -333,172 +314,195 @@ msgstr "" msgid " [interworking not supported]" msgstr "" -#: coff-arm.c:2401 +#: coff-arm.c:2401 elf32-arm.h:2114 #, c-format msgid "" -"Warning: Not setting interworking flag of %s, since it has already been " +"Warning: Not setting interworking flag of %s since it has already been " "specified as non-interworking" msgstr "" -#: coff-arm.c:2405 +#: coff-arm.c:2405 elf32-arm.h:2118 #, c-format msgid "Warning: Clearing the interworking flag of %s due to outside request" msgstr "" -#: coffcode.h:1073 -#, c-format -msgid "%s (%s): Section flag %s (0x%x) ignored" +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" msgstr "" -#: coffcode.h:2117 -#, c-format -msgid "Unrecognized TI COFF target id '0x%x'" +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +msgid "unsupported reloc type" +msgstr "" + +#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" msgstr "" -#: coffcode.h:4199 +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 #, c-format -msgid "%s: warning: illegal symbol index %ld in line numbers" +msgid "%s: unsupported relocation type 0x%02x" msgstr "" -#: coffcode.h:4213 +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 #, c-format -msgid "%s: warning: duplicate line number information for `%s'" +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" msgstr "" -#: coffcode.h:4572 +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 #, c-format -msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgid "%s: symbol `%s' has unrecognized smclas %d" msgstr "" -#: coffcode.h:4703 +#: coff-tic54x.c:279 coff-tic80.c:449 #, c-format -msgid "warning: %s: local symbol `%s' has no section" +msgid "Unrecognized reloc type 0x%x" msgstr "" -#: coff-tic54x.c:390 coffcode.h:4810 +#: coff-tic54x.c:390 coffcode.h:4868 #, c-format msgid "%s: warning: illegal symbol index %ld in relocs" msgstr "" -#: coffcode.h:4848 +#: coff-w65.c:363 #, c-format -msgid "%s: illegal relocation type %d at address 0x%lx" +msgid "ignoring reloc %s\n" msgstr "" -#: coffgen.c:1648 +#: coffcode.h:1081 #, c-format -msgid "%s: bad string table size %lu" +msgid "%s (%s): Section flag %s (0x%x) ignored" msgstr "" -#: coffgen.c:2125 +#: coffcode.h:2132 #, c-format -msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +msgid "Unrecognized TI COFF target id '0x%x'" msgstr "" -#: coff-i960.c:136 coff-i960.c:485 -msgid "uncertain calling convention for non-COFF symbol" +#: coffcode.h:4257 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" msgstr "" -#: cofflink.c:536 elflink.h:1670 +#: coffcode.h:4271 #, c-format -msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgid "%s: warning: duplicate line number information for `%s'" msgstr "" -#: cofflink.c:2317 +#: coffcode.h:4630 #, c-format -msgid "%s: relocs in section `%s', but it has no contents" +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" msgstr "" -#: cofflink.c:2653 coffswap.h:889 +#: coffcode.h:4761 #, c-format -msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgid "warning: %s: local symbol `%s' has no section" msgstr "" -#: cofflink.c:2662 coffswap.h:876 +#: coffcode.h:4906 #, c-format -msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgid "%s: illegal relocation type %d at address 0x%lx" msgstr "" -#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2238 -msgid "unsupported reloc type" +#: coffgen.c:1661 +#, c-format +msgid "%s: bad string table size %lu" msgstr "" -#: coff-mips.c:875 elf32-mips.c:1448 -msgid "GP relative relocation when _gp not defined" +#: cofflink.c:536 elflink.h:1967 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" msgstr "" -#. No other sections should appear in -membedded-pic -#. code. -#: coff-mips.c:2468 -msgid "reloc against unsupported section" +#: cofflink.c:2317 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" msgstr "" -#: coff-mips.c:2476 -msgid "reloc not properly aligned" +#: cofflink.c:2653 coffswap.h:889 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "" -#: coff-tic54x.c:279 coff-tic80.c:449 +#: cofflink.c:2662 coffswap.h:876 #, c-format -msgid "Unrecognized reloc type 0x%x" +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" msgstr "" -#: coff-w65.c:363 +#: dwarf2.c:381 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "" + +#: dwarf2.c:398 #, c-format -msgid "ignoring reloc %s\n" +msgid "" +"Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str " +"size (%u)." msgstr "" -#: dwarf2.c:475 +#: dwarf2.c:542 msgid "Dwarf Error: Can't find .debug_abbrev section." msgstr "" -#: dwarf2.c:492 +#: dwarf2.c:559 #, c-format msgid "" -"Dwarf Error: Abbrev offset (%u) greater than or equal to abbrev size (%u)." +"Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size " +"(%u)." msgstr "" -#: dwarf2.c:682 +#: dwarf2.c:756 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %d." msgstr "" -#: dwarf2.c:755 +#: dwarf2.c:843 msgid "Dwarf Error: mangled line number section (bad file number)." msgstr "" -#: dwarf2.c:841 +#: dwarf2.c:929 msgid "Dwarf Error: Can't find .debug_line section." msgstr "" -#: dwarf2.c:864 +#: dwarf2.c:952 #, c-format -msgid "Dwarf Error: Line offset (%u) greater than or equal to line size (%u)." +msgid "" +"Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)." msgstr "" -#: dwarf2.c:1030 +#: dwarf2.c:1143 msgid "Dwarf Error: mangled line number section." msgstr "" -#: dwarf2.c:1209 dwarf2.c:1426 +#: dwarf2.c:1318 dwarf2.c:1529 #, c-format msgid "Dwarf Error: Could not find abbrev number %d." msgstr "" -#: dwarf2.c:1387 +#: dwarf2.c:1490 #, c-format msgid "" "Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " "information." msgstr "" -#: dwarf2.c:1394 +#: dwarf2.c:1497 #, c-format msgid "" "Dwarf Error: found address size '%u', this reader can not handle sizes " "greater than '%u'." msgstr "" -#: dwarf2.c:1417 +#: dwarf2.c:1520 #, c-format msgid "Dwarf Error: Bad abbrev number: %d." msgstr "" @@ -564,257 +568,354 @@ msgid "" " Type: %s" msgstr "" -#: elf32-arm.h:1234 +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 #, c-format -msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgid "" +"%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "" + +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1406 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1280 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf32-xstormy16.c:976 elf64-mmix.c:1164 +msgid "internal error: out of range error" +msgstr "" + +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1410 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1284 elf32-mips.c:7587 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf32-xstormy16.c:980 elf64-mips.c:4464 elf64-mmix.c:1168 +msgid "internal error: unsupported relocation error" +msgstr "" + +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1288 +msgid "internal error: dangerous error" msgstr "" -#: elf32-arm.h:1430 +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1418 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1292 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf32-xstormy16.c:988 elf64-mmix.c:1176 +msgid "internal error: unknown error" +msgstr "" + +#: elf.c:343 #, c-format -msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "" + +#: elf.c:448 +#, c-format +msgid "%s: invalid SHT_GROUP entry" msgstr "" -#: elf32-arm.h:1927 +#: elf.c:529 #, c-format +msgid "%s: no group info for section %s" +msgstr "" + +#: elf.c:840 msgid "" -"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +"\n" +"Program Header:\n" msgstr "" -#: elf-m10200.c:465 elf-m10300.c:681 elf32-arm.h:2003 elf32-avr.c:842 -#: elf32-cris.c:1333 elf32-d10v.c:490 elf32-fr30.c:655 elf32-h8300.c:549 -#: elf32-i860.c:1050 elf32-m32r.c:1276 elf32-openrisc.c:456 elf32-v850.c:1695 -msgid "internal error: out of range error" +#: elf.c:889 +msgid "" +"\n" +"Dynamic Section:\n" msgstr "" -#: elf-m10200.c:469 elf-m10300.c:685 elf32-arm.h:2007 elf32-avr.c:846 -#: elf32-cris.c:1337 elf32-d10v.c:494 elf32-fr30.c:659 elf32-h8300.c:553 -#: elf32-i860.c:1054 elf32-m32r.c:1280 elf32-mips.c:7061 elf32-openrisc.c:460 -#: elf32-v850.c:1699 -msgid "internal error: unsupported relocation error" +#: elf.c:1018 +msgid "" +"\n" +"Version definitions:\n" msgstr "" -#: elf-m10200.c:473 elf-m10300.c:689 elf32-arm.h:2011 elf32-d10v.c:498 -#: elf32-h8300.c:557 elf32-m32r.c:1284 -msgid "internal error: dangerous error" +#: elf.c:1041 +msgid "" +"\n" +"Version References:\n" msgstr "" -#: elf-m10200.c:477 elf-m10300.c:693 elf32-arm.h:2015 elf32-avr.c:854 -#: elf32-cris.c:1345 elf32-d10v.c:502 elf32-fr30.c:667 elf32-h8300.c:561 -#: elf32-i860.c:1062 elf32-m32r.c:1288 elf32-openrisc.c:468 elf32-v850.c:1719 -msgid "internal error: unknown error" +#: elf.c:1046 +#, c-format +msgid " required from %s:\n" msgstr "" -#: elf32-arm.h:2043 +#: elf.c:1682 #, c-format -msgid "" -"Warning: Not setting interwork flag of %s since it has already been " -"specified as non-interworking" +msgid "%s: invalid link %lu for reloc section %s (index %u)" msgstr "" -#: elf32-arm.h:2047 +#: elf.c:3296 #, c-format -msgid "Warning: Clearing the interwork flag of %s due to outside request" +msgid "%s: Not enough room for program headers (allocated %u, need %u)" msgstr "" -#: elf32-arm.h:2095 +#: elf.c:3400 #, c-format -msgid "" -"Warning: Clearing the interwork flag in %s because non-interworking code in " -"%s has been linked with it" +msgid "%s: Not enough room for program headers, try linking with -N" msgstr "" -#: elf32-arm.h:2190 +#: elf.c:3525 #, c-format msgid "" -"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +"Error: First section in segment (%s) starts at 0x%x whereas the segment " +"starts at 0x%x" msgstr "" -#: elf32-arm.h:2204 +#: elf.c:3811 #, c-format -msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "" + +#: elf.c:4142 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "" + +#: elf.c:4395 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "" + +#: elf.c:5808 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "" + +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." msgstr "" -#: elf32-arm.h:2215 elf32-arm.h:2216 -msgid "float" +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." msgstr "" -#: elf32-arm.h:2215 elf32-arm.h:2216 -msgid "integer" +#: elf32-arm.h:1904 elf32-i386.c:1778 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" msgstr "" -#: elf32-arm.h:2218 +#: elf32-arm.h:1998 #, c-format msgid "" -"Error: %s passes floats in %s registers, whereas %s passes them in %s " -"registers" +"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "" + +#: elf32-arm.h:2166 +#, c-format +msgid "" +"Warning: Clearing the interworking flag of %s because non-interworking code " +"in %s has been linked with it" +msgstr "" + +#: elf32-arm.h:2261 +#, c-format +msgid "" +"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "" + +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" msgstr "" -#: elf32-arm.h:2228 elf32-arm.h:2229 -msgid "soft" +#: elf32-arm.h:2287 +#, c-format +msgid "" +"Error: %s passes floats in FP registers, whereas %s passes them in integer " +"registers" msgstr "" -#: elf32-arm.h:2228 elf32-arm.h:2229 -msgid "hard" +#: elf32-arm.h:2292 +#, c-format +msgid "" +"Error: %s passes floats in integer registers, whereas %s passes them in FP " +"registers" msgstr "" -#: elf32-arm.h:2231 +#: elf32-arm.h:2303 #, c-format -msgid "Error: %s uses %s floating point, whereas %s uses %s floating point" +msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" msgstr "" -#: elf32-arm.h:2243 -msgid "supports" +#: elf32-arm.h:2308 +#, c-format +msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" msgstr "" -#: elf32-arm.h:2243 -msgid "does not support" +#: elf32-arm.h:2328 +#, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" msgstr "" -#: elf32-arm.h:2244 -msgid "does" +#: elf32-arm.h:2333 +#, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" msgstr "" -#: elf32-arm.h:2244 -msgid "does not" +#: elf32-arm.h:2348 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" msgstr "" -#: elf32-arm.h:2246 +#: elf32-arm.h:2355 #, c-format -msgid "Warning: %s %s interworking, whereas %s %s" +msgid "Warning: %s does not support interworking, whereas %s does" msgstr "" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. -#: elf32-arm.h:2276 elf32-cris.c:2917 elf32-m68k.c:432 elf32-mips.c:2714 +#: elf32-arm.h:2386 elf32-cris.c:2991 elf32-m68k.c:410 elf32-mips.c:3242 #, c-format msgid "private flags = %lx:" msgstr "" -#: elf32-arm.h:2285 +#: elf32-arm.h:2395 msgid " [interworking enabled]" msgstr "" -#: elf32-arm.h:2288 +#: elf32-arm.h:2398 msgid " [APCS-26]" msgstr "" -#: elf32-arm.h:2290 +#: elf32-arm.h:2400 msgid " [APCS-32]" msgstr "" -#: elf32-arm.h:2299 +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr "" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr "" + +#: elf32-arm.h:2414 msgid " [new ABI]" msgstr "" -#: elf32-arm.h:2302 +#: elf32-arm.h:2417 msgid " [old ABI]" msgstr "" -#: elf32-arm.h:2305 +#: elf32-arm.h:2420 msgid " [software FP]" msgstr "" -#: elf32-arm.h:2312 +#: elf32-arm.h:2428 msgid " [Version1 EABI]" msgstr "" -#: elf32-arm.h:2315 elf32-arm.h:2326 +#: elf32-arm.h:2431 elf32-arm.h:2442 msgid " [sorted symbol table]" msgstr "" -#: elf32-arm.h:2317 elf32-arm.h:2328 +#: elf32-arm.h:2433 elf32-arm.h:2444 msgid " [unsorted symbol table]" msgstr "" -#: elf32-arm.h:2323 +#: elf32-arm.h:2439 msgid " [Version2 EABI]" msgstr "" -#: elf32-arm.h:2331 +#: elf32-arm.h:2447 msgid " [dynamic symbols use segment index]" msgstr "" -#: elf32-arm.h:2334 +#: elf32-arm.h:2450 msgid " [mapping symbols precede others]" msgstr "" -#: elf32-arm.h:2341 +#: elf32-arm.h:2457 msgid " " msgstr "" -#: elf32-arm.h:2348 +#: elf32-arm.h:2464 msgid " [relocatable executable]" msgstr "" -#: elf32-arm.h:2351 +#: elf32-arm.h:2467 msgid " [has entry point]" msgstr "" -#: elf32-arm.h:2356 +#: elf32-arm.h:2472 msgid "" msgstr "" -#: elf32-avr.c:850 elf32-cris.c:1341 elf32-fr30.c:663 elf32-i860.c:1058 -#: elf32-openrisc.c:464 elf32-v850.c:1703 +#: elf32-avr.c:843 elf32-cris.c:1414 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf32-xstormy16.c:984 +#: elf64-mmix.c:1172 msgid "internal error: dangerous relocation" msgstr "" -#: elf32-cris.c:880 +#: elf32-cris.c:949 #, c-format msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" msgstr "" -#: elf32-cris.c:943 +#: elf32-cris.c:1012 #, c-format msgid "" "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" msgstr "" -#: elf32-cris.c:946 elf32-cris.c:1073 +#: elf32-cris.c:1015 elf32-cris.c:1142 msgid "[whose name is lost]" msgstr "" -#: elf32-cris.c:1062 +#: elf32-cris.c:1131 #, c-format msgid "" "%s: relocation %s with non-zero addend %d against local symbol from %s " "section" msgstr "" -#: elf32-cris.c:1069 +#: elf32-cris.c:1138 #, c-format msgid "" "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" msgstr "" -#: elf32-cris.c:1087 +#: elf32-cris.c:1156 #, c-format msgid "" "%s: relocation %s is not allowed for global symbol: `%s' from %s section" msgstr "" -#: elf32-cris.c:1205 +#: elf32-cris.c:1171 +#, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "" + +#: elf32-cris.c:1289 #, c-format msgid "%s: Internal inconsistency; no relocation section %s" msgstr "" -#: elf32-cris.c:2455 +#: elf32-cris.c:2523 #, c-format msgid "" "%s, section %s:\n" " relocation %s should not be used in a shared object; recompile with -fPIC" msgstr "" -#: elf32-cris.c:2920 +#: elf32-cris.c:2994 msgid " [symbols have a _ prefix]" msgstr "" -#: elf32-cris.c:2959 +#: elf32-cris.c:3033 #, c-format msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "" -#: elf32-cris.c:2960 +#: elf32-cris.c:3034 #, c-format msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "" @@ -824,56 +925,51 @@ msgstr "" msgid "%s: Relocations in generic ELF (EM: %d)" msgstr "" -#: elf32-hppa.c:596 -#, c-format -msgid "%s(%s+0x%lx): cannot find stub entry %s" -msgstr "" - -#: elf32-hppa.c:657 +#: elf32-hppa.c:646 #, c-format msgid "%s: cannot create stub entry %s" msgstr "" -#: elf32-hppa.c:948 elf32-hppa.c:3436 +#: elf32-hppa.c:937 elf32-hppa.c:3545 #, c-format msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" msgstr "" -#: elf32-hppa.c:1295 +#: elf32-hppa.c:1312 #, c-format msgid "" "%s: relocation %s can not be used when making a shared object; recompile " "with -fPIC" msgstr "" -#: elf32-hppa.c:1315 +#: elf32-hppa.c:1332 #, c-format msgid "" "%s: relocation %s should not be used when making a shared object; recompile " "with -fPIC" msgstr "" -#: elf32-hppa.c:1505 +#: elf32-hppa.c:1525 #, c-format msgid "Could not find relocation section for %s" msgstr "" -#: elf32-hppa.c:2759 +#: elf32-hppa.c:2867 #, c-format msgid "%s: duplicate export stub %s" msgstr "" -#: elf32-hppa.c:3320 +#: elf32-hppa.c:3429 #, c-format msgid "%s(%s+0x%lx): fixing %s" msgstr "" -#: elf32-hppa.c:3955 +#: elf32-hppa.c:4069 #, c-format msgid "%s(%s+0x%lx): cannot handle %s for %s" msgstr "" -#: elf32-hppa.c:4295 +#: elf32-hppa.c:4408 msgid ".got section not immediately after .plt section" msgstr "" @@ -882,547 +978,492 @@ msgstr "" msgid "%s: invalid relocation type %d" msgstr "" -#: elf32-i386.c:688 +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 #, c-format msgid "%s: bad symbol index: %d" msgstr "" -#: elf32-i386.c:830 elf64-ppc.c:2035 +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2198 elf64-s390.c:759 #, c-format msgid "%s: bad relocation section name `%s'" msgstr "" -#: elf32-i386.c:2004 elf64-ppc.c:3608 +#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 #, c-format msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" msgstr "" -#: elf32-m32r.c:926 +#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "" + +#: elf32-m32r.c:923 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "" -#: elf32-ia64.c:3445 elf32-m32r.c:1010 elf32-ppc.c:2953 elf64-ia64.c:3445 +#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 #, c-format msgid "%s: unknown relocation type %d" msgstr "" -#: elf32-m32r.c:1219 +#: elf32-m32r.c:1223 #, c-format msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" msgstr "" -#: elf32-m32r.c:2021 +#: elf32-m32r.c:2000 #, c-format msgid "%s: Instruction set mismatch with previous modules" msgstr "" -#: elf32-m32r.c:2044 +#: elf32-m32r.c:2023 #, c-format msgid "private flags = %lx" msgstr "" -#: elf32-m32r.c:2049 +#: elf32-m32r.c:2028 msgid ": m32r instructions" msgstr "" -#: elf32-m32r.c:2050 +#: elf32-m32r.c:2029 msgid ": m32rx instructions" msgstr "" -#: elf32-m68k.c:435 +#: elf32-m68k.c:413 msgid " [cpu32]" msgstr "" -#: elf32-mcore.c:373 elf32-mcore.c:499 +#: elf32-mcore.c:353 elf32-mcore.c:479 #, c-format msgid "%s: Relocation %s (%d) is not currently supported.\n" msgstr "" -#: elf32-mcore.c:458 +#: elf32-mcore.c:438 #, c-format msgid "%s: Unknown relocation type %d\n" msgstr "" -#: elf32-mips.c:1607 +#: elf32-mips.c:2156 elf64-mips.c:1972 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "" -#: elf32-mips.c:1756 +#: elf32-mips.c:2305 #, c-format msgid "Linking mips16 objects into %s format is not supported" msgstr "" -#: elf32-mips.c:2601 +#: elf32-mips.c:3129 #, c-format msgid "%s: linking PIC files with non-PIC files" msgstr "" -#: elf32-mips.c:2611 +#: elf32-mips.c:3139 #, c-format msgid "%s: linking abicalls files with non-abicalls files" msgstr "" -#: elf32-mips.c:2640 +#: elf32-mips.c:3168 #, c-format msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" msgstr "" -#: elf32-mips.c:2649 +#: elf32-mips.c:3177 #, c-format msgid "%s: ISA mismatch (%d) with previous modules (%d)" msgstr "" -#: elf32-mips.c:2672 +#: elf32-mips.c:3200 #, c-format msgid "%s: ABI mismatch: linking %s module with previous %s modules" msgstr "" -#: elf32-mips.c:2686 elf32-ppc.c:1489 elf64-ppc.c:1541 elf64-sparc.c:3030 +#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 #, c-format msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" msgstr "" -#: elf32-mips.c:2717 +#: elf32-mips.c:3245 msgid " [abi=O32]" msgstr "" -#: elf32-mips.c:2719 +#: elf32-mips.c:3247 msgid " [abi=O64]" msgstr "" -#: elf32-mips.c:2721 +#: elf32-mips.c:3249 msgid " [abi=EABI32]" msgstr "" -#: elf32-mips.c:2723 +#: elf32-mips.c:3251 msgid " [abi=EABI64]" msgstr "" -#: elf32-mips.c:2725 +#: elf32-mips.c:3253 msgid " [abi unknown]" msgstr "" -#: elf32-mips.c:2727 +#: elf32-mips.c:3255 msgid " [abi=N32]" msgstr "" -#: elf32-mips.c:2729 +#: elf32-mips.c:3257 msgid " [abi=64]" msgstr "" -#: elf32-mips.c:2731 +#: elf32-mips.c:3259 msgid " [no abi set]" msgstr "" -#: elf32-mips.c:2734 +#: elf32-mips.c:3262 msgid " [mips1]" msgstr "" -#: elf32-mips.c:2736 +#: elf32-mips.c:3264 msgid " [mips2]" msgstr "" -#: elf32-mips.c:2738 +#: elf32-mips.c:3266 msgid " [mips3]" msgstr "" -#: elf32-mips.c:2740 +#: elf32-mips.c:3268 msgid " [mips4]" msgstr "" -#: elf32-mips.c:2742 +#: elf32-mips.c:3270 msgid " [mips5]" msgstr "" -#: elf32-mips.c:2744 +#: elf32-mips.c:3272 msgid " [mips32]" msgstr "" -#: elf32-mips.c:2746 +#: elf32-mips.c:3274 msgid " [mips64]" msgstr "" -#: elf32-mips.c:2748 +#: elf32-mips.c:3276 msgid " [unknown ISA]" msgstr "" -#: elf32-mips.c:2751 +#: elf32-mips.c:3279 msgid " [32bitmode]" msgstr "" -#: elf32-mips.c:2753 +#: elf32-mips.c:3281 msgid " [not 32bitmode]" msgstr "" -#: elf32-mips.c:4429 +#: elf32-mips.c:4954 msgid "static procedure (no name)" msgstr "" -#: elf32-mips.c:5047 +#: elf32-mips.c:5572 elf64-mips.c:6694 #, c-format msgid "%s: illegal section name `%s'" msgstr "" -#: elf32-mips.c:5614 +#: elf32-mips.c:6139 elf64-mips.c:3150 msgid "not enough GOT space for local GOT entries" msgstr "" -#: elf32-mips.c:6734 +#: elf32-mips.c:7250 elf64-mips.c:4203 #, c-format msgid "%s: %s+0x%lx: jump to stub routine which is not jal" msgstr "" -#: elf32-mips.c:7733 +#: elf32-mips.c:8259 elf64-mips.c:5891 #, c-format msgid "%s: Malformed reloc detected for section %s" msgstr "" -#: elf32-mips.c:7811 +#: elf32-mips.c:8337 elf64-mips.c:5969 #, c-format msgid "%s: CALL16 reloc at 0x%lx not against global symbol" msgstr "" -#: elf32-ppc.c:1455 elf64-ppc.c:1506 +#: elf32-ppc.c:1436 elf64-ppc.c:1521 #, c-format msgid "" "%s: compiled with -mrelocatable and linked with modules compiled normally" msgstr "" -#: elf32-ppc.c:1463 elf64-ppc.c:1514 +#: elf32-ppc.c:1444 elf64-ppc.c:1529 #, c-format msgid "" "%s: compiled normally and linked with modules compiled with -mrelocatable" msgstr "" -#: elf32-ppc.c:1587 +#: elf32-ppc.c:1568 #, c-format msgid "%s: Unknown special linker type %d" msgstr "" -#: elf32-ppc.c:2235 elf32-ppc.c:2269 elf32-ppc.c:2304 +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 #, c-format msgid "%s: relocation %s cannot be used when making a shared object" msgstr "" -#: elf-hppa.h:1369 elf-hppa.h:1402 elf32-ppc.c:3086 elf32-s390.c:1424 -#: elf32-sh.c:3134 elf64-s390.c:1411 elf64-x86-64.c:1281 -#, c-format -msgid "" -"%s: warning: unresolvable relocation against symbol `%s' from %s section" -msgstr "" - -#: elf32-ppc.c:3121 elf64-ppc.c:3198 +#: elf32-ppc.c:3097 elf64-ppc.c:3716 #, c-format msgid "%s: unknown relocation type %d for symbol %s" msgstr "" -#: elf32-ppc.c:3485 elf32-ppc.c:3506 elf32-ppc.c:3556 +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 #, c-format msgid "" "%s: The target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "" -#: elf32-ppc.c:3622 +#: elf32-ppc.c:3589 #, c-format msgid "%s: Relocation %s is not yet supported for symbol %s." msgstr "" -#: elf32-sh.c:1098 +#: elf32-sh.c:1101 #, c-format msgid "%s: 0x%lx: warning: bad R_SH_USES offset" msgstr "" -#: elf32-sh.c:1110 +#: elf32-sh.c:1113 #, c-format msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "" -#: elf32-sh.c:1127 +#: elf32-sh.c:1130 #, c-format msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" msgstr "" -#: elf32-sh.c:1142 +#: elf32-sh.c:1145 #, c-format msgid "%s: 0x%lx: warning: could not find expected reloc" msgstr "" -#: elf32-sh.c:1178 +#: elf32-sh.c:1202 #, c-format msgid "%s: 0x%lx: warning: symbol in unexpected section" msgstr "" -#: elf32-sh.c:1300 +#: elf32-sh.c:1323 #, c-format msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" msgstr "" -#: elf32-sh.c:1309 +#: elf32-sh.c:1332 #, c-format msgid "%s: 0x%lx: warning: bad count" msgstr "" -#: elf32-sh.c:1703 elf32-sh.c:2093 +#: elf32-sh.c:1741 elf32-sh.c:2132 #, c-format msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" msgstr "" -#: elf32-sh.c:3200 +#: elf32-sh.c:3267 #, c-format msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" msgstr "" -#: elf32-sparc.c:1537 elf64-sparc.c:2281 +#: elf32-sparc.c:1554 elf64-sparc.c:2280 #, c-format msgid "%s: probably compiled without -fPIC?" msgstr "" -#: elf32-sparc.c:1990 +#: elf32-sparc.c:2007 #, c-format msgid "%s: compiled for a 64 bit system and target is 32 bit" msgstr "" -#: elf32-sparc.c:2004 +#: elf32-sparc.c:2021 #, c-format msgid "%s: linking little endian files with big endian files" msgstr "" -#: elf32-v850.c:684 +#: elf32-v850.c:682 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "" -#: elf32-v850.c:687 +#: elf32-v850.c:685 #, c-format msgid "" "Variable `%s' can only be in one of the small, zero, and tiny data regions" msgstr "" -#: elf32-v850.c:690 +#: elf32-v850.c:688 #, c-format msgid "" "Variable `%s' cannot be in both small and zero data regions simultaneously" msgstr "" -#: elf32-v850.c:693 +#: elf32-v850.c:691 #, c-format msgid "" "Variable `%s' cannot be in both small and tiny data regions simultaneously" msgstr "" -#: elf32-v850.c:696 +#: elf32-v850.c:694 #, c-format msgid "" "Variable `%s' cannot be in both zero and tiny data regions simultaneously" msgstr "" -#: elf32-v850.c:1074 +#: elf32-v850.c:1072 msgid "FAILED to find previous HI16 reloc\n" msgstr "" -#: elf32-v850.c:1707 +#: elf32-v850.c:1703 msgid "could not locate special linker symbol __gp" msgstr "" -#: elf32-v850.c:1711 +#: elf32-v850.c:1707 msgid "could not locate special linker symbol __ep" msgstr "" -#: elf32-v850.c:1715 +#: elf32-v850.c:1711 msgid "could not locate special linker symbol __ctbp" msgstr "" -#: elf32-v850.c:1908 +#: elf32-v850.c:1877 #, c-format msgid "%s: Architecture mismatch with previous modules" msgstr "" -#: elf32-v850.c:1928 +#: elf32-v850.c:1897 #, c-format msgid "private flags = %lx: " msgstr "" -#: elf32-v850.c:1933 +#: elf32-v850.c:1902 msgid "v850 architecture" msgstr "" -#: elf32-v850.c:1934 +#: elf32-v850.c:1903 msgid "v850e architecture" msgstr "" -#: elf32-v850.c:1935 +#: elf32-v850.c:1904 msgid "v850ea architecture" msgstr "" -#: elf64-alpha.c:857 +#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 +msgid "non-zero addend in @fptr reloc" +msgstr "" + +#: elf64-alpha.c:858 msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "" -#: elf64-alpha.c:2909 +#: elf64-alpha.c:2934 #, c-format msgid "%s: .got subsegment exceeds 64K (size %d)" msgstr "" -#: elf64-alpha.c:3463 elf64-alpha.c:3475 +#: elf64-alpha.c:3518 elf64-alpha.c:3530 #, c-format msgid "%s: gp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-hppa.c:2043 +#: elf64-hppa.c:2070 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %ld" msgstr "" -#: elf64-ppc.c:1469 libbfd.c:1436 -#, c-format -msgid "%s: compiled for a big endian system and target is little endian" -msgstr "" - -#: elf64-ppc.c:1471 libbfd.c:1438 +#: elf64-mmix.c:1271 #, c-format -msgid "%s: compiled for a little endian system and target is big endian" +msgid "%s: register relocation against non-register symbol: (unknown) in %s" msgstr "" -#: elf64-ppc.c:3545 +#: elf64-mmix.c:1276 #, c-format -msgid "%s: Relocation %s is not supported for symbol %s." +msgid "%s: register relocation against non-register symbol: %s in %s" msgstr "" -#: elf64-ppc.c:3589 +#: elf64-mmix.c:1312 #, c-format -msgid "%s: error: relocation %s not a multiple of 4" +msgid "%s: directive LOCAL valid only with a register or absolute value" msgstr "" -#: elf64-ppc.c:3742 +#: elf64-mmix.c:1340 #, c-format -msgid "linkage table overflow against `%s'" -msgstr "" - -#: elf64-sparc.c:1272 -#, c-format -msgid "%s: check_relocs: unhandled reloc type %d" -msgstr "" - -#: elf64-sparc.c:1309 -msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" -msgstr "" - -#: elf64-sparc.c:1329 -msgid "Register %%g%d used incompatibly: %s in %s" -msgstr "" - -#: elf64-sparc.c:1333 elf64-sparc.c:1357 elf64-sparc.c:1406 -#, c-format -msgid " previously %s in %s" -msgstr "" - -#: elf64-sparc.c:1354 elf64-sparc.c:1403 -#, c-format -msgid "Symbol `%s' has differing types: %s in %s" -msgstr "" - -#: elf64-sparc.c:3011 -#, c-format -msgid "%s: linking UltraSPARC specific with HAL specific code" -msgstr "" - -#: elf.c:338 -#, c-format -msgid "%s: invalid string offset %u >= %lu for section `%s'" -msgstr "" - -#: elf.c:443 -#, c-format -msgid "%s: invalid SHT_GROUP entry" -msgstr "" - -#: elf.c:524 -#, c-format -msgid "%s: no group info for section %s" -msgstr "" - -#: elf.c:785 msgid "" -"\n" -"Program Header:\n" +"%s: LOCAL directive: Register $%ld is not a local register. First global " +"register is $%ld." msgstr "" -#: elf.c:833 +#: elf64-mmix.c:1615 +#, c-format msgid "" -"\n" -"Dynamic Section:\n" +"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " +"linked file\n" msgstr "" -#: elf.c:962 -msgid "" -"\n" -"Version definitions:\n" +#: elf64-mmix.c:1674 +msgid "Register section has contents\n" msgstr "" -#: elf.c:985 -msgid "" -"\n" -"Version References:\n" +#: elf64-ppc.c:1484 libbfd.c:1436 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" msgstr "" -#: elf.c:990 +#: elf64-ppc.c:1486 libbfd.c:1438 #, c-format -msgid " required from %s:\n" +msgid "%s: compiled for a little endian system and target is big endian" msgstr "" -#: elf.c:1600 +#: elf64-ppc.c:3350 #, c-format -msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgid "linkage table error against `%s'" msgstr "" -#: elf.c:3068 -#, c-format -msgid "%s: Not enough room for program headers (allocated %u, need %u)" +#: elf64-ppc.c:3432 +msgid "stub section size doesn't match calculated size" msgstr "" -#: elf.c:3167 +#: elf64-ppc.c:4061 #, c-format -msgid "%s: Not enough room for program headers, try linking with -N" +msgid "%s: Relocation %s is not supported for symbol %s." msgstr "" -#: elf.c:3293 +#: elf64-ppc.c:4105 #, c-format -msgid "Error: First section in segment (%s) starts at 0x%x" +msgid "%s: error: relocation %s not a multiple of 4" msgstr "" -#: elf.c:3296 +#: elf64-sparc.c:1277 #, c-format -msgid " whereas segment starts at 0x%x" +msgid "%s: check_relocs: unhandled reloc type %d" msgstr "" -#: elf.c:3569 +#: elf64-sparc.c:1314 #, c-format -msgid "%s: warning: allocated section `%s' not in segment" +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" msgstr "" -#: elf.c:3887 +#: elf64-sparc.c:1334 #, c-format -msgid "%s: symbol `%s' required but not present" +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" msgstr "" -#: elf.c:3896 +#: elf64-sparc.c:1357 #, c-format -msgid "" -"elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = " -"0x%.8lx%s\n" +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" msgstr "" -#: elf.c:4137 +#: elf64-sparc.c:1404 #, c-format -msgid "%s: warning: Empty loadable segment detected\n" +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" msgstr "" -#: elf.c:5522 +#: elf64-sparc.c:3008 #, c-format -msgid "%s: unsupported relocation type %s" +msgid "%s: linking UltraSPARC specific with HAL specific code" msgstr "" -#: elfcode.h:1096 +#: elfcode.h:1218 #, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" msgstr "" @@ -1432,53 +1473,62 @@ msgstr "" msgid "%s: Section %s is too large to add hole of %ld bytes" msgstr "" -#: elflink.h:1487 +#: elflink.h:1113 #, c-format -msgid "%s: %s: invalid version %u (max %d)" +msgid "%s: warning: unexpected redefinition of `%s'" msgstr "" -#: elflink.h:1528 +#: elflink.h:1784 #, c-format -msgid "%s: %s: invalid needed version %d" +msgid "%s: %s: invalid version %u (max %d)" msgstr "" -#: elflink.h:1648 +#: elflink.h:1825 #, c-format -msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" +msgid "%s: %s: invalid needed version %d" msgstr "" -#: elflink.h:1894 +#: elflink.h:1945 #, c-format -msgid "%s: warning: unexpected redefinition of `%s'" +msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" msgstr "" -#: elflink.h:3730 +#: elflink.h:4014 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "" -#: elflink.h:4037 +#: elflink.h:4320 #, c-format msgid "%s: undefined versioned symbol name %s" msgstr "" -#: elflink.h:4264 elflink.h:4272 elflink.h:5830 elflink.h:6807 +#: elflink.h:4544 elflink.h:4552 elflink.h:6203 elflink.h:7280 msgid "Error: out of memory" msgstr "" -#: elflink.h:4434 +#: elflink.h:4714 msgid "Not enough memory to sort relocations" msgstr "" -#: elflink.h:5608 +#: elflink.h:5980 #, c-format msgid "%s: could not find output section %s for input section %s" msgstr "" -#: elflink.h:6155 +#: elflink.h:6553 msgid "warning: relocation against removed section; zeroing" msgstr "" +#: elflink.h:6583 +msgid "warning: relocation against removed section" +msgstr "" + +#: elflink.h:6596 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "" + #: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 #, c-format msgid "Output file requires shared library `%s'\n" @@ -1511,7 +1561,7 @@ msgstr "" #: ieee.c:877 #, c-format -msgid "%s: unimplemented ATI record %u for symbol %u" +msgid "%s: unimplemented ATI record %u for symbol %u" msgstr "" #: ieee.c:902 @@ -1524,54 +1574,54 @@ msgstr "" msgid "%s: unexpected type after ATN" msgstr "" -#: ihex.c:259 +#: ihex.c:258 #, c-format msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" msgstr "" -#: ihex.c:369 +#: ihex.c:368 #, c-format msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" msgstr "" -#: ihex.c:423 +#: ihex.c:422 #, c-format msgid "%s:%u: bad extended address record length in Intel Hex file" msgstr "" -#: ihex.c:440 +#: ihex.c:439 #, c-format msgid "%s:%u: bad extended start address length in Intel Hex file" msgstr "" -#: ihex.c:457 +#: ihex.c:456 #, c-format msgid "%s:%u: bad extended linear address record length in Intel Hex file" msgstr "" -#: ihex.c:474 +#: ihex.c:473 #, c-format msgid "%s:%u: bad extended linear start address length in Intel Hex file" msgstr "" -#: ihex.c:491 +#: ihex.c:490 #, c-format msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" msgstr "" -#: ihex.c:611 +#: ihex.c:610 #, c-format msgid "%s: internal error in ihex_read_section" msgstr "" -#: ihex.c:646 +#: ihex.c:645 #, c-format msgid "%s: bad section length in ihex_read_section" msgstr "" -#: ihex.c:864 +#: ihex.c:863 #, c-format -msgid "%s: address 0x%s out of range for Intex Hex file" +msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "" #: libbfd.c:492 @@ -1583,14 +1633,14 @@ msgstr "" msgid "not mapping: env var not set\n" msgstr "" -#: libbfd.c:1463 +#: libbfd.c:1467 #, c-format -msgid "Deprecated %s called" +msgid "Deprecated %s called at %s line %d in %s\n" msgstr "" -#: libbfd.c:1465 +#: libbfd.c:1470 #, c-format -msgid " at %s line %d in %s\n" +msgid "Deprecated %s called\n" msgstr "" #: linker.c:1849 @@ -1603,21 +1653,188 @@ msgstr "" msgid "Attempt to do relocateable link with %s input and %s output" msgstr "" -#: merge.c:892 +#: merge.c:897 #, c-format msgid "%s: access beyond end of merged section (%ld + %ld)" msgstr "" +#: mmo.c:460 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "" + +#: mmo.c:537 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "" + +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "" + +#: mmo.c:1336 +#, c-format +msgid "" +"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " +"starting with `%s'\n" +msgstr "" + +#: mmo.c:1571 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "" + +#: mmo.c:1581 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "" + +#: mmo.c:1617 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" + +#: mmo.c:1663 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" + +#: mmo.c:1702 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1711 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1734 +#, c-format +msgid "" +"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " +"for lop_fixrx\n" +msgstr "" + +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "" + +#: mmo.c:1777 +#, c-format +msgid "" +"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" + +#: mmo.c:1790 +#, c-format +msgid "" +"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" + +#: mmo.c:1896 +#, c-format +msgid "" +"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" + +#: mmo.c:1932 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "" + +#: mmo.c:1945 +#, c-format +msgid "" +"%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras " +"to the preceding lop_stab (%ld)\n" +msgstr "" + +#: mmo.c:2610 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "" + +#: mmo.c:2898 +#, c-format +msgid "" +"%s: Bad symbol definition: `Main' set to %s rather than the start address %" +"s\n" +msgstr "" + +#: mmo.c:2932 +#, c-format +msgid "" +"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " +"%d. Only `Main' will be emitted.\n" +msgstr "" + +#: mmo.c:2977 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "" + +#: mmo.c:3032 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "" + +#: mmo.c:3084 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "" + +#: mmo.c:3090 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "" + +#: mmo.c:3095 +#, c-format +msgid "" +"%s: invalid start address for initialized registers of length %ld: 0x%lx%" +"08lx\n" +msgstr "" + #: oasys.c:1036 #, c-format msgid "%s: can not represent section `%s' in oasys" msgstr "" -#: osf-core.c:152 +#: osf-core.c:132 #, c-format msgid "Unhandled OSF/1 core file section type %d\n" msgstr "" +#: pe-mips.c:658 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:794 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "" + #. XXX code yet to be written. #: peicode.h:785 #, c-format @@ -1656,98 +1873,83 @@ msgstr "" msgid "%s: string not null terminated in ILF object file." msgstr "" -#: pe-mips.c:658 -#, c-format -msgid "%s: `ld -r' not supported with PE MIPS objects\n" -msgstr "" - -#: pe-mips.c:820 -#, c-format -msgid "%s: jump too far away\n" -msgstr "" - -#: pe-mips.c:847 -#, c-format -msgid "%s: bad pair/reflo after refhi\n" -msgstr "" - -#: ppcboot.c:427 +#: ppcboot.c:416 msgid "" "\n" "ppcboot header:\n" msgstr "" -#: ppcboot.c:428 +#: ppcboot.c:417 #, c-format msgid "Entry offset = 0x%.8lx (%ld)\n" msgstr "" -#: ppcboot.c:429 +#: ppcboot.c:418 #, c-format msgid "Length = 0x%.8lx (%ld)\n" msgstr "" -#: ppcboot.c:432 +#: ppcboot.c:421 #, c-format msgid "Flag field = 0x%.2x\n" msgstr "" -#: ppcboot.c:438 +#: ppcboot.c:427 #, c-format msgid "Partition name = \"%s\"\n" msgstr "" -#: ppcboot.c:457 +#: ppcboot.c:446 #, c-format msgid "" "\n" "Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" msgstr "" -#: ppcboot.c:463 +#: ppcboot.c:452 #, c-format msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" msgstr "" -#: ppcboot.c:469 +#: ppcboot.c:458 #, c-format msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" msgstr "" -#: ppcboot.c:470 +#: ppcboot.c:459 #, c-format msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "" -#: som.c:5401 +#: som.c:5402 msgid "som_sizeof_headers unimplemented" msgstr "" -#: srec.c:302 +#: srec.c:301 #, c-format msgid "%s:%d: Unexpected character `%s' in S-record file\n" msgstr "" -#: syms.c:969 +#: syms.c:998 msgid "Unsupported .stab relocation" msgstr "" -#: vms-gsd.c:355 +#: vms-gsd.c:356 #, c-format msgid "bfd_make_section (%s) failed" msgstr "" -#: vms-gsd.c:370 +#: vms-gsd.c:371 #, c-format msgid "bfd_set_section_flags (%s, %x) failed" msgstr "" -#: vms-gsd.c:406 +#: vms-gsd.c:407 #, c-format msgid "Size mismatch section %s=%lx, %s=%lx" msgstr "" -#: vms-gsd.c:703 +#: vms-gsd.c:704 #, c-format msgid "unknown gsd/egsd subtype %d" msgstr "" @@ -1783,193 +1985,110 @@ msgstr "" msgid "failed to enter %s" msgstr "" -#: vms-tir.c:78 +#: vms-tir.c:81 msgid "No Mem !" msgstr "" -#: vms-tir.c:313 -msgid "Bad section index in ETIR_S_C_STA_PQ" -msgstr "" - -#: vms-tir.c:328 +#: vms-tir.c:362 #, c-format -msgid "Unsupported STA cmd %d" +msgid "bad section index in %s" msgstr "" -#: vms-tir.c:333 vms-tir.c:1301 +#: vms-tir.c:375 #, c-format -msgid "Reserved STA cmd %d" +msgid "unsupported STA cmd %s" msgstr "" -#: vms-tir.c:443 +#: vms-tir.c:380 vms-tir.c:1240 #, c-format -msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +msgid "reserved STA cmd %d" msgstr "" -#: vms-tir.c:465 +#: vms-tir.c:491 vms-tir.c:514 #, c-format -msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" -msgstr "" - -#: vms-tir.c:478 -msgid "ETIR_S_C_STO_RB/AB: Not supported" -msgstr "" - -#: vms-tir.c:538 -msgid "ETIR_S_C_STO_LP_PSB: Not supported" -msgstr "" - -#: vms-tir.c:544 -msgid "ETIR_S_C_STO_HINT_GBL: not implemented" -msgstr "" - -#: vms-tir.c:550 -msgid "ETIR_S_C_STO_HINT_PS: not implemented" +msgid "%s: no symbol \"%s\"" msgstr "" -#: vms-tir.c:554 vms-tir.c:1473 +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829 +#: vms-tir.c:838 vms-tir.c:1563 #, c-format -msgid "Reserved STO cmd %d" -msgstr "" - -#: vms-tir.c:667 -msgid "ETIR_S_C_OPR_INSV: Not supported" -msgstr "" - -#: vms-tir.c:685 -msgid "ETIR_S_C_OPR_USH: Not supported" -msgstr "" - -#: vms-tir.c:691 -msgid "ETIR_S_C_OPR_ROT: Not supported" -msgstr "" - -#: vms-tir.c:710 -msgid "ETIR_S_C_OPR_REDEF: Not supported" -msgstr "" - -#: vms-tir.c:716 -msgid "ETIR_S_C_OPR_DFLIT: Not supported" +msgid "%s: not supported" msgstr "" -#: vms-tir.c:720 vms-tir.c:1668 +#: vms-tir.c:586 vms-tir.c:1418 #, c-format -msgid "Reserved OPR cmd %d" +msgid "%s: not implemented" msgstr "" -#: vms-tir.c:788 vms-tir.c:1737 +#: vms-tir.c:590 vms-tir.c:1422 #, c-format -msgid "Reserved CTL cmd %d" +msgid "reserved STO cmd %d" msgstr "" -#: vms-tir.c:816 -msgid "ETIR_S_C_STC_LP: not supported" +#: vms-tir.c:708 vms-tir.c:1568 +#, c-format +msgid "reserved OPR cmd %d" msgstr "" -#: vms-tir.c:834 -msgid "ETIR_S_C_STC_GBL: not supported" +#: vms-tir.c:776 vms-tir.c:1632 +#, c-format +msgid "reserved CTL cmd %d" msgstr "" -#: vms-tir.c:842 -msgid "ETIR_S_C_STC_GCA: not supported" +#. stack byte from image +#. arg: none. +#: vms-tir.c:1148 +msgid "stack-from-image not implemented" msgstr "" -#: vms-tir.c:851 -msgid "ETIR_S_C_STC_PS: not supported" +#: vms-tir.c:1166 +msgid "stack-entry-mask not fully implemented" msgstr "" +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor #. -#. * stack byte from image -#. * arg: - -#. * -#. -#: vms-tir.c:1199 -msgid "Stack-from-image not implemented" -msgstr "" - -#: vms-tir.c:1219 -msgid "Stack-entry-mask not fully implemented" -msgstr "" - -#. -#. * compare procedure argument -#. * arg: cs symbol name -#. * by argument index -#. * da argument descriptor -#. * -#. * compare argument descriptor with symbol argument (ARG$V_PASSMECH) -#. * and stack TRUE (args match) or FALSE (args dont match) value -#. -#: vms-tir.c:1235 +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1180 msgid "PASSMECH not fully implemented" msgstr "" -#: vms-tir.c:1256 -msgid "Stack-local-symbol not fully implemented" +#: vms-tir.c:1199 +msgid "stack-local-symbol not fully implemented" msgstr "" -#: vms-tir.c:1271 -msgid "Stack-literal not fully implemented" +#: vms-tir.c:1212 +msgid "stack-literal not fully implemented" msgstr "" -#: vms-tir.c:1294 -msgid "Stack-local-symbol-entry-point-mask not fully implemented" +#: vms-tir.c:1233 +msgid "stack-local-symbol-entry-point-mask not fully implemented" msgstr "" -#: vms-tir.c:1469 +#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611 +#: vms-tir.c:1619 vms-tir.c:1627 #, c-format -msgid "Unimplemented STO cmd %d" -msgstr "" - -#: vms-tir.c:1608 -msgid "TIR_S_C_OPR_ASH incomplete" -msgstr "" - -#: vms-tir.c:1622 -msgid "TIR_S_C_OPR_USH incomplete" -msgstr "" - -#: vms-tir.c:1636 -msgid "TIR_S_C_OPR_ROT incomplete" -msgstr "" - -#. -#. * redefine symbol to current location -#. -#: vms-tir.c:1657 -msgid "TIR_S_C_OPR_REDEF not supported" -msgstr "" - -#. -#. * define a literal -#. -#: vms-tir.c:1664 -msgid "TIR_S_C_OPR_DFLIT not supported" -msgstr "" - -#: vms-tir.c:1718 -msgid "TIR_S_C_CTL_DFLOC not fully implemented" -msgstr "" - -#: vms-tir.c:1726 -msgid "TIR_S_C_CTL_STLOC not fully implemented" -msgstr "" - -#: vms-tir.c:1734 -msgid "TIR_S_C_CTL_STKDL not fully implemented" +msgid "%s: not fully implemented" msgstr "" -#: vms-tir.c:1791 +#: vms-tir.c:1684 #, c-format -msgid "Obj code %d not found" +msgid "obj code %d not found" msgstr "" -#: vms-tir.c:2137 +#: vms-tir.c:2019 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "" -#: vms-tir.c:2424 +#: vms-tir.c:2307 #, c-format msgid "Unhandled relocation %s" msgstr "" @@ -2033,251 +2152,245 @@ msgstr "" msgid "error: undefined symbol __rtinit" msgstr "" -#: xcofflink.c:3423 +#: xcofflink.c:3458 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "" -#: xcofflink.c:4421 +#: xcofflink.c:4452 #, c-format msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" msgstr "" -#: xcofflink.c:5261 xcofflink.c:5723 xcofflink.c:5785 xcofflink.c:6086 +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 #, c-format msgid "%s: loader reloc in unrecognized section `%s'" msgstr "" -#: xcofflink.c:5283 xcofflink.c:6097 +#: xcofflink.c:5314 xcofflink.c:6128 #, c-format msgid "%s: `%s' in loader reloc but not loader sym" msgstr "" -#: xcofflink.c:5298 +#: xcofflink.c:5329 #, c-format msgid "%s: loader reloc in read-only section %s" msgstr "" -#: elf32-ia64.c:2083 elf64-ia64.c:2083 +#: elf32-ia64.c:2189 elf64-ia64.c:2189 msgid "@pltoff reloc against local symbol" msgstr "" -#: elf32-ia64.c:2141 elf64-ia64.c:2141 -msgid "non-zero addend in @fptr reloc" -msgstr "" - -#: elf32-ia64.c:3321 elf64-ia64.c:3321 +#: elf32-ia64.c:3413 elf64-ia64.c:3413 #, c-format msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" msgstr "" -#: elf32-ia64.c:3332 elf64-ia64.c:3332 +#: elf32-ia64.c:3424 elf64-ia64.c:3424 #, c-format msgid "%s: __gp does not cover short data segment" msgstr "" -#: elf32-ia64.c:3605 elf64-ia64.c:3605 +#: elf32-ia64.c:3728 elf64-ia64.c:3728 #, c-format msgid "%s: linking non-pic code in a shared library" msgstr "" -#: elf32-ia64.c:3638 elf64-ia64.c:3638 +#: elf32-ia64.c:3761 elf64-ia64.c:3761 #, c-format msgid "%s: @gprel relocation against dynamic symbol %s" msgstr "" -#: elf32-ia64.c:3776 elf64-ia64.c:3776 +#: elf32-ia64.c:3900 elf64-ia64.c:3900 #, c-format msgid "%s: dynamic relocation against speculation fixup" msgstr "" -#: elf32-ia64.c:3784 elf64-ia64.c:3784 +#: elf32-ia64.c:3908 elf64-ia64.c:3908 #, c-format msgid "%s: speculation fixup against undefined weak symbol" msgstr "" -#: elf32-ia64.c:3967 elf64-ia64.c:3967 +#: elf32-ia64.c:4092 elf64-ia64.c:4092 msgid "unsupported reloc" msgstr "" -#: elf32-ia64.c:4265 elf64-ia64.c:4265 +#: elf32-ia64.c:4372 elf64-ia64.c:4372 #, c-format msgid "%s: linking trap-on-NULL-dereference with non-trapping files" msgstr "" -#: elf32-ia64.c:4274 elf64-ia64.c:4274 +#: elf32-ia64.c:4381 elf64-ia64.c:4381 #, c-format msgid "%s: linking big-endian files with little-endian files" msgstr "" -#: elf32-ia64.c:4283 elf64-ia64.c:4283 +#: elf32-ia64.c:4390 elf64-ia64.c:4390 #, c-format msgid "%s: linking 64-bit files with 32-bit files" msgstr "" -#: elf32-ia64.c:4292 elf64-ia64.c:4292 +#: elf32-ia64.c:4399 elf64-ia64.c:4399 #, c-format msgid "%s: linking constant-gp files with non-constant-gp files" msgstr "" -#: elf32-ia64.c:4302 elf64-ia64.c:4302 +#: elf32-ia64.c:4409 elf64-ia64.c:4409 #, c-format msgid "%s: linking auto-pic files with non-auto-pic files" msgstr "" -#: peigen.c:964 pepigen.c:964 +#: peigen.c:962 pepigen.c:962 #, c-format msgid "%s: line number overflow: 0x%lx > 0xffff" msgstr "" -#: peigen.c:981 pepigen.c:981 +#: peigen.c:979 pepigen.c:979 #, c-format msgid "%s: reloc overflow 1: 0x%lx > 0xffff" msgstr "" -#: peigen.c:995 pepigen.c:995 +#: peigen.c:993 pepigen.c:993 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "" -#: peigen.c:996 pepigen.c:996 +#: peigen.c:994 pepigen.c:994 msgid "Import Directory [parts of .idata]" msgstr "" -#: peigen.c:997 pepigen.c:997 +#: peigen.c:995 pepigen.c:995 msgid "Resource Directory [.rsrc]" msgstr "" -#: peigen.c:998 pepigen.c:998 +#: peigen.c:996 pepigen.c:996 msgid "Exception Directory [.pdata]" msgstr "" -#: peigen.c:999 pepigen.c:999 +#: peigen.c:997 pepigen.c:997 msgid "Security Directory" msgstr "" -#: peigen.c:1000 pepigen.c:1000 +#: peigen.c:998 pepigen.c:998 msgid "Base Relocation Directory [.reloc]" msgstr "" -#: peigen.c:1001 pepigen.c:1001 +#: peigen.c:999 pepigen.c:999 msgid "Debug Directory" msgstr "" -#: peigen.c:1002 pepigen.c:1002 +#: peigen.c:1000 pepigen.c:1000 msgid "Description Directory" msgstr "" -#: peigen.c:1003 pepigen.c:1003 +#: peigen.c:1001 pepigen.c:1001 msgid "Special Directory" msgstr "" -#: peigen.c:1004 pepigen.c:1004 +#: peigen.c:1002 pepigen.c:1002 msgid "Thread Storage Directory [.tls]" msgstr "" -#: peigen.c:1005 pepigen.c:1005 +#: peigen.c:1003 pepigen.c:1003 msgid "Load Configuration Directory" msgstr "" -#: peigen.c:1006 pepigen.c:1006 +#: peigen.c:1004 pepigen.c:1004 msgid "Bound Import Directory" msgstr "" -#: peigen.c:1007 pepigen.c:1007 +#: peigen.c:1005 pepigen.c:1005 msgid "Import Address Table Directory" msgstr "" -#: peigen.c:1008 pepigen.c:1008 +#: peigen.c:1006 pepigen.c:1006 msgid "Delay Import Directory" msgstr "" -#: peigen.c:1009 peigen.c:1010 pepigen.c:1009 pepigen.c:1010 +#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 msgid "Reserved" msgstr "" -#: peigen.c:1073 pepigen.c:1073 +#: peigen.c:1071 pepigen.c:1071 msgid "" "\n" "There is an import table, but the section containing it could not be found\n" msgstr "" -#: peigen.c:1078 pepigen.c:1078 +#: peigen.c:1076 pepigen.c:1076 #, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" msgstr "" -#: peigen.c:1115 pepigen.c:1115 +#: peigen.c:1113 pepigen.c:1113 #, c-format msgid "" "\n" "Function descriptor located at the start address: %04lx\n" msgstr "" -#: peigen.c:1118 pepigen.c:1118 +#: peigen.c:1116 pepigen.c:1116 #, c-format msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" msgstr "" -#: peigen.c:1124 pepigen.c:1124 +#: peigen.c:1122 pepigen.c:1122 msgid "" "\n" "No reldata section! Function descriptor not decoded.\n" msgstr "" -#: peigen.c:1129 pepigen.c:1129 +#: peigen.c:1127 pepigen.c:1127 #, c-format msgid "" "\n" "The Import Tables (interpreted %s section contents)\n" msgstr "" -#: peigen.c:1132 pepigen.c:1132 -msgid " vma: Hint Time Forward DLL First\n" -msgstr "" - -#: peigen.c:1134 pepigen.c:1134 -msgid " Table Stamp Chain Name Thunk\n" +#: peigen.c:1130 pepigen.c:1130 +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" msgstr "" -#: peigen.c:1182 pepigen.c:1182 +#: peigen.c:1180 pepigen.c:1180 #, c-format msgid "" "\n" "\tDLL Name: %s\n" msgstr "" -#: peigen.c:1186 peigen.c:1249 pepigen.c:1186 pepigen.c:1249 +#: peigen.c:1184 peigen.c:1247 pepigen.c:1184 pepigen.c:1247 msgid "\tvma: Hint/Ord Member-Name\n" msgstr "" -#: peigen.c:1248 pepigen.c:1248 +#: peigen.c:1246 pepigen.c:1246 msgid "\tThe Import Address Table (difference found)\n" msgstr "" -#: peigen.c:1255 pepigen.c:1255 +#: peigen.c:1253 pepigen.c:1253 msgid "\t>>> Ran out of IAT members!\n" msgstr "" -#: peigen.c:1273 pepigen.c:1273 +#: peigen.c:1271 pepigen.c:1271 msgid "\tThe Import Address Table is identical\n" msgstr "" -#: peigen.c:1345 pepigen.c:1345 +#: peigen.c:1343 pepigen.c:1343 msgid "" "\n" "There is an export table, but the section containing it could not be found\n" msgstr "" -#: peigen.c:1350 pepigen.c:1350 +#: peigen.c:1348 pepigen.c:1348 #, c-format msgid "" "\n" "There is an export table in %s at 0x%lx\n" msgstr "" -#: peigen.c:1381 pepigen.c:1381 +#: peigen.c:1379 pepigen.c:1379 #, c-format msgid "" "\n" @@ -2285,131 +2398,129 @@ msgid "" "\n" msgstr "" -#: peigen.c:1385 pepigen.c:1385 +#: peigen.c:1383 pepigen.c:1383 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "" -#: peigen.c:1388 pepigen.c:1388 +#: peigen.c:1386 pepigen.c:1386 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "" -#: peigen.c:1391 pepigen.c:1391 +#: peigen.c:1389 pepigen.c:1389 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "" -#: peigen.c:1394 pepigen.c:1394 +#: peigen.c:1392 pepigen.c:1392 msgid "Name \t\t\t\t" msgstr "" -#: peigen.c:1400 pepigen.c:1400 +#: peigen.c:1398 pepigen.c:1398 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "" -#: peigen.c:1403 pepigen.c:1403 +#: peigen.c:1401 pepigen.c:1401 msgid "Number in:\n" msgstr "" -#: peigen.c:1406 pepigen.c:1406 +#: peigen.c:1404 pepigen.c:1404 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "" -#: peigen.c:1410 pepigen.c:1410 +#: peigen.c:1408 pepigen.c:1408 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "" -#: peigen.c:1413 pepigen.c:1413 +#: peigen.c:1411 pepigen.c:1411 msgid "Table Addresses\n" msgstr "" -#: peigen.c:1416 pepigen.c:1416 +#: peigen.c:1414 pepigen.c:1414 msgid "\tExport Address Table \t\t" msgstr "" -#: peigen.c:1421 pepigen.c:1421 +#: peigen.c:1419 pepigen.c:1419 msgid "\tName Pointer Table \t\t" msgstr "" -#: peigen.c:1426 pepigen.c:1426 +#: peigen.c:1424 pepigen.c:1424 msgid "\tOrdinal Table \t\t\t" msgstr "" -#: peigen.c:1441 pepigen.c:1441 +#: peigen.c:1439 pepigen.c:1439 #, c-format msgid "" "\n" "Export Address Table -- Ordinal Base %ld\n" msgstr "" -#: peigen.c:1460 pepigen.c:1460 +#: peigen.c:1458 pepigen.c:1458 msgid "Forwarder RVA" msgstr "" -#: peigen.c:1471 pepigen.c:1471 +#: peigen.c:1469 pepigen.c:1469 msgid "Export RVA" msgstr "" -#: peigen.c:1478 pepigen.c:1478 +#: peigen.c:1476 pepigen.c:1476 msgid "" "\n" "[Ordinal/Name Pointer] Table\n" msgstr "" -#: peigen.c:1533 pepigen.c:1533 +#: peigen.c:1531 pepigen.c:1531 #, c-format msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "" -#: peigen.c:1537 pepigen.c:1537 +#: peigen.c:1535 pepigen.c:1535 msgid "" "\n" "The Function Table (interpreted .pdata section contents)\n" msgstr "" -#: peigen.c:1540 pepigen.c:1540 +#: peigen.c:1538 pepigen.c:1538 msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr "" -#: peigen.c:1543 pepigen.c:1543 -msgid " vma:\t\tBegin End EH EH PrologEnd Exception\n" -msgstr "" - -#: peigen.c:1545 pepigen.c:1545 -msgid " \t\tAddress Address Handler Data Address Mask\n" +#: peigen.c:1540 pepigen.c:1540 +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" msgstr "" -#: peigen.c:1613 pepigen.c:1613 +#: peigen.c:1610 pepigen.c:1610 msgid " Register save millicode" msgstr "" -#: peigen.c:1616 pepigen.c:1616 +#: peigen.c:1613 pepigen.c:1613 msgid " Register restore millicode" msgstr "" -#: peigen.c:1619 pepigen.c:1619 +#: peigen.c:1616 pepigen.c:1616 msgid " Glue code sequence" msgstr "" -#: peigen.c:1671 pepigen.c:1671 +#: peigen.c:1668 pepigen.c:1668 msgid "" "\n" "\n" "PE File Base Relocations (interpreted .reloc section contents)\n" msgstr "" -#: peigen.c:1701 pepigen.c:1701 +#: peigen.c:1698 pepigen.c:1698 #, c-format msgid "" "\n" "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" msgstr "" -#: peigen.c:1714 pepigen.c:1714 +#: peigen.c:1711 pepigen.c:1711 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "" @@ -2417,7 +2528,7 @@ msgstr "" #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peigen.c:1754 pepigen.c:1754 +#: peigen.c:1751 pepigen.c:1751 #, c-format msgid "" "\n" diff -uprN binutils-2.11.92.0.12.3/bfd/po/es.po binutils-2.11.93.0.2/bfd/po/es.po --- binutils-2.11.92.0.12.3/bfd/po/es.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/po/es.po Sun Feb 3 11:22:30 2002 @@ -0,0 +1,2960 @@ +# Mensajes en español para bfd 2.12-pre020121. +# Copyright (C) 2002 Free Software Foundation, Inc. +# Cristian Othón Martínez Vera , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: bfd 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-31 17:07+0000\n" +"PO-Revision-Date: 2002-01-24 10:04-0600\n" +"Last-Translator: Cristian Othón Martínez Vera \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aout-adobe.c:196 +#, c-format +msgid "%s: Unknown section type in a.out.adobe file: %x\n" +msgstr "%s: Tipo de sección desconocido en el fichero a.out.adobe: %x\n" + +#: aout-cris.c:208 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "%s: Tipo de reubicación exportado inválido: %d" + +#: aout-cris.c:252 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "%s: Tipo de reubicación importado inválido: %d" + +#: aout-cris.c:263 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "%s: Registro de reubicación importado erróneo: %d" + +#: aoutx.h:1282 aoutx.h:1699 +#, c-format +msgid "%s: can not represent section `%s' in a.out object file format" +msgstr "" +"%s: no se puede representar la sección `%s' en el fichero objeto de formato " +"a.out" + +#: aoutx.h:1669 +#, c-format +msgid "" +"%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "" +"%s: no se puede representar la sección para el símbolo `%s' en el fichero " +"objeto de formato a.out" + +#: aoutx.h:1671 +msgid "*unknown*" +msgstr "*desconocido*" + +#: aoutx.h:3735 +#, c-format +msgid "%s: relocateable link from %s to %s not supported" +msgstr "%s: enlace reubicable desde %s a %s sin soporte" + +#: archive.c:1826 +msgid "Warning: writing archive was slow: rewriting timestamp\n" +msgstr "" +"Aviso: la escritura del fichero fue lenta: reescribiendo la marca de tiempo\n" + +# ¡Uff! Si utilizáramos file=archivo, esta traducción sería imposible. cfuga +#: archive.c:2093 +msgid "Reading archive file mod timestamp" +msgstr "Leyendo el archivo de la modificación de marca de tiempo del fichero" + +#. FIXME: bfd can't call perror. +#: archive.c:2120 +msgid "Writing updated armap timestamp" +msgstr "Escribiendo la marca de tiempo actualizada de armap" + +#: bfd.c:274 +msgid "No error" +msgstr "No hay error" + +#: bfd.c:275 +msgid "System call error" +msgstr "Error en la llamada al sistema" + +#: bfd.c:276 +msgid "Invalid bfd target" +msgstr "Objetivo bfd inválido" + +#: bfd.c:277 +msgid "File in wrong format" +msgstr "Fichero en formato erróneo" + +#: bfd.c:278 +msgid "Archive object file in wrong format" +msgstr "Archivo de ficheros objeto en formato erróneo" + +#: bfd.c:279 +msgid "Invalid operation" +msgstr "Operación inválida" + +#: bfd.c:280 +msgid "Memory exhausted" +msgstr "Memoria agotada" + +#: bfd.c:281 +msgid "No symbols" +msgstr "No hay símbolos" + +#: bfd.c:282 +msgid "Archive has no index; run ranlib to add one" +msgstr "El archivo no tiene índice; ejecute ranlib para agregar uno" + +#: bfd.c:283 +msgid "No more archived files" +msgstr "No hay más ficheros archivados" + +#: bfd.c:284 +msgid "Malformed archive" +msgstr "Archivo malformado" + +#: bfd.c:285 +msgid "File format not recognized" +msgstr "No se reconoce el formato del fichero" + +#: bfd.c:286 +msgid "File format is ambiguous" +msgstr "El formato del fichero es ambiguo" + +#: bfd.c:287 +msgid "Section has no contents" +msgstr "La sección no tiene contenidos" + +#: bfd.c:288 +msgid "Nonrepresentable section on output" +msgstr "Sección no representable en la salida" + +#: bfd.c:289 +msgid "Symbol needs debug section which does not exist" +msgstr "Un símbolo requiere de una sección de depuración, la cual no existe" + +#: bfd.c:290 +msgid "Bad value" +msgstr "Valor erróneo" + +#: bfd.c:291 +msgid "File truncated" +msgstr "Fichero truncado" + +#: bfd.c:292 +msgid "File too big" +msgstr "Fichero demasiado grande" + +#: bfd.c:293 +msgid "#" +msgstr "#" + +#: bfd.c:700 +#, c-format +msgid "BFD %s assertion fail %s:%d" +msgstr "falló la aseveración BFD %s %s:%d" + +#: bfd.c:719 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "error interno de BFD %s, abortando en %s línea %d en %s\n" + +#: bfd.c:723 +#, fuzzy, c-format +msgid "BFD %s internal error, aborting at %s line %d\n" +msgstr "error interno de BFD %s, abortando en %s línea %d\n" + +#: bfd.c:725 +msgid "Please report this bug.\n" +msgstr "Por favor reporte este bicho.\n" + +#: binary.c:306 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "" +"Aviso: Escribiendo la sección `%s' a un desplazamiento de fichero grande (pe " +"negativo) 0x%lx." + +#: coff-a29k.c:119 +msgid "Missing IHCONST" +msgstr "IHCONST faltante" + +#: coff-a29k.c:180 +msgid "Missing IHIHALF" +msgstr "IHIHALF faltante" + +#: coff-a29k.c:212 coff-or32.c:228 +msgid "Unrecognized reloc" +msgstr "Reubicación no reconocida" + +#: coff-a29k.c:408 +msgid "missing IHCONST reloc" +msgstr "reubicación IHCONST faltante" + +#: coff-a29k.c:498 +msgid "missing IHIHALF reloc" +msgstr "reubicación IHIHALF faltante" + +#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 +msgid "GP relative relocation used when GP not defined" +msgstr "se usó una reubicación GP relativa cuando GP no estaba definido" + +#: coff-alpha.c:1485 +msgid "using multiple gp values" +msgstr "usando valores múltiples de gp" + +#: coff-arm.c:1051 elf32-arm.h:285 +#, c-format +msgid "%s: unable to find THUMB glue '%s' for `%s'" +msgstr "%s: no se puede encontrar el pegamento THUMB '%s' para `%s'" + +#: coff-arm.c:1080 elf32-arm.h:320 +#, c-format +msgid "%s: unable to find ARM glue '%s' for `%s'" +msgstr "%s: no se puede encontrar el pegamento ARM '%s' para `%s'" + +#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990 +#, c-format +msgid "%s(%s): warning: interworking not enabled." +msgstr "%s(%s): aviso: interoperabilidad no activada." + +#: coff-arm.c:1379 elf32-arm.h:993 +#, c-format +msgid " first occurrence: %s: arm call to thumb" +msgstr " primera ocurrencia: %s: llamada arm a thumb" + +#: coff-arm.c:1474 elf32-arm.h:889 +#, c-format +msgid " first occurrence: %s: thumb call to arm" +msgstr " primera ocurrencia: %s: llamada thumb a arm" + +#: coff-arm.c:1477 +msgid " consider relinking with --support-old-code enabled" +msgstr " considere el reenlace con --support-old-code activado" + +#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 +#, c-format +msgid "%s: bad reloc address 0x%lx in section `%s'" +msgstr "%s: dirección de reubicación 0x%lx errónea en la sección `%s'" + +#: coff-arm.c:2107 +#, c-format +msgid "%s: illegal symbol index in reloc: %d" +msgstr "%s: índice de símbolos ilegal en la reubicación: %d" + +#: coff-arm.c:2235 +#, c-format +msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" +msgstr "" +"%s: ERROR: compilado para APCS-%d mientras que el objetivo %s usa APCS-%d" + +#: coff-arm.c:2250 +#, c-format +msgid "" +"%s: ERROR: passes floats in float registers whereas target %s uses integer " +"registers" +msgstr "" +"%s: ERROR: pasan números de coma flotante en registros de coma flotante " +"mientras que el objetivo %s usa registros enteros" + +#: coff-arm.c:2253 +#, c-format +msgid "" +"%s: ERROR: passes floats in integer registers whereas target %s uses float " +"registers" +msgstr "" +"%s: ERROR: pasan números de coma flotante en registros enteros mientras que " +"el objetivo %s usa registros de coma flotante" + +#: coff-arm.c:2268 +#, c-format +msgid "" +"%s: ERROR: compiled as position independent code, whereas target %s is " +"absolute position" +msgstr "" +"%s: ERROR: compilado como código independiente de posición, mientras que el " +"objetivo %s es de posición absoluta" + +#: coff-arm.c:2271 +#, c-format +msgid "" +"%s: ERROR: compiled as absolute position code, whereas target %s is position " +"independent" +msgstr "" +"%s: ERROR: compilado como código de posición absoluta, mientras que el " +"objetivo %s es independiente de posición" + +#: coff-arm.c:2300 +#, fuzzy, c-format +msgid "Warning: %s supports interworking, whereas %s does not." +msgstr "" +"Aviso: el fichero de entrada %s soporta interoperabilidad, mientras que %s no" + +#: coff-arm.c:2303 +#, fuzzy, c-format +msgid "Warning: %s does not support interworking, whereas %s does." +msgstr "" +"Aviso: el fichero de entrada %s no soporta interoperabilidad, mientras que %" +"s sí" + +#: coff-arm.c:2330 +#, c-format +msgid "private flags = %x:" +msgstr "opciones privadas = %x:" + +#: coff-arm.c:2338 elf32-arm.h:2408 +msgid " [floats passed in float registers]" +msgstr "[números de coma flotante pasados en registros de coma flotante]" + +#: coff-arm.c:2340 +msgid " [floats passed in integer registers]" +msgstr "[números de coma flotante pasados en registros enteros]" + +#: coff-arm.c:2343 elf32-arm.h:2411 +msgid " [position independent]" +msgstr "[independiente de posición]" + +#: coff-arm.c:2345 +msgid " [absolute position]" +msgstr "[posición absoluta]" + +#: coff-arm.c:2349 +msgid " [interworking flag not initialised]" +msgstr "[opción de interoperabilidad no iniciada]" + +#: coff-arm.c:2351 +msgid " [interworking supported]" +msgstr "[soporte para interoperabilidad]" + +#: coff-arm.c:2353 +msgid " [interworking not supported]" +msgstr "[sin soporte para interoperabilidad]" + +#: coff-arm.c:2401 elf32-arm.h:2114 +#, fuzzy, c-format +msgid "" +"Warning: Not setting interworking flag of %s since it has already been " +"specified as non-interworking" +msgstr "" +"Aviso: No se establece la opción de interoperabilidad de %s, ya que ya había " +"sido especificado como no interoperable" + +#: coff-arm.c:2405 elf32-arm.h:2118 +#, c-format +msgid "Warning: Clearing the interworking flag of %s due to outside request" +msgstr "" +"Aviso: Limpiando la opción de interoperabilidad de %s debido a una petición " +"externa" + +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "convención de llamada incierta para un símbolo que no es COFF" + +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +msgid "unsupported reloc type" +msgstr "tipo de reubicación sin soporte" + +#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "reubicación GP relativa cuando _gp no está definido" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "reubicación contra una sección sin soporte" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" +msgstr "reubicación no alineada adecuadamente" + +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: tipo de reubicación 0x%02x sin soporte" + +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "%s: reubicación de TOC en 0x%x al símbolo `%s' sin entrada TOC" + +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: el símbolo `%s' tiene smclas %d no reconocido" + +#: coff-tic54x.c:279 coff-tic80.c:449 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "Tipo de reubicación 0x%x no reconocida" + +#: coff-tic54x.c:390 coffcode.h:4868 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: aviso: íncide de símbolos %ld ilegal en reubicaciones" + +#: coff-w65.c:363 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "ignorando la reubicación %s\n" + +#: coffcode.h:1081 +#, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "%s (%s): Se ignora la opción de sección %s (0x%x)" + +#: coffcode.h:2132 +#, c-format +msgid "Unrecognized TI COFF target id '0x%x'" +msgstr "Id de objetivo TI COFF '0x%x' no reconocido" + +#: coffcode.h:4257 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" +msgstr "%s: aviso: índice de símbolos %ld ilegal en los números de línea" + +#: coffcode.h:4271 +#, c-format +msgid "%s: warning: duplicate line number information for `%s'" +msgstr "%s: aviso: información duplicada de números de línea para `%s'" + +#: coffcode.h:4630 +#, c-format +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%s: Clase de almacenamiento %d no reconocida para %s símbolo `%s'" + +#: coffcode.h:4761 +#, c-format +msgid "warning: %s: local symbol `%s' has no section" +msgstr "aviso: %s: el símbolo local `%s' no tiene sección" + +#: coffcode.h:4906 +#, c-format +msgid "%s: illegal relocation type %d at address 0x%lx" +msgstr "%s: tipo de reubicación %d ilegal en la dirección 0x%lx" + +#: coffgen.c:1661 +#, c-format +msgid "%s: bad string table size %lu" +msgstr "%s: tamaño de tabla de cadenas %lu erróneo" + +#: cofflink.c:536 elflink.h:1967 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgstr "Aviso: el tipo del símbolo `%s' cambió de %d a %d en %s" + +#: cofflink.c:2317 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" +msgstr "%s: reubicaciones en la sección `%s', pero no tiene contenidos" + +#: cofflink.c:2653 coffswap.h:889 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgstr "%s: %s: desbordamiento de reubicación: 0x%lx > 0xffff" + +#: cofflink.c:2662 coffswap.h:876 +#, c-format +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: aviso: %s: desbordamiento de número de línea: 0x%lx > 0xffff" + +#: dwarf2.c:381 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Error de Dwarf: No se puede encontrar la sección .debug_str." + +#: dwarf2.c:398 +#, c-format +msgid "" +"Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str " +"size (%u)." +msgstr "" +"Error de Dwarf: El desplazamiento DW_FROM_strp (%u) es más grande que el " +"tamaño de .debug_str (%u)." + +#: dwarf2.c:542 +msgid "Dwarf Error: Can't find .debug_abbrev section." +msgstr "Error de Dwarf: No se puede encontrar la sección .debug_abbrev." + +#: dwarf2.c:559 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size " +"(%u)." +msgstr "" +"Error de Dwarf: El desplazamiento de abreviatura (%u) es más grande que el " +"tamaño de abreviatura (%u)." + +#: dwarf2.c:756 +#, c-format +msgid "Dwarf Error: Invalid or unhandled FORM value: %d." +msgstr "Error de Dwarf: Valor de FORM inválido o no manejado: %d." + +#: dwarf2.c:843 +msgid "Dwarf Error: mangled line number section (bad file number)." +msgstr "" +"Error de Dwarf: sección de números de línea revuelta (número erróneo de " +"fichero)." + +#: dwarf2.c:929 +msgid "Dwarf Error: Can't find .debug_line section." +msgstr "Error de Dwarf: No se puede encontrar lan sección .debug_line." + +#: dwarf2.c:952 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)." +msgstr "" +"Error de Dwarf: El desplazamiento de línea (%u) es más grande que el tamaño " +"de línea (%u)." + +#: dwarf2.c:1143 +msgid "Dwarf Error: mangled line number section." +msgstr "Error de Dwarf: sección de números de línea revuelta." + +#: dwarf2.c:1318 dwarf2.c:1529 +#, c-format +msgid "Dwarf Error: Could not find abbrev number %d." +msgstr "Error de Dwarf: No se puede encontrar el número de abreviatura %d." + +#: dwarf2.c:1490 +#, c-format +msgid "" +"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " +"information." +msgstr "" +"Error de Dwarf: se encontró la versión de dwarf '%hu', este lector solamente " +"maneja información de la versión 2." + +#: dwarf2.c:1497 +#, c-format +msgid "" +"Dwarf Error: found address size '%u', this reader can not handle sizes " +"greater than '%u'." +msgstr "" +"Error de Dwarf: se encontró el tamaño de dirección '%u', este lector no " +"puede manejar tamaños más grandes que '%u'." + +#: dwarf2.c:1520 +#, c-format +msgid "Dwarf Error: Bad abbrev number: %d." +msgstr "Error de Dwarf: Número de abreviación erróneo: %d." + +#: ecoff.c:1328 +#, c-format +msgid "Unknown basic type %d" +msgstr "Tipo básico %d desconocido" + +#: ecoff.c:1597 +#, c-format +msgid "" +"\n" +" End+1 symbol: %ld" +msgstr "" +"\n" +" Símbolo final+1: %ld" + +#: ecoff.c:1604 ecoff.c:1607 +#, c-format +msgid "" +"\n" +" First symbol: %ld" +msgstr "" +"\n" +" Primer símbolo: %ld" + +#: ecoff.c:1619 +#, c-format +msgid "" +"\n" +" End+1 symbol: %-7ld Type: %s" +msgstr "" +"\n" +" Símbolo final+1: %-7ld Tipo: %s" + +#: ecoff.c:1626 +#, c-format +msgid "" +"\n" +" Local symbol: %ld" +msgstr "" +"\n" +" Símbolo local: %ld" + +#: ecoff.c:1634 +#, c-format +msgid "" +"\n" +" struct; End+1 symbol: %ld" +msgstr "" +"\n" +" struct; símbolo final+1: %ld" + +#: ecoff.c:1639 +#, c-format +msgid "" +"\n" +" union; End+1 symbol: %ld" +msgstr "" +"\n" +" union; símbolo final+1: %ld" + +#: ecoff.c:1644 +#, c-format +msgid "" +"\n" +" enum; End+1 symbol: %ld" +msgstr "" +"\n" +" enum; símbolo final+1: %ld" + +#: ecoff.c:1650 +#, c-format +msgid "" +"\n" +" Type: %s" +msgstr "" +"\n" +" Tipo: %s" + +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 +#, c-format +msgid "" +"%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "" +"%s: aviso: reubicación sin resolución contra el símbolo `%s' de la sección %s" + +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1406 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1280 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf32-xstormy16.c:976 elf64-mmix.c:1164 +msgid "internal error: out of range error" +msgstr "error interno: error fuera de rango" + +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1410 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1284 elf32-mips.c:7587 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf32-xstormy16.c:980 elf64-mips.c:4464 elf64-mmix.c:1168 +msgid "internal error: unsupported relocation error" +msgstr "error interno: error de reubicación sin soporte" + +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1288 +msgid "internal error: dangerous error" +msgstr "error interno: error peligroso" + +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1418 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1292 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf32-xstormy16.c:988 elf64-mmix.c:1176 +msgid "internal error: unknown error" +msgstr "error interno: error desconocido" + +#: elf.c:343 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%s: desplazamiento de cadena inválido %u >= %lu para la sección `%s'" + +#: elf.c:448 +#, c-format +msgid "%s: invalid SHT_GROUP entry" +msgstr "%s: entrada SHT_GROUP inválida" + +#: elf.c:529 +#, c-format +msgid "%s: no group info for section %s" +msgstr "%s: no hay información de grupo para la sección %s" + +#: elf.c:840 +msgid "" +"\n" +"Program Header:\n" +msgstr "" +"\n" +"Encabezado del Programa:\n" + +#: elf.c:889 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" +"\n" +"Sección Dinámica:\n" + +#: elf.c:1018 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" +"\n" +"Definiciones de versión:\n" + +#: elf.c:1041 +msgid "" +"\n" +"Version References:\n" +msgstr "" +"\n" +"Referencias de Versión:\n" + +#: elf.c:1046 +#, c-format +msgid " required from %s:\n" +msgstr " requerido desde %s:\n" + +#: elf.c:1682 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "%s: enlace %lu inválido para la sección de reubicación %s (índice %u)" + +#: elf.c:3296 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "" +"%s: No hay suficiente espacio para los encabezados del programa (%u " +"asignados, %u necesarios)" + +#: elf.c:3400 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "" +"%s: No hay suficiente espacio para los encabezados del programa, pruebe " +"enlazar con -N" + +#: elf.c:3525 +#, c-format +msgid "" +"Error: First section in segment (%s) starts at 0x%x whereas the segment " +"starts at 0x%x" +msgstr "" +"Error: La primera sección en el segmento (%s) inicia en 0x%x mientras que el " +"segmento inicia en 0x%x" + +#: elf.c:3811 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: aviso: la sección asignada `%s' no está en el segmento" + +#: elf.c:4142 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: se requiere el símbolo `%s' pero no está presente" + +#: elf.c:4395 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "%s: aviso: Se detectó un segmento cargable vacío\n" + +#: elf.c:5808 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "%s: tipo de reubicación %s sin soporte" + +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "%s: Aviso: La instrucción Arm BLX apunta a la función Arm '%s'." + +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%s: Aviso: La instrucción Thumb BLX apunta a la función thumb '%s'." + +#: elf32-arm.h:1904 elf32-i386.c:1778 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%s(%s+0x%lx): reubicación %s contra la sección SEC_MERGE" + +#: elf32-arm.h:1998 +#, c-format +msgid "" +"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "" +"%s: aviso: reubicación %d sin resolución contra el símbolo `%s' de la " +"sección %s" + +#: elf32-arm.h:2166 +#, fuzzy, c-format +msgid "" +"Warning: Clearing the interworking flag of %s because non-interworking code " +"in %s has been linked with it" +msgstr "" +"Aviso: Limpiando la opción de interoperación en %s porque se ha enlazado " +"código no interoperable en %s" + +#: elf32-arm.h:2261 +#, c-format +msgid "" +"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "" +"Error: %s compilado para EABI versión %d, mientras que %s está compilado " +"para la versión %d" + +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "" +"Error: %s compilado para APCS-%d, mientras que %s está compilado para APCS-%d" + +#: elf32-arm.h:2287 +#, c-format +msgid "" +"Error: %s passes floats in FP registers, whereas %s passes them in integer " +"registers" +msgstr "" +"Error: %s pasa números de coma flotante en registros FP, mientras que %s los " +"pasa en registros enteros" + +#: elf32-arm.h:2292 +#, c-format +msgid "" +"Error: %s passes floats in integer registers, whereas %s passes them in FP " +"registers" +msgstr "" +"Error: %s pasa números de coma flotante en registros enteros, mientras que %" +"s los pasa en registros FP" + +#: elf32-arm.h:2303 +#, fuzzy, c-format +msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" +msgstr "" +"Error: %s utiliza instrucciones VFP, mientras que %s utiliza instrucciones " +"FPA" + +#: elf32-arm.h:2308 +#, fuzzy, c-format +msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" +msgstr "" +"Error: %s utiliza instrucciones FPA, mientras que %s utiliza instrucciones " +"VFP" + +#: elf32-arm.h:2328 +#, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" +msgstr "" +"Error: %s utiliza FP de software, mientras que %s utiliza FP de hardware" + +#: elf32-arm.h:2333 +#, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" +msgstr "" +"Error: %s utiliza FP de hardware, mientras que %s utiliza FP de software" + +#: elf32-arm.h:2348 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "" +"Aviso: el fichero de entrada %s soporta interoperabilidad, mientras que %s no" + +#: elf32-arm.h:2355 +#, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "" +"Aviso: el fichero de entrada %s no soporta interoperabilidad, mientras que %" +"s sí" + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2386 elf32-cris.c:2991 elf32-m68k.c:410 elf32-mips.c:3242 +#, c-format +msgid "private flags = %lx:" +msgstr "opciones privadas = %lx:" + +#: elf32-arm.h:2395 +msgid " [interworking enabled]" +msgstr " [interoperabilidad activada]" + +#: elf32-arm.h:2398 +msgid " [APCS-26]" +msgstr " [APCS-26]" + +#: elf32-arm.h:2400 +msgid " [APCS-32]" +msgstr " [APCS-32]" + +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr " [formato de coma flotante VFP]" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr " [formato de coma flotante FPA]" + +#: elf32-arm.h:2414 +msgid " [new ABI]" +msgstr " [ABI nuevo]" + +#: elf32-arm.h:2417 +msgid " [old ABI]" +msgstr " [ABI antiguo]" + +#: elf32-arm.h:2420 +msgid " [software FP]" +msgstr " [FP por software]" + +#: elf32-arm.h:2428 +msgid " [Version1 EABI]" +msgstr " [EABI Version1]" + +#: elf32-arm.h:2431 elf32-arm.h:2442 +msgid " [sorted symbol table]" +msgstr " [tabla de símbolos ordenados]" + +#: elf32-arm.h:2433 elf32-arm.h:2444 +msgid " [unsorted symbol table]" +msgstr " [tabla de símbolos sin ordenar]" + +#: elf32-arm.h:2439 +msgid " [Version2 EABI]" +msgstr " [EABI Version2]" + +#: elf32-arm.h:2447 +msgid " [dynamic symbols use segment index]" +msgstr " [los símbolos dinámicos utilizan índices de segmento]" + +#: elf32-arm.h:2450 +msgid " [mapping symbols precede others]" +msgstr " [el mapeo de símbolos precede a otros]" + +#: elf32-arm.h:2457 +msgid " " +msgstr " " + +#: elf32-arm.h:2464 +msgid " [relocatable executable]" +msgstr " [ejecutable reubicable]" + +#: elf32-arm.h:2467 +msgid " [has entry point]" +msgstr " [tiene punto de entrada]" + +#: elf32-arm.h:2472 +msgid "" +msgstr "" + +#: elf32-avr.c:843 elf32-cris.c:1414 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf32-xstormy16.c:984 +#: elf64-mmix.c:1172 +msgid "internal error: dangerous relocation" +msgstr "error interno: reubicación peligrosa" + +#: elf32-cris.c:949 +#, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "" +"%s: reubicación %s sin resolución contra el símbolo `%s' de la sección %s" + +#: elf32-cris.c:1012 +#, c-format +msgid "" +"%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "" +"%s: No hay PLT ni GOT para la reubicación %s contra el símbolo `%s' de la " +"sección %s" + +#: elf32-cris.c:1015 elf32-cris.c:1142 +msgid "[whose name is lost]" +msgstr "[cuyo nombre se pierde]" + +#: elf32-cris.c:1131 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against local symbol from %s " +"section" +msgstr "" +"%s: reubicación %s con adición %d que no es cero contra un símbolo local de " +"la sección %s" + +#: elf32-cris.c:1138 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "" +"%s: reubicación %s con adición %d que no es cero contra el símbolo `%s' de " +"la sección %s" + +#: elf32-cris.c:1156 +#, c-format +msgid "" +"%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "" +"%s: no se permite la reubicación %s para el símbolo global: `%s' de la " +"sección %s" + +#: elf32-cris.c:1171 +#, fuzzy, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "%s: reubicaciones en la sección `%s', pero no tiene contenidos" + +#: elf32-cris.c:1289 +#, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "" +"%s: Inconsistencia interna; no se encuentra la sección de reubicación %s" + +#: elf32-cris.c:2523 +#, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s, sección %s:\n" +" no se debe usar la reubicación %s en un objeto compartido; recompile con -" +"fPIC" + +#: elf32-cris.c:2994 +msgid " [symbols have a _ prefix]" +msgstr " [los símbolos tiene un prefijo _]" + +#: elf32-cris.c:3033 +#, c-format +msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "" +"%s: utiliza símbolos con prefijo _, pero escribe el fichero con símbolos sin " +"prefijo" + +#: elf32-cris.c:3034 +#, c-format +msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "" +"%s: utiliza símbolos sin prefijo, pero escribe el fichero con símbolos con " +"prefijo _" + +#: elf32-gen.c:82 elf64-gen.c:82 +#, c-format +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "%s: Reubicaciones en ELF genérico (EM: %d)" + +#: elf32-hppa.c:646 +#, c-format +msgid "%s: cannot create stub entry %s" +msgstr "%s: no se puede crear la entrada de cabo %s" + +#: elf32-hppa.c:937 elf32-hppa.c:3545 +#, c-format +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "" +"%s(%s+0x%lx): no se puede alcanzar %s, recompile con -ffuntion-sections" + +#: elf32-hppa.c:1312 +#, c-format +msgid "" +"%s: relocation %s can not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: no se puede usar la reubicación %s cuando se hace un objeto compartido; " +"recompile con -fPIC" + +#: elf32-hppa.c:1332 +#, c-format +msgid "" +"%s: relocation %s should not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: no se debe usar la reubicación %s cuando se hace un objeto compartido; " +"recompile con -fPIC" + +#: elf32-hppa.c:1525 +#, c-format +msgid "Could not find relocation section for %s" +msgstr "No se puede encontrar la sección de reubicación para %s" + +#: elf32-hppa.c:2867 +#, c-format +msgid "%s: duplicate export stub %s" +msgstr "%s: cabo de exportación %s duplicado" + +#: elf32-hppa.c:3429 +#, c-format +msgid "%s(%s+0x%lx): fixing %s" +msgstr "%s(%s+0x%lx): componiendo %s" + +#: elf32-hppa.c:4069 +#, c-format +msgid "%s(%s+0x%lx): cannot handle %s for %s" +msgstr "%s(%s+0x%lx): no se puede manejar %s para %s" + +#: elf32-hppa.c:4408 +msgid ".got section not immediately after .plt section" +msgstr "la sección .got no está inmediatamente después de la sección .plt" + +#: elf32-i386.c:298 +#, c-format +msgid "%s: invalid relocation type %d" +msgstr "%s: tipo de reubicación %d inválido" + +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 +#, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s: índice de símbolos erróneo: %d" + +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2198 elf64-s390.c:759 +#, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: nombre de sección de reubicación `%s' erróneo" + +#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 +#, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): reubicación sin resolución contra el símbolo `%s'" + +#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): reubicación contra `%s': error %d" + +#: elf32-m32r.c:923 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "reubicación SDA cuando _SDA_BASE_ no está definido" + +#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: tipo de reubicación %d desconocido" + +#: elf32-m32r.c:1223 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "" +"%s: El objetivo (%s) de una reubicación %s está en la sección errónea (%s)" + +#: elf32-m32r.c:2000 +#, c-format +msgid "%s: Instruction set mismatch with previous modules" +msgstr "%s: Conjunto de instrucciones no coincidente con módulos previos" + +#: elf32-m32r.c:2023 +#, c-format +msgid "private flags = %lx" +msgstr "opciones privadas = %lx" + +#: elf32-m32r.c:2028 +msgid ": m32r instructions" +msgstr ": instrucciones m32r" + +#: elf32-m32r.c:2029 +msgid ": m32rx instructions" +msgstr ": instrucciones m32rx" + +#: elf32-m68k.c:413 +msgid " [cpu32]" +msgstr " [cpu32]" + +#: elf32-mcore.c:353 elf32-mcore.c:479 +#, c-format +msgid "%s: Relocation %s (%d) is not currently supported.\n" +msgstr "%s: La reubicación %s (%d) actualmente no tiene soporte.\n" + +#: elf32-mcore.c:438 +#, c-format +msgid "%s: Unknown relocation type %d\n" +msgstr "%s: Tipo de reubicación %d desconocido\n" + +#: elf32-mips.c:2156 elf64-mips.c:1972 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "la reubicación gp relativa de 32bits sucede para un símbolo externo" + +#: elf32-mips.c:2305 +#, c-format +msgid "Linking mips16 objects into %s format is not supported" +msgstr "Enlazar objetos mips16 en el formato %s no tiene soporte" + +#: elf32-mips.c:3129 +#, c-format +msgid "%s: linking PIC files with non-PIC files" +msgstr "%s: enlazando ficheros PIC con ficheros que no son PIC" + +#: elf32-mips.c:3139 +#, c-format +msgid "%s: linking abicalls files with non-abicalls files" +msgstr "" +"%s: enlazando ficheros de llamadas abi con ficheros que no son de llamadas " +"abi" + +#: elf32-mips.c:3168 +#, c-format +msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +msgstr "%s: no coincide el ISA (-mips%d) con módulos previos (-mips%d)" + +#: elf32-mips.c:3177 +#, c-format +msgid "%s: ISA mismatch (%d) with previous modules (%d)" +msgstr "%s: no coincide el ISA (%d) con módulos previos (%d)" + +#: elf32-mips.c:3200 +#, c-format +msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgstr "%s: no coincide el ABI: enlazando el módulo %s con módulos %s previos" + +#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 +#, c-format +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "" +"%s: usa campos de e_flags diferentes (0x%lx) que los módulos previos (0x%lx)" + +#: elf32-mips.c:3245 +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elf32-mips.c:3247 +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elf32-mips.c:3249 +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elf32-mips.c:3251 +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elf32-mips.c:3253 +msgid " [abi unknown]" +msgstr " [abi desconocido]" + +#: elf32-mips.c:3255 +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elf32-mips.c:3257 +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elf32-mips.c:3259 +msgid " [no abi set]" +msgstr " [no hay conjunto abi]" + +#: elf32-mips.c:3262 +msgid " [mips1]" +msgstr " [mips1]" + +#: elf32-mips.c:3264 +msgid " [mips2]" +msgstr " [mips2]" + +#: elf32-mips.c:3266 +msgid " [mips3]" +msgstr " [mips3]" + +#: elf32-mips.c:3268 +msgid " [mips4]" +msgstr " [mips4]" + +#: elf32-mips.c:3270 +msgid " [mips5]" +msgstr " [mips5]" + +#: elf32-mips.c:3272 +msgid " [mips32]" +msgstr " [mips32]" + +#: elf32-mips.c:3274 +msgid " [mips64]" +msgstr " [mips64]" + +#: elf32-mips.c:3276 +msgid " [unknown ISA]" +msgstr " [ISA desconocido]" + +#: elf32-mips.c:3279 +msgid " [32bitmode]" +msgstr " [modo 32bit]" + +#: elf32-mips.c:3281 +msgid " [not 32bitmode]" +msgstr " [no es modo 32bit]" + +#: elf32-mips.c:4954 +msgid "static procedure (no name)" +msgstr "procedimiento estático (sin nombre)" + +#: elf32-mips.c:5572 elf64-mips.c:6694 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: nombre de sección `%s' ilegal" + +#: elf32-mips.c:6139 elf64-mips.c:3150 +msgid "not enough GOT space for local GOT entries" +msgstr "no hay suficiente espacio GOT para entradas GOT locales" + +#: elf32-mips.c:7250 elf64-mips.c:4203 +#, c-format +msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +msgstr "%s: %s+0x%lx: salto a una rutina cabo la cual no es jal" + +#: elf32-mips.c:8259 elf64-mips.c:5891 +#, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: Se detectó una reubicación malformada para la sección %s" + +#: elf32-mips.c:8337 elf64-mips.c:5969 +#, c-format +msgid "%s: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: la reubicación CALL16 en 0x%lx no es contra un símbolo global" + +#: elf32-ppc.c:1436 elf64-ppc.c:1521 +#, c-format +msgid "" +"%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "" +"%s: compilado con -mrelocatable y enlazado con módulos compilados de forma " +"normal" + +#: elf32-ppc.c:1444 elf64-ppc.c:1529 +#, c-format +msgid "" +"%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "" +"%s: compilado de forma normal y enlazado con módulos compilados con -" +"mrelocatable" + +#: elf32-ppc.c:1568 +#, c-format +msgid "%s: Unknown special linker type %d" +msgstr "%s: Tipo de enlazador especial %d desconocido" + +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 +#, c-format +msgid "%s: relocation %s cannot be used when making a shared object" +msgstr "" +"%s: no se puede usar la reubicación %s cuando se hace un objeto compartido" + +#: elf32-ppc.c:3097 elf64-ppc.c:3716 +#, c-format +msgid "%s: unknown relocation type %d for symbol %s" +msgstr "%s: tipo de reubicación %d desconocido para el símbolo %s" + +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 +#, c-format +msgid "" +"%s: The target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "" +"%s: El objetivo (%s) de una reubicación %s está en la sección de salida " +"errónea (%s)" + +#: elf32-ppc.c:3589 +#, c-format +msgid "%s: Relocation %s is not yet supported for symbol %s." +msgstr "%s: La reubicación %s aún no tiene soporte para el símbolo %s." + +#: elf32-sh.c:1101 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: aviso: desplazamiento R_SH_USES erróneo" + +#: elf32-sh.c:1113 +#, c-format +msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: aviso: R_SH_USES señala al insn 0x%x no reconocido" + +#: elf32-sh.c:1130 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: aviso: desplazamiento de carga R_SH_USES erróneo" + +#: elf32-sh.c:1145 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: aviso: no se puede encontrar la reubicación esperada" + +#: elf32-sh.c:1202 +#, c-format +msgid "%s: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: aviso: símbolo en una sección inesperada" + +#: elf32-sh.c:1323 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: aviso: no se puede encontrar la reubicación COUNT esperada" + +#: elf32-sh.c:1332 +#, c-format +msgid "%s: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: aviso: cuenta errónea" + +#: elf32-sh.c:1741 elf32-sh.c:2132 +#, c-format +msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: fatal: desbordamiento de reubicación durante la relajación" + +#: elf32-sh.c:3267 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "" +"%s: 0x%lx: fatal: objetivo de ramificación sin alineación para la " +"reubicación de soporte de relajamiento" + +#: elf32-sparc.c:1554 elf64-sparc.c:2280 +#, c-format +msgid "%s: probably compiled without -fPIC?" +msgstr "%s: ¿Compilado probablemente sin -fPIC?" + +#: elf32-sparc.c:2007 +#, c-format +msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgstr "%s: compilado para un sistema de 64 bit y el objetivo es de 32 bit" + +#: elf32-sparc.c:2021 +#, c-format +msgid "%s: linking little endian files with big endian files" +msgstr "%s: enlazando ficheros little endian con ficheros big endian" + +#: elf32-v850.c:682 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "La variable `%s' no puede ocupar múltiples regiones de datos small" + +#: elf32-v850.c:685 +#, c-format +msgid "" +"Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "" +"La variable `%s' solamente puede estar en una de las regiones de datos " +"small, cero, y tiny" + +#: elf32-v850.c:688 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "" +"La variable `%s' no puede estar simultáneamente en las regiones de datos " +"small y cero" + +#: elf32-v850.c:691 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "" +"La variable `%s' no puede estar simultáneamente en las regiones de datos " +"small y tiny" + +#: elf32-v850.c:694 +#, c-format +msgid "" +"Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "" +"La variable `%s' no puede estar simultáneamente en las regiones de datos " +"cero y tiny" + +#: elf32-v850.c:1072 +msgid "FAILED to find previous HI16 reloc\n" +msgstr "FALLO para encontrar la reubicación HI16 previa\n" + +#: elf32-v850.c:1703 +msgid "could not locate special linker symbol __gp" +msgstr "no se puede localizar el símbolo especial del enlazador __gp" + +#: elf32-v850.c:1707 +msgid "could not locate special linker symbol __ep" +msgstr "no se puede localizar el símbolo especial del enlazador __ep" + +#: elf32-v850.c:1711 +msgid "could not locate special linker symbol __ctbp" +msgstr "no se puede localizar el símbolo especial del enlazador __ctbp" + +#: elf32-v850.c:1877 +#, c-format +msgid "%s: Architecture mismatch with previous modules" +msgstr "%s: No coincide la arquitectura con los módulos previos" + +#: elf32-v850.c:1897 +#, c-format +msgid "private flags = %lx: " +msgstr "opciones privadas = %lx: " + +#: elf32-v850.c:1902 +msgid "v850 architecture" +msgstr "arquitectura v850" + +#: elf32-v850.c:1903 +msgid "v850e architecture" +msgstr "arquitectura v850e" + +#: elf32-v850.c:1904 +msgid "v850ea architecture" +msgstr "arquitectura v850ea" + +#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 +msgid "non-zero addend in @fptr reloc" +msgstr "adición que no es cero en la reubicación @fptr" + +#: elf64-alpha.c:858 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "la reubicación GPDISP no encontró las instrucciones ldah y lda" + +#: elf64-alpha.c:2934 +#, c-format +msgid "%s: .got subsegment exceeds 64K (size %d)" +msgstr "%s: el subsegmento .got excede los 64K (tamaño %d)" + +#: elf64-alpha.c:3518 elf64-alpha.c:3530 +#, c-format +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "%s: reubicación gp relativa contra el símbolo dinámico %s" + +#: elf64-hppa.c:2070 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "" +"la entrada de cabo para %s no puede cargar .plt, desplazamiento dp = %ld" + +#: elf64-mmix.c:1271 +#, fuzzy, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "" +"%s: reubicación de registro contra un símbolo que no es registro: %s en %s" + +#: elf64-mmix.c:1276 +#, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "" +"%s: reubicación de registro contra un símbolo que no es registro: %s en %s" + +#: elf64-mmix.c:1312 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "" +"%s: la directiva LOCAL sólo es válida con un registro o un valor absoluto" + +#: elf64-mmix.c:1340 +#, c-format +msgid "" +"%s: LOCAL directive: Register $%ld is not a local register. First global " +"register is $%ld." +msgstr "" +"%s: directiva LOCAL: El registro $%ld no es un registro local. El primer " +"registro global es $%ld." + +#: elf64-mmix.c:1615 +#, c-format +msgid "" +"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " +"linked file\n" +msgstr "" +"%s: Error: definición múltiple de `%s'; el inicio de %s está definido en un " +"fichero enlazado con anterioridad\n" + +#: elf64-mmix.c:1674 +msgid "Register section has contents\n" +msgstr "La sección de registros no tiene contenido\n" + +#: elf64-ppc.c:1484 libbfd.c:1436 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "" +"%s: compilado para un sistema big endian y el objetivo es little endian" + +#: elf64-ppc.c:1486 libbfd.c:1438 +#, c-format +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "" +"%s: compilado para un sistema little endian y el objetivo es big endian" + +#: elf64-ppc.c:3350 +#, fuzzy, c-format +msgid "linkage table error against `%s'" +msgstr "desbordamiento de la tabla de enlazado contra `%s'" + +#: elf64-ppc.c:3432 +msgid "stub section size doesn't match calculated size" +msgstr "el tamaño de la sección de cabos no coincide con el tamaño calculado" + +#: elf64-ppc.c:4061 +#, c-format +msgid "%s: Relocation %s is not supported for symbol %s." +msgstr "%s: La reubicación %s no tiene soporte para el símbolo %s." + +#: elf64-ppc.c:4105 +#, c-format +msgid "%s: error: relocation %s not a multiple of 4" +msgstr "%s: error: la reubicación %s no es un múltiplo de 4" + +#: elf64-sparc.c:1277 +#, c-format +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: tipo de reubicación %d sin manejar" + +#: elf64-sparc.c:1314 +#, c-format +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "" +"%s: Solamente los registros %%g[2367] pueden ser declarados utilizando " +"STT_REGISTER" + +#: elf64-sparc.c:1334 +#, fuzzy, c-format +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" +msgstr "El registro %%g%d se usó de forma incompatible: %s en %s" + +#: elf64-sparc.c:1357 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" +msgstr "" +"El símbolo `%s' tiene tipos divergentes: previamente %s, REGISTER en %s" + +#: elf64-sparc.c:1404 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" +msgstr "" +"El símbolo `%s' tiene tipos divergentes: previamente %s, REGISTER en %s" + +#: elf64-sparc.c:3008 +#, c-format +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "" +"%s: enlazando código específico de UltraSPARC con código específico de HAL" + +#: elfcode.h:1218 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "" +"%s: la cuenta de versión (%ld) no coincide con la cuenta de símbolos (%ld)" + +#: elflink.c:434 +#, c-format +msgid "%s: Section %s is too large to add hole of %ld bytes" +msgstr "%s: La sección %s es muy grande para agregar un agujero de %ld bytes" + +#: elflink.h:1113 +#, c-format +msgid "%s: warning: unexpected redefinition of `%s'" +msgstr "%s: aviso: redefinición inesperada de `%s'" + +#: elflink.h:1784 +#, c-format +msgid "%s: %s: invalid version %u (max %d)" +msgstr "%s: %s: versión %u inválida (máximo %d)" + +#: elflink.h:1825 +#, c-format +msgid "%s: %s: invalid needed version %d" +msgstr "%s: %s: versión requerida %d inválida" + +#: elflink.h:1945 +#, c-format +msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" +msgstr "Aviso: el tamaño del símbolo `%s' cambió de %lu a %lu en %s" + +#: elflink.h:4014 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "aviso: el tipo y tamaño del símbolo dinámico `%s' no están definidos" + +#: elflink.h:4320 +#, c-format +msgid "%s: undefined versioned symbol name %s" +msgstr "%s: nombre de símbolo con versión %s sin definir" + +#: elflink.h:4544 elflink.h:4552 elflink.h:6203 elflink.h:7280 +msgid "Error: out of memory" +msgstr "Error: memoria agotada" + +#: elflink.h:4714 +msgid "Not enough memory to sort relocations" +msgstr "No hay suficiente memoria para ordenar las reubicaciones" + +#: elflink.h:5980 +#, c-format +msgid "%s: could not find output section %s for input section %s" +msgstr "" +"%s: no se puede encontrar la sección de salida %s para la sección de entrada " +"%s" + +#: elflink.h:6553 +msgid "warning: relocation against removed section; zeroing" +msgstr "aviso: reubicación contra una sección eliminada; cambiando a ceros" + +#: elflink.h:6583 +msgid "warning: relocation against removed section" +msgstr "aviso: reubicación contra una sección eliminada" + +#: elflink.h:6596 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "símbolos locales en la sección descartada %s" + +#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "El fichero de salida requiere la biblioteca compartida `%s'\n" + +#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "El fichero de salida requiere la biblioteca compartida `%s.so.%s'\n" + +#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 +#: sparclinux.c:655 sparclinux.c:705 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "El símbolo %s no está definido para composturas\n" + +#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 +msgid "Warning: fixup count mismatch\n" +msgstr "Aviso: no coincide la cuenta de composturas\n" + +#: ieee.c:235 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: la cadena es demasiado larga (%d caracteres, máximo 65535)" + +#: ieee.c:365 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: símbolo `%s' no reconocido opciones 0x%x" + +#: ieee.c:877 +#, fuzzy, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" +msgstr "%s: grabación ATI %u sin implementar para el símbolo %u" + +#: ieee.c:902 +#, c-format +msgid "%s: unexpected ATN type %d in external part" +msgstr "%s: tipo ATN %d inesperado en la parte externa" + +#: ieee.c:924 +#, c-format +msgid "%s: unexpected type after ATN" +msgstr "%s: tipo inesperado después de ATN" + +#: ihex.c:258 +#, c-format +msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" +msgstr "%s:%d: carácter `%s' inesperado en el fichero Hexadecimal de Intel\n" + +#: ihex.c:368 +#, c-format +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "" +"%s:%u: suma de comprobación errónea en el fichero Hexadecimal de Intel (se " +"esperaba %u, se obtuvo %u)" + +#: ihex.c:422 +#, c-format +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "" +"%s:%u: longitud de registro de dirección extendida errónea en el fichero " +"Hexadecimal de Intel" + +#: ihex.c:439 +#, c-format +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "" +"%s:%u: longitud de dirección de inicio extendida errónea en el fichero " +"Hexadecimal de Intel" + +#: ihex.c:456 +#, c-format +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "" +"%s:%u: longitud de registro de dirección lineal extendida errónea en el " +"fichero Hexadecimal de Intel" + +#: ihex.c:473 +#, c-format +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "" +"%s:%u: longitud de dirección de inicio lineal extendida errónea en el " +"fichero Hexadecimal de Intel" + +#: ihex.c:490 +#, c-format +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s:%u: tipo ihex %u no reconocido en el fichero Hexadecimal de Intel\n" + +#: ihex.c:610 +#, c-format +msgid "%s: internal error in ihex_read_section" +msgstr "%s: error interno en ihex_read_section" + +#: ihex.c:645 +#, c-format +msgid "%s: bad section length in ihex_read_section" +msgstr "%s: longitud de sección errónea en ihex_read_section" + +#: ihex.c:863 +#, fuzzy, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "" +"%s: la dirección 0x%s está fuera de rango en el fichero Hexadecimal de Intel" + +#: libbfd.c:492 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "no se mapea: datos=%lx mapeados%d\n" + +#: libbfd.c:495 +msgid "not mapping: env var not set\n" +msgstr "no se mapea: no se estableció la variable de ambiente\n" + +#: libbfd.c:1467 +#, fuzzy, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr " en %s línea %d en %s\n" + +#: libbfd.c:1470 +#, fuzzy, c-format +msgid "Deprecated %s called\n" +msgstr "Se llamó a %s que está deprecado" + +#: linker.c:1849 +#, c-format +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "%s: el símbolo indirecto `%s' para `%s' es un ciclo" + +#: linker.c:2745 +#, c-format +msgid "Attempt to do relocateable link with %s input and %s output" +msgstr "Se intentó hacer un enlace reubicable con entrada %s y salida %s" + +#: merge.c:897 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "%s: acceso más allá del final de la sección mezclada (%ld + %ld)" + +#: mmo.c:460 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: No hay core para asignar el nombre de sección %s\n" + +#: mmo.c:537 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: No hay core para asignar un símbolo de %d bytes de longitud\n" + +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "" +"%s: fichero mmo inválido: el valor de iniciación para $255 no es `Main'\n" + +#: mmo.c:1336 +#, c-format +msgid "" +"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " +"starting with `%s'\n" +msgstr "" +"%s: secuencia de caracteres anchos 0x%02X 0x%02X sin soporte después del " +"nombre de símbolo que inicia con `%s'\n" + +#: mmo.c:1571 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: fichero mmo inválido: código de operación-l `%d' sin soporte\n" + +#: mmo.c:1581 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "" +"%s: fichero mmo inválido: se esperaba YZ = 1 se obtuvo YZ = %d para " +"lop_quote\n" + +#: mmo.c:1617 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" +"%s: fichero mmo inválido: se esperaba z = 1 ó z = 2, se obtuvo z = %d para " +"lop_loc\n" + +#: mmo.c:1663 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" +"%s: fichero mmo inválido: se esperaba z = 1 ó z = 2, se obtuvo z = %d para " +"lop_fixo\n" + +#: mmo.c:1702 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "" +"%s: fichero mmo inválido: se esperaba y = 0, se obtuvo y = %d para " +"lop_fixrx\n" + +#: mmo.c:1711 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" +"%s: fichero mmo inválido: se esperaba z = 16 ó z = 24, se obtuvo z = %d para " +"lop_fixrx\n" + +#: mmo.c:1734 +#, c-format +msgid "" +"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " +"for lop_fixrx\n" +msgstr "" +"%s: fichero mmo inválido: el byte inicial de la palabra operando debe ser 0 " +"ó 1, se obtuvo %d para lop_fixrx\n" + +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "" +"%s: no se puede asignar el nombre de fichero para el número de fichero %d, %" +"d bytes\n" + +#: mmo.c:1777 +#, c-format +msgid "" +"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" +"%s: fichero mmo inválido: el número de fichero %d `%s' ya se había " +"introducido como `%s'\n" + +#: mmo.c:1790 +#, c-format +msgid "" +"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" +"%s: fichero mmo inválido: no se especificó un nombre de fichero para el " +"número %d antes de utilizarse\n" + +#: mmo.c:1896 +#, c-format +msgid "" +"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" +"%s: fichero mmo inválido: los campos y y z de lop_stab no son cero, y: %d, " +"z: %d\n" + +#: mmo.c:1932 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "" +"%s: fichero mmo inválido: lop_end no es el último elemento en el fichero\n" + +#: mmo.c:1945 +#, c-format +msgid "" +"%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras " +"to the preceding lop_stab (%ld)\n" +msgstr "" +"%s: fichero mmo inválido: YZ de lop_end (%ld) no es igual al número de " +"tetras del lop_stab precedente (%ld)\n" + +#: mmo.c:2610 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: tabla de símbolos inválida: símbolo `%s' duplicado\n" + +#: mmo.c:2898 +#, c-format +msgid "" +"%s: Bad symbol definition: `Main' set to %s rather than the start address %" +"s\n" +msgstr "" +"%s: Definición de símbolo errónea: `Main' se estableción como %s en lugar de " +"la dirección de inicio %s\n" + +#: mmo.c:2932 +#, c-format +msgid "" +"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " +"%d. Only `Main' will be emitted.\n" +msgstr "" +"%s: aviso: la tabla de símbolos es demasiado grande para mmo, es más grande " +"que 65535 words de 32-bit: %d. Sólo se emitirá `Main'.\n" + +#: mmo.c:2977 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "" +"%s: error interno, la tabla de símbolos cambió de tamaño de %d a %d words\n" + +#: mmo.c:3032 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "" +"%s: error interno, la sección interna de registros %s tiene contenido\n" + +#: mmo.c:3084 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: no hay registros iniciados; longitud de sección 0\n" + +#: mmo.c:3090 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: demasiados registros iniciados: longitud de sección %ld\n" + +#: mmo.c:3095 +#, c-format +msgid "" +"%s: invalid start address for initialized registers of length %ld: 0x%lx%" +"08lx\n" +msgstr "" +"%s: dirección de inicio inválida para los registros iniciados de longitud %" +"ld: 0x%lx%08lx\n" + +#: oasys.c:1036 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: no se puede representar la sección `%s' en oasys" + +#: osf-core.c:132 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Tipo de sección de fichero núcleo OSF/1 %d sin manejar\n" + +#: pe-mips.c:658 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "%s: `ld -r' no tiene soporte con objetos PE MIPS\n" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:794 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "%s: %s sin implementar\n" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "%s: salto demasiado lejos\n" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "%s: pair/reflo erróneo después de refhi\n" + +#. XXX code yet to be written. +#: peicode.h:785 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: Tipo de importación sin manejar; %x" + +#: peicode.h:790 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: Tipo de importación no reconocida; %x" + +#: peicode.h:804 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: Tipo de nombre de importación no reconocida; %x" + +#: peicode.h:1162 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "" +"%s: Tipo de máquina (0x%x) no reconocida en el archivo de Formato de " +"Importación de Bibliotecas" + +#: peicode.h:1174 +#, c-format +msgid "" +"%s: Recognised but unhandled machine type (0x%x) in Import Library Format " +"archive" +msgstr "" +"%s: Tipo de máquina (0x%x) reconocida pero sin manejar en el archivo de " +"Formato de Importación de Bibliotecas" + +#: peicode.h:1191 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "" +"%s: el tamaño del campo es cero en el encabezado del Formato de Importación " +"de Bibliotecas" + +#: peicode.h:1219 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: la cadena no termina en null en el fichero objeto ILF." + +#: ppcboot.c:416 +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"encabezado de ppcboot:\n" + +#: ppcboot.c:417 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Desplazamiento de entrada = 0x%.8lx (%ld)\n" + +#: ppcboot.c:418 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Longitud = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Campo de opciones = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Nombre de la partición = \"%s\"\n" + +#: ppcboot.c:446 +#, c-format +msgid "" +"\n" +"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "" +"\n" +"Partición[%d] inicio = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:452 +#, c-format +msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "Partición[%d] fin = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Partición[%d] sector = 0x%.8lx (%ld)\n" + +#: ppcboot.c:459 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Partición[%d] longitud = 0x%.8lx (%ld)\n" + +#: som.c:5402 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers sin implementar" + +#: srec.c:301 +#, c-format +msgid "%s:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: Caractér `%s' inesperado en el fichero S-record\n" + +#: syms.c:998 +msgid "Unsupported .stab relocation" +msgstr "Reubicación .stab sin soporte" + +#: vms-gsd.c:356 +#, c-format +msgid "bfd_make_section (%s) failed" +msgstr "bfd_make_section (%s) falló" + +#: vms-gsd.c:371 +#, c-format +msgid "bfd_set_section_flags (%s, %x) failed" +msgstr "bfd_set_section_flags (%s, %x) falló" + +#: vms-gsd.c:407 +#, c-format +msgid "Size mismatch section %s=%lx, %s=%lx" +msgstr "No coincide el tamaño de la sección %s=%lx, %s=%lx" + +#: vms-gsd.c:704 +#, c-format +msgid "unknown gsd/egsd subtype %d" +msgstr "subtipo de gsd/egsd %d desconocido" + +#: vms-hdr.c:406 +msgid "Object module NOT error-free !\n" +msgstr "¡ El módulo objeto NO está libre de errores !\n" + +#: vms-misc.c:543 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "Desbordamiento de la pila (%d) en _bfd_vms_push" + +#: vms-misc.c:561 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "Desbordamiento por debajo de la pila en _bfd_vms_pop" + +#: vms-misc.c:919 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "se llamó _bfd_vms_output_counted con cero bytes" + +#: vms-misc.c:924 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "se llamó _bfd_vms_output_counted con demasiados bytes" + +#: vms-misc.c:1055 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "El símbolo %s fue reemplazado por %s\n" + +#: vms-misc.c:1117 +#, c-format +msgid "failed to enter %s" +msgstr "falló la introducción de %s" + +#: vms-tir.c:81 +msgid "No Mem !" +msgstr "¡ No hay Memoria !" + +#: vms-tir.c:362 +#, fuzzy, c-format +msgid "bad section index in %s" +msgstr "Índice de sección erróneo en ETIR_S_C_STA_PQ" + +#: vms-tir.c:375 +#, fuzzy, c-format +msgid "unsupported STA cmd %s" +msgstr "Orden STA %d sin soporte" + +#: vms-tir.c:380 vms-tir.c:1240 +#, fuzzy, c-format +msgid "reserved STA cmd %d" +msgstr "Orden STA %d reservada" + +#: vms-tir.c:491 vms-tir.c:514 +#, fuzzy, c-format +msgid "%s: no symbol \"%s\"" +msgstr "%s: no hay tal símbolo" + +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829 +#: vms-tir.c:838 vms-tir.c:1563 +#, fuzzy, c-format +msgid "%s: not supported" +msgstr "no tiene soporte para" + +#: vms-tir.c:586 vms-tir.c:1418 +#, fuzzy, c-format +msgid "%s: not implemented" +msgstr "%s: %s sin implementar\n" + +#: vms-tir.c:590 vms-tir.c:1422 +#, fuzzy, c-format +msgid "reserved STO cmd %d" +msgstr "Orden STO %d reservada" + +#: vms-tir.c:708 vms-tir.c:1568 +#, fuzzy, c-format +msgid "reserved OPR cmd %d" +msgstr "Orden OPR %d reservada" + +#: vms-tir.c:776 vms-tir.c:1632 +#, fuzzy, c-format +msgid "reserved CTL cmd %d" +msgstr "Orden CTL %d reservada" + +#. stack byte from image +#. arg: none. +#: vms-tir.c:1148 +#, fuzzy +msgid "stack-from-image not implemented" +msgstr "Pila-desde-imagen sin implementar" + +#: vms-tir.c:1166 +#, fuzzy +msgid "stack-entry-mask not fully implemented" +msgstr "Pila-máscara-entrada no está completamente implementado" + +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor +#. +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1180 +msgid "PASSMECH not fully implemented" +msgstr "PASSMECH no está completamente implementado" + +#: vms-tir.c:1199 +#, fuzzy +msgid "stack-local-symbol not fully implemented" +msgstr "Pila-símbolo-local no está completamente implementado" + +#: vms-tir.c:1212 +#, fuzzy +msgid "stack-literal not fully implemented" +msgstr "Pila-literal no está completamente implementado" + +#: vms-tir.c:1233 +#, fuzzy +msgid "stack-local-symbol-entry-point-mask not fully implemented" +msgstr "" +"Pila-símbolo-local-máscara-punto-entrada no está completamente implementado" + +#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611 +#: vms-tir.c:1619 vms-tir.c:1627 +#, fuzzy, c-format +msgid "%s: not fully implemented" +msgstr "PASSMECH no está completamente implementado" + +#: vms-tir.c:1684 +#, fuzzy, c-format +msgid "obj code %d not found" +msgstr "No se encontró el código objeto %d" + +#: vms-tir.c:2019 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC sin reubicaciones en la sección %s" + +#: vms-tir.c:2307 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Reubicación %s sin manejar" + +#: xcofflink.c:1241 +#, c-format +msgid "%s: `%s' has line numbers but no enclosing section" +msgstr "%s: `%s' tiene números de línea pero no una sección contenedora" + +#: xcofflink.c:1294 +#, c-format +msgid "%s: class %d symbol `%s' has no aux entries" +msgstr "%s: clase %d símbolo `%s' no tiene entradas auxiliares" + +#: xcofflink.c:1317 +#, c-format +msgid "%s: symbol `%s' has unrecognized csect type %d" +msgstr "%s: el símbolo `%s' tiene un tipo csect %d no reconocido" + +#: xcofflink.c:1329 +#, c-format +msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: símbolo XTY_ER `%s' erróneo: clase %d scnum %d scnlen %d" + +#: xcofflink.c:1365 +#, c-format +msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: símbolo XMC_TCO `%s' es clase %d scnlen %d" + +#: xcofflink.c:1517 +#, c-format +msgid "%s: csect `%s' not in enclosing section" +msgstr "%s: csect `%s' no está contenido en una sección" + +#: xcofflink.c:1624 +#, c-format +msgid "%s: misplaced XTY_LD `%s'" +msgstr "%s: XTY_LD `%s' mal ubicado" + +#: xcofflink.c:1948 +#, c-format +msgid "%s: reloc %s:%d not in csect" +msgstr "%s: la reubicación %s:%d no está en csect" + +#: xcofflink.c:2083 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: objeto compartido XCOFF cuando no se produce salida XCOFF" + +#: xcofflink.c:2104 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: objeto dinámico sin sección .loader" + +#: xcofflink.c:2749 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: no hay tal símbolo" + +#: xcofflink.c:2890 +msgid "error: undefined symbol __rtinit" +msgstr "error: símbolo __rtinit indefinido" + +#: xcofflink.c:3458 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "aviso: intento de exportar el símbolo sin definir `%s'" + +#: xcofflink.c:4452 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "" +"Desbordamiento de TOC: 0x%lx > 0x10000; pruebe -mminimal-toc al compilar" + +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 +#, c-format +msgid "%s: loader reloc in unrecognized section `%s'" +msgstr "%s: reubicación del cargador en la sección `%s' no reconocida" + +#: xcofflink.c:5314 xcofflink.c:6128 +#, c-format +msgid "%s: `%s' in loader reloc but not loader sym" +msgstr "" +"%s: `%s' en la reubicación del cargador pero no es un símbolo del cargador" + +#: xcofflink.c:5329 +#, c-format +msgid "%s: loader reloc in read-only section %s" +msgstr "%s: reubicación del cargador en la sección de sólo lectura %s" + +#: elf32-ia64.c:2189 elf64-ia64.c:2189 +msgid "@pltoff reloc against local symbol" +msgstr "reubicación @pltoff contra un símbolo local" + +#: elf32-ia64.c:3413 elf64-ia64.c:3413 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: segmento de datos short desbordado (0x%lx >= 0x400000)" + +#: elf32-ia64.c:3424 elf64-ia64.c:3424 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp no cubre el segmento de datos short" + +#: elf32-ia64.c:3728 elf64-ia64.c:3728 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "%s: enlazando código que no es pic en una biblioteca compartida" + +#: elf32-ia64.c:3761 elf64-ia64.c:3761 +#, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: reubicación @gprel contra el símbolo dinámico %s" + +#: elf32-ia64.c:3900 elf64-ia64.c:3900 +#, c-format +msgid "%s: dynamic relocation against speculation fixup" +msgstr "%s: reubicación dinámica contra una compostura de especulación" + +#: elf32-ia64.c:3908 elf64-ia64.c:3908 +#, c-format +msgid "%s: speculation fixup against undefined weak symbol" +msgstr "%s: compostura de especulación contra un símbolo débil indefinido" + +#: elf32-ia64.c:4092 elf64-ia64.c:4092 +msgid "unsupported reloc" +msgstr "reubicación sin soporte" + +#: elf32-ia64.c:4372 elf64-ia64.c:4372 +#, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "" +"%s: enlazando deferencias-captura-en-NULL con ficheros que no son de captura" + +#: elf32-ia64.c:4381 elf64-ia64.c:4381 +#, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "%s: enlazando ficheros big endian con ficheros little endian" + +#: elf32-ia64.c:4390 elf64-ia64.c:4390 +#, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "%s: enlazando ficheros de 64-bit con ficheros de 32-bit" + +#: elf32-ia64.c:4399 elf64-ia64.c:4399 +#, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "" +"%s: enlazando ficheros de gp constante con ficheros con gp no constante" + +#: elf32-ia64.c:4409 elf64-ia64.c:4409 +#, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "" +"%s: enlazando ficheros de pic automático con ficheros sin pic automático" + +#: peigen.c:962 pepigen.c:962 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: desbordamiento de número de línea: 0x%lx > 0xffff" + +#: peigen.c:979 pepigen.c:979 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: desbordamiento de reubicación 1: 0x%lx > 0xffff" + +#: peigen.c:993 pepigen.c:993 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Directorio de Exportación [.edata (o donde quiera que se encuentre)]" + +#: peigen.c:994 pepigen.c:994 +msgid "Import Directory [parts of .idata]" +msgstr "Directorio de Importación [partes de .idata]" + +#: peigen.c:995 pepigen.c:995 +msgid "Resource Directory [.rsrc]" +msgstr "Directorio de Recursos [.rsrc]" + +#: peigen.c:996 pepigen.c:996 +msgid "Exception Directory [.pdata]" +msgstr "Directorio de Excepciones [.pdata]" + +#: peigen.c:997 pepigen.c:997 +msgid "Security Directory" +msgstr "Directorio de Seguridad" + +#: peigen.c:998 pepigen.c:998 +msgid "Base Relocation Directory [.reloc]" +msgstr "Directorio de Reubicación Base [.reloc]" + +#: peigen.c:999 pepigen.c:999 +msgid "Debug Directory" +msgstr "Directorio de Depuración" + +#: peigen.c:1000 pepigen.c:1000 +msgid "Description Directory" +msgstr "Directorio de Descripciones" + +#: peigen.c:1001 pepigen.c:1001 +msgid "Special Directory" +msgstr "Directorio Especial" + +#: peigen.c:1002 pepigen.c:1002 +msgid "Thread Storage Directory [.tls]" +msgstr "Directorio de Almacenamiento de Hilos [.tls]" + +#: peigen.c:1003 pepigen.c:1003 +msgid "Load Configuration Directory" +msgstr "Directorio de Carga de Configuraciones" + +#: peigen.c:1004 pepigen.c:1004 +msgid "Bound Import Directory" +msgstr "Directorio de Importación de Relaciones" + +#: peigen.c:1005 pepigen.c:1005 +msgid "Import Address Table Directory" +msgstr "Directorio de Importación de Tablas de Direcciones" + +#: peigen.c:1006 pepigen.c:1006 +msgid "Delay Import Directory" +msgstr "Directorio de Retardo de Importación" + +#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +msgid "Reserved" +msgstr "Reservado" + +#: peigen.c:1071 pepigen.c:1071 +msgid "" +"\n" +"There is an import table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Hay una tabla de importación, pero la sección que la contiene no se puede " +"encontrar\n" + +#: peigen.c:1076 pepigen.c:1076 +#, c-format +msgid "" +"\n" +"There is an import table in %s at 0x%lx\n" +msgstr "" +"\n" +"Hay una tabla de importación en %s en 0x%lx\n" + +#: peigen.c:1113 pepigen.c:1113 +#, c-format +msgid "" +"\n" +"Function descriptor located at the start address: %04lx\n" +msgstr "" +"\n" +"Se localizó el descriptor de función en la dirección de inicio: %04lx\n" + +#: peigen.c:1116 pepigen.c:1116 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "" +"\tcódigo-base %08lx tabla-de-contenidos (cargable/actual) %08lx/%08lx\n" + +#: peigen.c:1122 pepigen.c:1122 +msgid "" +"\n" +"No reldata section! Function descriptor not decoded.\n" +msgstr "" +"\n" +"¡No está la sección reldata! No se decodificó el descriptor de función.\n" + +#: peigen.c:1127 pepigen.c:1127 +#, c-format +msgid "" +"\n" +"The Import Tables (interpreted %s section contents)\n" +msgstr "" +"\n" +"Las Tablas de Importación (se interpretaron los contenidos de la sección %" +"s)\n" + +#: peigen.c:1130 pepigen.c:1130 +#, fuzzy +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" +msgstr " Tabla Estampa Cadena Nombre Thunk\n" + +#: peigen.c:1180 pepigen.c:1180 +#, c-format +msgid "" +"\n" +"\tDLL Name: %s\n" +msgstr "" +"\n" +"\tNombre de la DLL: %s\n" + +#: peigen.c:1184 peigen.c:1247 pepigen.c:1184 pepigen.c:1247 +msgid "\tvma: Hint/Ord Member-Name\n" +msgstr "\tvma: Nombre de Miembro de Pista/Ord\n" + +#: peigen.c:1246 pepigen.c:1246 +msgid "\tThe Import Address Table (difference found)\n" +msgstr "" +"\tLa Tabla de Importación de Direcciones (se encontró una diferencia)\n" + +#: peigen.c:1253 pepigen.c:1253 +msgid "\t>>> Ran out of IAT members!\n" +msgstr "\t>>> ¡Se terminaron los miembros IAT!\n" + +#: peigen.c:1271 pepigen.c:1271 +msgid "\tThe Import Address Table is identical\n" +msgstr "\tLa Tabla de Importación de Direcciones es idéntica\n" + +#: peigen.c:1343 pepigen.c:1343 +msgid "" +"\n" +"There is an export table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Hay una tabla de exportación, pero la sección que la contiene no se puede " +"encontrar\n" + +#: peigen.c:1348 pepigen.c:1348 +#, c-format +msgid "" +"\n" +"There is an export table in %s at 0x%lx\n" +msgstr "" +"\n" +"Hay una tabla de exportación en %s en 0x%lx\n" + +#: peigen.c:1379 pepigen.c:1379 +#, c-format +msgid "" +"\n" +"The Export Tables (interpreted %s section contents)\n" +"\n" +msgstr "" +"\n" +"Las Tablas de Exportación (se interpretaron los contenidos de la sección %" +"s)\n" +"\n" + +#: peigen.c:1383 pepigen.c:1383 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Opciones de Exportación \t\t\t%lx\n" + +#: peigen.c:1386 pepigen.c:1386 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "marca de Hora/Fecha \t\t%lx\n" + +#: peigen.c:1389 pepigen.c:1389 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Mayor/Menor \t\t\t%d/%d\n" + +#: peigen.c:1392 pepigen.c:1392 +msgid "Name \t\t\t\t" +msgstr "Nombre \t\t\t\t" + +#: peigen.c:1398 pepigen.c:1398 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "Base Ordinal \t\t\t%ld\n" + +#: peigen.c:1401 pepigen.c:1401 +msgid "Number in:\n" +msgstr "Número en:\n" + +#: peigen.c:1404 pepigen.c:1404 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\tTabla de Exportación de Direcciones \t\t%08lx\n" + +#: peigen.c:1408 pepigen.c:1408 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\tTabla [Nombre Apuntador/Ordinal]\t%08lx\n" + +#: peigen.c:1411 pepigen.c:1411 +msgid "Table Addresses\n" +msgstr "Direcciones de la Tabla\n" + +#: peigen.c:1414 pepigen.c:1414 +msgid "\tExport Address Table \t\t" +msgstr "\tTabla de Exportación de Direcciones \t\t" + +#: peigen.c:1419 pepigen.c:1419 +msgid "\tName Pointer Table \t\t" +msgstr "\tNombre de la Tabla de Apuntadores \t\t" + +# continuar aqui +#: peigen.c:1424 pepigen.c:1424 +msgid "\tOrdinal Table \t\t\t" +msgstr "\tTabla Ordinal \t\t\t" + +#: peigen.c:1439 pepigen.c:1439 +#, c-format +msgid "" +"\n" +"Export Address Table -- Ordinal Base %ld\n" +msgstr "" +"\n" +"Tabla de Exportación de Direcciones -- Base Ordinal %ld\n" + +#: peigen.c:1458 pepigen.c:1458 +msgid "Forwarder RVA" +msgstr "RVA Adelantador" + +#: peigen.c:1469 pepigen.c:1469 +msgid "Export RVA" +msgstr "RVA Exportador" + +#: peigen.c:1476 pepigen.c:1476 +msgid "" +"\n" +"[Ordinal/Name Pointer] Table\n" +msgstr "" +"\n" +"Tabla [Apuntador a Ordinal/Nombre]\n" + +#: peigen.c:1531 pepigen.c:1531 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "Aviso, el tamaño de la sección .pdata (%ld) no es un múltiplo de %d\n" + +#: peigen.c:1535 pepigen.c:1535 +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"La Tabla de Funciones (se interpretaron los contenidos de la sección ." +"pdata)\n" + +#: peigen.c:1538 pepigen.c:1538 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\tDirección Inicio Dirección Fin Información Desenvuelta\n" + +#: peigen.c:1540 pepigen.c:1540 +#, fuzzy +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" +msgstr " vma:\t\tInicio Fin EH EH FinPrólogo Excepción\n" + +#: peigen.c:1610 pepigen.c:1610 +msgid " Register save millicode" +msgstr " Registro para guardar milicódigo" + +#: peigen.c:1613 pepigen.c:1613 +msgid " Register restore millicode" +msgstr " Registro para restaurar milicódigo" + +#: peigen.c:1616 pepigen.c:1616 +msgid " Glue code sequence" +msgstr " Secuencia de código pegamento" + +#: peigen.c:1668 pepigen.c:1668 +msgid "" +"\n" +"\n" +"PE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "" +"\n" +"\n" +"Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la " +"sección .reloc)\n" + +#: peigen.c:1698 pepigen.c:1698 +#, c-format +msgid "" +"\n" +"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "" +"\n" +"Dirección Virtual: %08lx Tamaño del trozo %ld (0x%lx) Número de composturas %" +"ld\n" + +#: peigen.c:1711 pepigen.c:1711 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\treubicación %4d desplazamiento %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1751 pepigen.c:1751 +#, c-format +msgid "" +"\n" +"Characteristics 0x%x\n" +msgstr "" +"\n" +"Características 0x%x\n" + +#~ msgid "GP relative relocation when GP not defined" +#~ msgstr "reubicación GP relativa cuando GP no estaba definido" + +#~ msgid "Warning: input file %s supports interworking, whereas %s does not." +#~ msgstr "" +#~ "Aviso: el fichero de entrada %s soporta interoperabilidad, mientras que %" +#~ "s no." + +#~ msgid "" +#~ "Warning: input file %s does not support interworking, whereas %s does." +#~ msgstr "" +#~ "Aviso: el fichero de entrada %s no soporta interoperabilidad, mientras " +#~ "que %s sí." + +# FIXME: Revisar en el código si son abreviaturas comunes, o corresponden a +# partes fijas dentro del programa. cfuga +#~ msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +#~ msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" + +#~ msgid "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x" +#~ "%.8lx%s\n" +#~ msgstr "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, nombre = %s, núm sim = %d, opciones = " +#~ "0x%.8lx%s\n" + +#~ msgid "" +#~ "Warning: Not setting interwork flag of %s since it has already been " +#~ "specified as non-interworking" +#~ msgstr "" +#~ "Aviso: No se activa la opción de interoperación de %s ya que ya había " +#~ "sido especificada como no interoperable" + +#~ msgid "Warning: Clearing the interwork flag of %s due to outside request" +#~ msgstr "" +#~ "Aviso: Limpiando la opción de interoperación de %s debido a una petición " +#~ "externa" + +#~ msgid "(unknown)" +#~ msgstr "(desconocido)" + +#~ msgid " previously %s in %s" +#~ msgstr " previamente %s en %s" + +#~ msgid "Symbol `%s' has differing types: %s in %s" +#~ msgstr "El símbolo `%s' tiene tipos diferentes: %s en %s" + +#~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_GBL: no está el símbolo \"%s\"" + +#~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_CA: no está el símbolo \"%s\"" + +#~ msgid "ETIR_S_C_STO_RB/AB: Not supported" +#~ msgstr "ETIR_S_C_STO_RB/AB: Sin soporte" + +#~ msgid "ETIR_S_C_STO_LP_PSB: Not supported" +#~ msgstr "ETIR_S_C_STO_LP_PSB: Sin soporte" + +#~ msgid "ETIR_S_C_STO_HINT_GBL: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_GBL: sin implementar" + +#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_PS: sin implementar" + +#~ msgid "ETIR_S_C_OPR_INSV: Not supported" +#~ msgstr "ETIR_S_C_OPR_INSV: Sin soporte" + +#~ msgid "ETIR_S_C_OPR_USH: Not supported" +#~ msgstr "ETIR_S_C_OPR_USH: Sin soporte" + +#~ msgid "ETIR_S_C_OPR_ROT: Not supported" +#~ msgstr "ETIR_S_C_OPR_ROT: Sin soporte" + +#~ msgid "ETIR_S_C_OPR_REDEF: Not supported" +#~ msgstr "ETIR_S_C_OPR_REDEF: Sin soporte" + +#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" +#~ msgstr "ETIR_S_C_OPR_DFLIT: Sin soporte" + +#~ msgid "ETIR_S_C_STC_LP: not supported" +#~ msgstr "ETIR_S_C_STC_LP: sin soporte" + +#~ msgid "ETIR_S_C_STC_GBL: not supported" +#~ msgstr "ETIR_S_C_STC_GBL: sin soporte" + +#~ msgid "ETIR_S_C_STC_GCA: not supported" +#~ msgstr "ETIR_S_C_STC_GCA: sin soporte" + +#~ msgid "ETIR_S_C_STC_PS: not supported" +#~ msgstr "ETIR_S_C_STC_PS: sin soporte" + +#~ msgid "Unimplemented STO cmd %d" +#~ msgstr "Orden STO %d sin implementar" + +#~ msgid "TIR_S_C_OPR_ASH incomplete" +#~ msgstr "TIR_S_C_OPR_ASH incompleto" + +#~ msgid "TIR_S_C_OPR_USH incomplete" +#~ msgstr "TIR_S_C_OPR_USH incompleto" + +#~ msgid "TIR_S_C_OPR_ROT incomplete" +#~ msgstr "TIR_S_C_OPR_ROT incompleto" + +#~ msgid "TIR_S_C_OPR_REDEF not supported" +#~ msgstr "TIR_S_C_OPR_REDEF sin soporte" + +#~ msgid "TIR_S_C_OPR_DFLIT not supported" +#~ msgstr "TIR_S_C_OPR_DFLIT sin soporte" + +#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_DFLOC no está completamente implementado" + +#~ msgid "TIR_S_C_CTL_STLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_STLOC no está completamente implementado" + +#~ msgid "TIR_S_C_CTL_STKDL not fully implemented" +#~ msgstr "TIR_S_C_CTL_STKDL no está completamente implementado" + +#~ msgid " vma: Hint Time Forward DLL First\n" +#~ msgstr " vma: Pista Tiempo Adelante DLL Primero\n" + +#~ msgid " \t\tAddress Address Handler Data Address Mask\n" +#~ msgstr " \t\tDirección Dirección Manejador Datos Dirección Máscara\n" + +#~ msgid "float" +#~ msgstr "coma flotante" + +#~ msgid "integer" +#~ msgstr "entero" + +# FIXME: Revisar el contexto en el código para confirmar esta traducción. cfuga +#~ msgid "soft" +#~ msgstr "suave" + +#~ msgid "hard" +#~ msgstr "duro" + +#~ msgid "Warning: %s %s interworking, whereas %s %s" +#~ msgstr "Aviso: %s %s interoperatibilidad, mientras que %s %s" + +#~ msgid "supports" +#~ msgstr "tiene soporte para" + +#~ msgid "does not" +#~ msgstr "no" + +#~ msgid "does" +#~ msgstr " " + +#~ msgid "%s(%s+0x%lx): cannot find stub entry %s" +#~ msgstr "%s(%s+0x%lx): no se puede encontrar la entrada de cabo %s" + +#~ msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections" +#~ msgstr "" +#~ "%s(%s+0x%lx): no se puede reubicar %s, recompile con -ffuncion-sections" + +#~ msgid "" +#~ "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section " +#~ "= 0x%.8lx\n" +#~ msgstr "" +#~ "creando el símbolo de sección, nombre = %s, valor = 0x%.8lx, índice = %d, " +#~ "sección 0x%.8lx\n" + +#~ msgid " whereas segment starts at 0x%x" +#~ msgstr " mientras que el segmento inicia en 0x%x" diff -uprN binutils-2.11.92.0.12.3/bfd/po/fr.po binutils-2.11.93.0.2/bfd/po/fr.po --- binutils-2.11.92.0.12.3/bfd/po/fr.po Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/po/fr.po Sun Feb 3 11:22:30 2002 @@ -4,1670 +4,2022 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bfd 2.11\n" -"POT-Creation-Date: 2001-01-11 11:54-0800\n" -"PO-Revision-Date: 2001-09-19 08:00-0500\n" +"Project-Id-Version: GNU bfd 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-31 17:07+0000\n" +"PO-Revision-Date: 2002-01-24 08:00-0500\n" "Last-Translator: Michel Robitaille \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: aout-adobe.c:189 +#: aout-adobe.c:196 #, c-format msgid "%s: Unknown section type in a.out.adobe file: %x\n" msgstr "%s: type de section inconnu dans le fichier a.out.adobe: %x\n" -#: aout-cris.c:205 +#: aout-cris.c:208 #, c-format msgid "%s: Invalid relocation type exported: %d" msgstr "%s: relocalisation invalide du type exporté: %d" -#: aout-cris.c:249 +#: aout-cris.c:252 #, c-format msgid "%s: Invalid relocation type imported: %d" msgstr "%s: relocalisation invalide du type importé: %d" -#: aout-cris.c:260 +#: aout-cris.c:263 #, c-format msgid "%s: Bad relocation record imported: %d" msgstr "%s: mauvais enregistrement de relocalisation importé: %d" -#: aoutx.h:1259 aoutx.h:1673 +#: aoutx.h:1282 aoutx.h:1699 #, c-format msgid "%s: can not represent section `%s' in a.out object file format" -msgstr "%s: ne peut représenter la section `%s' dans le fichier format objet a.out" +msgstr "" +"%s: ne peut représenter la section `%s' dans le fichier format objet a.out" -#: aoutx.h:1643 +#: aoutx.h:1669 #, c-format -msgid "%s: can not represent section for symbol `%s' in a.out object file format" -msgstr "%s: ne peut représenter la section pour le symbole `%s' dans le fichier format objet a.out" +msgid "" +"%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "" +"%s: ne peut représenter la section pour le symbole `%s' dans le fichier " +"format objet a.out" -#: aoutx.h:1645 +#: aoutx.h:1671 msgid "*unknown*" msgstr "*inconnu*" -#: aoutx.h:3684 +#: aoutx.h:3735 #, c-format msgid "%s: relocateable link from %s to %s not supported" msgstr "%s: relocalisation de liens de %s vers %s n'est pas supporté" -#: archive.c:1820 +#: archive.c:1826 msgid "Warning: writing archive was slow: rewriting timestamp\n" -msgstr "AVERTISSEMENT: l'écriture de l'archive était lente: réécriture du cachet de date-heure\n" +msgstr "" +"AVERTISSEMENT: l'écriture de l'archive était lente: réécriture du cachet de " +"date-heure\n" -#: archive.c:2086 +#: archive.c:2093 msgid "Reading archive file mod timestamp" msgstr "Lecture du cachet date-heure modifé du fichier d'archive" #. FIXME: bfd can't call perror. -#: archive.c:2113 +#: archive.c:2120 msgid "Writing updated armap timestamp" msgstr "Écriture du cachet date-heure armap mise à jour" -#: bfd.c:273 +#: bfd.c:274 msgid "No error" msgstr "Pas d'erreur" -#: bfd.c:274 +#: bfd.c:275 msgid "System call error" msgstr "Erreur d'appel système" -#: bfd.c:275 +#: bfd.c:276 msgid "Invalid bfd target" msgstr "cible bfd invalide" -#: bfd.c:276 +#: bfd.c:277 msgid "File in wrong format" msgstr "Fichier dans un mauvais format" -#: bfd.c:277 +#: bfd.c:278 +msgid "Archive object file in wrong format" +msgstr "Fichier objet d'archive dans un mauvais format" + +#: bfd.c:279 msgid "Invalid operation" msgstr "Opération invalide" -#: bfd.c:278 +#: bfd.c:280 msgid "Memory exhausted" msgstr "Mémoire épuisée" -#: bfd.c:279 +#: bfd.c:281 msgid "No symbols" msgstr "Aucun symbole" -#: bfd.c:280 +#: bfd.c:282 msgid "Archive has no index; run ranlib to add one" msgstr "L'archive n'a pas d'index; exécuter ranlib pour en ajouter un" -#: bfd.c:281 +#: bfd.c:283 msgid "No more archived files" msgstr "Aucun autre fichier d'archive" -#: bfd.c:282 +#: bfd.c:284 msgid "Malformed archive" msgstr "Archive mal formé" -#: bfd.c:283 +#: bfd.c:285 msgid "File format not recognized" msgstr "Format de fichier non reconnu" -#: bfd.c:284 +#: bfd.c:286 msgid "File format is ambiguous" msgstr "Format de fichier ambiguë" -#: bfd.c:285 +#: bfd.c:287 msgid "Section has no contents" msgstr "Section sans contenu" -#: bfd.c:286 +#: bfd.c:288 msgid "Nonrepresentable section on output" msgstr "Section non-représentable pour la sortie" -#: bfd.c:287 +#: bfd.c:289 msgid "Symbol needs debug section which does not exist" msgstr "Symboles ont besoin de la section de débug qui est inexistente" -#: bfd.c:288 +#: bfd.c:290 msgid "Bad value" msgstr "Mauvaise valeur" -#: bfd.c:289 +#: bfd.c:291 msgid "File truncated" msgstr "Fichier tronqué" -#: bfd.c:290 +#: bfd.c:292 msgid "File too big" msgstr "Fichier trop gros" -#: bfd.c:291 +#: bfd.c:293 msgid "#" msgstr "#" -#: bfd.c:675 +#: bfd.c:700 #, c-format -msgid "bfd assertion fail %s:%d" -msgstr "échec d'assertion bfd %s:%d" +msgid "BFD %s assertion fail %s:%d" +msgstr "BFD assertion %s a échoué %s:%d" -#: bfd.c:693 +#: bfd.c:719 #, c-format -msgid "BFD internal error, aborting at %s line %d in %s\n" -msgstr "Erreur interne BFD, abandon à %s, ligne %d dans %s\n" +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "BFD erreur interne %s, abandon à %s, ligne %d dans %s\n" -#: bfd.c:697 -#, c-format -msgid "BFD internal error, aborting at %s line %d\n" -msgstr "Erreur interne BFD, abandon à %s, ligne %d\n" +#: bfd.c:723 +#, fuzzy, c-format +msgid "BFD %s internal error, aborting at %s line %d\n" +msgstr "BFD erreur interne %s, abandon à %s, ligne %d\n" -#: bfd.c:699 +#: bfd.c:725 msgid "Please report this bug.\n" msgstr "SVP rapporter cette anomalie.\n" -#: binary.c:303 +#: binary.c:306 #, c-format msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." -msgstr "AVERTISSEMENT: écriture de la section `%s' vers un énorme décalage (ie negatif) dans le fichier 0x%lx." +msgstr "" +"AVERTISSEMENT: écriture de la section `%s' vers un énorme décalage (ie " +"négatif) dans le fichier 0x%lx." -#: coff-a29k.c:122 +#: coff-a29k.c:119 msgid "Missing IHCONST" msgstr "IHCONST manquant" -#: coff-a29k.c:181 +#: coff-a29k.c:180 msgid "Missing IHIHALF" msgstr "IHIHALF manquant" -#: coff-a29k.c:213 +#: coff-a29k.c:212 coff-or32.c:228 msgid "Unrecognized reloc" msgstr "Relocalisation non reconnue" -#: coff-a29k.c:425 +#: coff-a29k.c:408 msgid "missing IHCONST reloc" msgstr "IHCONST de relocalisation manquant" -#: coff-a29k.c:516 +#: coff-a29k.c:498 msgid "missing IHIHALF reloc" msgstr "IHIHALF de relocalisation manquant" -#: coff-alpha.c:880 coff-alpha.c:917 +#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 msgid "GP relative relocation used when GP not defined" msgstr "Relocalisation relative GP utilisé alors que GP n'est pas défini" -#: coff-alpha.c:1486 elf64-alpha.c:4004 +#: coff-alpha.c:1485 msgid "using multiple gp values" msgstr "utilisation de valeurs multiples gp" -#: coff-alpha.c:1992 coff-mips.c:1434 -msgid "GP relative relocation when GP not defined" -msgstr "GP relocalisation relative alors que GP n'est pas défini" - -#: coff-arm.c:1018 elf32-arm.h:246 +#: coff-arm.c:1051 elf32-arm.h:285 #, c-format msgid "%s: unable to find THUMB glue '%s' for `%s'" msgstr "%s: incapable de repérer le REPÈRE de liant '%s' pour `%s'" -#: coff-arm.c:1047 elf32-arm.h:281 +#: coff-arm.c:1080 elf32-arm.h:320 #, c-format msgid "%s: unable to find ARM glue '%s' for `%s'" msgstr "%s: incapable de repérer le liant ARM '%s' pour `%s'" -#: coff-arm.c:1335 coff-arm.c:1430 elf32-arm.h:841 elf32-arm.h:946 +#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990 #, c-format msgid "%s(%s): warning: interworking not enabled." msgstr "%s(%s): AVERTISSEMENT: l'inter-réseautage n'est pas permis." -#: coff-arm.c:1339 elf32-arm.h:949 +#: coff-arm.c:1379 elf32-arm.h:993 #, c-format msgid " first occurrence: %s: arm call to thumb" msgstr " première occurrence: %s: appel arm de repérage" -#: coff-arm.c:1434 elf32-arm.h:844 +#: coff-arm.c:1474 elf32-arm.h:889 #, c-format msgid " first occurrence: %s: thumb call to arm" msgstr " première occurrence: %s: appel de repérage à ARM" -#: coff-arm.c:1437 +#: coff-arm.c:1477 msgid " consider relinking with --support-old-code enabled" msgstr " considérer de rafaire les liens avec --support-old-code enabled" -#: coff-arm.c:1726 coff-tic80.c:682 cofflink.c:2991 +#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 #, c-format msgid "%s: bad reloc address 0x%lx in section `%s'" msgstr "%s: mausvaise adresse de relocalisation 0x%lx dans la section `%s'" -#: coff-arm.c:2063 +#: coff-arm.c:2107 #, c-format msgid "%s: illegal symbol index in reloc: %d" msgstr "%s: symbole index illégal dans la relocalisation: %d" -#: coff-arm.c:2191 +#: coff-arm.c:2235 #, c-format msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" msgstr "%s: ERREUR: compilé pour APCS-%d alors que la cible %s utilise APCS-%d" -#: coff-arm.c:2206 +#: coff-arm.c:2250 #, c-format -msgid "%s: ERROR: passes floats in float registers whereas target %s uses integer registers" -msgstr "%s: ERREUR: passage de valeurs en virgule flottante dans des registreen virgule flottance alors que la cible %s utilise des registres de valeursentières" +msgid "" +"%s: ERROR: passes floats in float registers whereas target %s uses integer " +"registers" +msgstr "" +"%s: ERREUR: passage de valeurs en virgule flottante dans des registreen " +"virgule flottance alors que la cible %s utilise des registres de " +"valeursentières" -#: coff-arm.c:2209 +#: coff-arm.c:2253 #, c-format -msgid "%s: ERROR: passes floats in integer registers whereas target %s uses float registers" -msgstr "%s: ERREUR: passage de valeurs en virgule flottante dans des registreen valeur entière alors que la cible %s utilise des registres de valeursen virgule flottante" +msgid "" +"%s: ERROR: passes floats in integer registers whereas target %s uses float " +"registers" +msgstr "" +"%s: ERREUR: passage de valeurs en virgule flottante dans des registreen " +"valeur entière alors que la cible %s utilise des registres de valeursen " +"virgule flottante" -#: coff-arm.c:2224 +#: coff-arm.c:2268 #, c-format -msgid "%s: ERROR: compiled as position independent code, whereas target %s is absolute position" -msgstr "%s: ERREUR: compilé en code indépendant de la position, alors que la cible %s esten position absolue" +msgid "" +"%s: ERROR: compiled as position independent code, whereas target %s is " +"absolute position" +msgstr "" +"%s: ERREUR: compilé en code indépendant de la position, alors que la cible %" +"s esten position absolue" -#: coff-arm.c:2227 +#: coff-arm.c:2271 #, c-format -msgid "%s: ERROR: compiled as absolute position code, whereas target %s is position independent" -msgstr "%s: ERREUR: compilé en code à position abolsu, alors que la cible %s estindépendant de la position" +msgid "" +"%s: ERROR: compiled as absolute position code, whereas target %s is position " +"independent" +msgstr "" +"%s: ERREUR: compilé en code à position abolsu, alors que la cible %s " +"estindépendant de la position" -#: coff-arm.c:2256 -#, c-format -msgid "Warning: input file %s supports interworking, whereas %s does not." -msgstr "AVERTISSEMENT: file d'entrée %s supporte l'inter-réseautage, contrairement à %s." +#: coff-arm.c:2300 +#, fuzzy, c-format +msgid "Warning: %s supports interworking, whereas %s does not." +msgstr "AVERTISSEMENT: %s supporte l'inter-réseautage, contrairement à %s." + +#: coff-arm.c:2303 +#, fuzzy, c-format +msgid "Warning: %s does not support interworking, whereas %s does." +msgstr "" +"AVERTISSEMENT: %s ne supporte pas l'inter-réseautage, contrairement à %s." -#: coff-arm.c:2259 +#: coff-arm.c:2330 #, c-format -msgid "Warning: input file %s does not support interworking, whereas %s does." -msgstr "AVERTISSEMENT: fichier d'entrée %s ne supporte pas l'inter-réseautage, contrairement à %s." - -#: coff-arm.c:2286 msgid "private flags = %x:" msgstr "fanions privés = %x" -#: coff-arm.c:2294 elf32-arm.h:2210 +#: coff-arm.c:2338 elf32-arm.h:2408 msgid " [floats passed in float registers]" -msgstr " [valeurs en virgule flottante passées dans des registres de valeurs en virgule flottante]" +msgstr "" +" [valeurs en virgule flottante passées dans des registres de valeurs en " +"virgule flottante]" -#: coff-arm.c:2296 +#: coff-arm.c:2340 msgid " [floats passed in integer registers]" -msgstr " [valeurs en virgule flottante passées dans des registres de valeurs entières]" +msgstr "" +" [valeurs en virgule flottante passées dans des registres de valeurs " +"entières]" -#: coff-arm.c:2299 elf32-arm.h:2213 +#: coff-arm.c:2343 elf32-arm.h:2411 msgid " [position independent]" msgstr " [position indépendante]" -#: coff-arm.c:2301 +#: coff-arm.c:2345 msgid " [absolute position]" msgstr " [position absolue]" -#: coff-arm.c:2305 +#: coff-arm.c:2349 msgid " [interworking flag not initialised]" msgstr " [fanion d'inter-réseautage n'a pas été initialisé]" -#: coff-arm.c:2307 +#: coff-arm.c:2351 msgid " [interworking supported]" msgstr " [inter-réseautage supporté]" -#: coff-arm.c:2309 +#: coff-arm.c:2353 msgid " [interworking not supported]" msgstr " [inter-réseautage non supporté]" -#: coff-arm.c:2357 -#, c-format -msgid "Warning: Not setting interworking flag of %s, since it has already been specified as non-interworking" -msgstr "AVERTISSEMENT: pas d'initialisation du fanion d'inter-réseautage %s, puisqu'il a déjà été spécifié comme sans inter-réseautage" +#: coff-arm.c:2401 elf32-arm.h:2114 +#, fuzzy, c-format +msgid "" +"Warning: Not setting interworking flag of %s since it has already been " +"specified as non-interworking" +msgstr "" +"AVERTISSEMENT: pas d'initialisation du fanion d'inter-réseautage %s, " +"puisqu'il a déjà été spécifié comme sans inter-réseautage" -#: coff-arm.c:2361 +#: coff-arm.c:2405 elf32-arm.h:2118 #, c-format msgid "Warning: Clearing the interworking flag of %s due to outside request" -msgstr "AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison d'une requête externe" +msgstr "" +"AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison d'une " +"requête externe" + +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "convention d'appel incertaine pour un symbole non COFF" + +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +msgid "unsupported reloc type" +msgstr "type de relocalisation non supporté" + +#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "relocalisation relative GP sans que _gp ne soit défini" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "relocalisation vers une section non supportée" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" +msgstr "relocalisation n'est pas alignée correctement" + +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: type de relocalisation non supporté 0x%02x" + +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "" +"%s: table des matières des relocalisation à 0x%x pour les symboles `%s' sans " +"aucune entrée dans la table des matières" + +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: symbole `%s' a une classe smclas non reconnue %d" + +#: coff-tic54x.c:279 coff-tic80.c:449 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "Type de relocalisation non reconnu 0x%x" + +#: coff-tic54x.c:390 coffcode.h:4868 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: AVERTISSEMENT: symbole index illégal %ld dans les relocalisations" + +#: coff-w65.c:363 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "relocalisation de %s ignorée\n" + +#: coffcode.h:1081 +#, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "%s (%s): fanion de section %s (0x%x) ignoré" -#: coffcode.h:2136 +#: coffcode.h:2132 +#, c-format msgid "Unrecognized TI COFF target id '0x%x'" msgstr "cible TI COFF non reconnue identificateur '0x%x'" -#: coffcode.h:4194 +#: coffcode.h:4257 #, c-format msgid "%s: warning: illegal symbol index %ld in line numbers" msgstr "%s: AVERTISSEMENT: symbole d'index illégal %ld dans le numéro de ligne" -#: coffcode.h:4208 +#: coffcode.h:4271 #, c-format msgid "%s: warning: duplicate line number information for `%s'" msgstr "%s: AVERTISSEMENT: information de numéro de ligne dédoublée pour `%s'" -#: coffcode.h:4568 +#: coffcode.h:4630 #, c-format msgid "%s: Unrecognized storage class %d for %s symbol `%s'" msgstr "%s: classe de stockage non reconnue %d pour %s symbole `%s'" -#: coffcode.h:4699 +#: coffcode.h:4761 #, c-format msgid "warning: %s: local symbol `%s' has no section" msgstr "AVERTISSEMENT: %s: symbole local `%s' n'a pas de section" -#: coff-tic54x.c:376 coffcode.h:4810 -#, c-format -msgid "%s: warning: illegal symbol index %ld in relocs" -msgstr "%s: AVERTISSEMENT: symbole index illégal %ld dans les relocalisations" - -#: coffcode.h:4848 +#: coffcode.h:4906 #, c-format msgid "%s: illegal relocation type %d at address 0x%lx" msgstr "%s: type de relocalisation illégal %d à l'adresse 0x%lx" -#: coffgen.c:1631 +#: coffgen.c:1661 +#, c-format msgid "%s: bad string table size %lu" msgstr "%s: chaîne erronée de la taille de table %lu" -#: coffgen.c:2093 +#: cofflink.c:536 elflink.h:1967 #, c-format -msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" -msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld prochain %ld" - -#: coff-i960.c:136 coff-i960.c:485 -msgid "uncertain calling convention for non-COFF symbol" -msgstr "convention d'appel incertaine pour un symbole non COFF" - -#: cofflink.c:526 elflink.h:1648 msgid "Warning: type of symbol `%s' changed from %d to %d in %s" msgstr "AVERTISSEMENT: type de symbole `%s' a changé de %d à %d dans %s" -#: cofflink.c:2289 +#: cofflink.c:2317 #, c-format msgid "%s: relocs in section `%s', but it has no contents" msgstr "%s: relocalisations dans la section `%s', mais n,a aucun contenu" -#: cofflink.c:2628 coffswap.h:894 +#: cofflink.c:2653 coffswap.h:889 #, c-format msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" msgstr "%s: %s: débordement de relocalisation: 0x%lx > 0xffff" -#: cofflink.c:2637 coffswap.h:880 +#: cofflink.c:2662 coffswap.h:876 #, c-format msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: AVERTISSEMENT: %s: débordement du compteur de numéro de ligne: 0x%lx > 0xffff" - -#: coff-m68k.c:475 coff-mips.c:2432 elf32-m68k.c:2265 -msgid "unsupported reloc type" -msgstr "type de relocalisation non supporté" - -#: coff-mips.c:875 elf32-mips.c:1417 -msgid "GP relative relocation when _gp not defined" -msgstr "relocalisation relative GP sans que _gp ne soit défini" - -#. No other sections should appear in -membedded-pic -#. code. -#: coff-mips.c:2469 -msgid "reloc against unsupported section" -msgstr "relocalisation vers une section non supportée" - -#: coff-mips.c:2477 -msgid "reloc not properly aligned" -msgstr "relocalisation n'est pas alignée correctement" +msgstr "" +"%s: AVERTISSEMENT: %s: débordement du compteur de numéro de ligne: 0x%lx > " +"0xffff" -#: coff-tic54x.c:263 coff-tic80.c:445 -msgid "Unrecognized reloc type 0x%x" -msgstr "Type de relocalisation non reconnu 0x%x" +#: dwarf2.c:381 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Erreur DWARF: ne peut repérer la section .debug_str" -#: coff-w65.c:369 +#: dwarf2.c:398 #, c-format -msgid "ignoring reloc %s\n" -msgstr "relocalisation de %s ignorée\n" +msgid "" +"Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str " +"size (%u)." +msgstr "" +"Erreur DWARF: décalage DW_FORM_strp (%u) est > ou = à la taille de ." +"debug_str (%u)." -#: dwarf2.c:423 +#: dwarf2.c:542 msgid "Dwarf Error: Can't find .debug_abbrev section." msgstr "Erreur DWARF: ne peut repérer la section .debug_abbrev" -#: dwarf2.c:441 -#, c-format -msgid "Dwarf Error: Abbrev offset (%u) bigger than abbrev size (%u)." -msgstr "Erreur DWARF: décalage abrégé (%u) est plus grand que la taille abrégée (%u)." +#: dwarf2.c:559 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size " +"(%u)." +msgstr "Erreur DWARF: décalage Abbrev (%u) est > ou = à la taille abbrev (%u)." -#: dwarf2.c:624 +#: dwarf2.c:756 #, c-format msgid "Dwarf Error: Invalid or unhandled FORM value: %d." msgstr "Erreur DWARF: valeur de FORME invalide ou mal traitée: %d" -#: dwarf2.c:697 +#: dwarf2.c:843 msgid "Dwarf Error: mangled line number section (bad file number)." -msgstr "Erreur DWARF: numéro mutilé de ligne de section (mauvais no. de fichier)" +msgstr "" +"Erreur DWARF: numéro mutilé de ligne de section (mauvais no. de fichier)" -#: dwarf2.c:782 +#: dwarf2.c:929 msgid "Dwarf Error: Can't find .debug_line section." msgstr "Erreur DWARF: ne peut repérer la section .debug_line" -#: dwarf2.c:806 -#, c-format -msgid "Dwarf Error: Line offset (%u) bigger than line size (%u)." -msgstr "Erreur DWARF: décalage de ligne (%u) plus grand que la taille de ligne (%u)" +#: dwarf2.c:952 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)." +msgstr "" +"Erreur DWARF: décalage de ligne (%u) est > ou = à la taille de ligne (%u)" -#: dwarf2.c:973 +#: dwarf2.c:1143 msgid "Dwarf Error: mangled line number section." msgstr "Erreur DWARF: numéro mutilé de ligne de section" -#: dwarf2.c:1152 dwarf2.c:1306 +#: dwarf2.c:1318 dwarf2.c:1529 #, c-format msgid "Dwarf Error: Could not find abbrev number %d." msgstr "Erreur DWARF: ne peut repérer le numéro abrégé %d" -#: dwarf2.c:1267 +#: dwarf2.c:1490 #, c-format -msgid "Dwarf Error: found dwarf version '%hu', this reader only handles version 2 information." -msgstr "Erreur DWARF: version DWARF retrouvée '%hu', ce lecteur ne supporte que les informations de la version 2." +msgid "" +"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " +"information." +msgstr "" +"Erreur DWARF: version DWARF retrouvée '%hu', ce lecteur ne supporte que les " +"informations de la version 2." -#: dwarf2.c:1274 +#: dwarf2.c:1497 #, c-format -msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." -msgstr "Erreur DWARF: taille d'adresse obtenue '%u', ce lecteur ne peut traiter des tailles plus grandes que '%u'." +msgid "" +"Dwarf Error: found address size '%u', this reader can not handle sizes " +"greater than '%u'." +msgstr "" +"Erreur DWARF: taille d'adresse obtenue '%u', ce lecteur ne peut traiter des " +"tailles plus grandes que '%u'." -#: dwarf2.c:1297 +#: dwarf2.c:1520 #, c-format msgid "Dwarf Error: Bad abbrev number: %d." msgstr "Erreur DWARF: mauvais numéro abrégé: %d" -#: ecoff.c:1323 +#: ecoff.c:1328 +#, c-format msgid "Unknown basic type %d" msgstr "type de base inconnu %d" -#: ecoff.c:1592 +#: ecoff.c:1597 #, c-format -msgid "\n End+1 symbol: %ld" -msgstr "\n Dernier+1 symbole: %ld" - -#: ecoff.c:1599 ecoff.c:1602 -#, c-format -msgid "\n First symbol: %ld" -msgstr "\n Premier symbole: %ld" +msgid "" +"\n" +" End+1 symbol: %ld" +msgstr "" +"\n" +" Dernier+1 symbole: %ld" -#: ecoff.c:1614 +#: ecoff.c:1604 ecoff.c:1607 #, c-format -msgid "\n Fin+1 symbole: %-7ld Type: %s" -msgstr "\n Dernier+1 symbole: %-7ld Type: %s" +msgid "" +"\n" +" First symbol: %ld" +msgstr "" +"\n" +" Premier symbole: %ld" -#: ecoff.c:1621 +#: ecoff.c:1619 #, c-format -msgid "\n Local symbol: %ld" -msgstr "\n Symbole local: %ld" +msgid "" +"\n" +" End+1 symbol: %-7ld Type: %s" +msgstr "" +"\n" +" Dernier+1 symbole: %-7ld Type: %s" -#: ecoff.c:1629 +#: ecoff.c:1626 #, c-format -msgid "\n struct; End+1 symbol: %ld" -msgstr "\n struct; Symbole Fin+1: %ld" +msgid "" +"\n" +" Local symbol: %ld" +msgstr "" +"\n" +" Symbole local: %ld" #: ecoff.c:1634 #, c-format -msgid "\n union; End+1 symbol: %ld" -msgstr "\n union; Dernier+1 symbole: %ld" +msgid "" +"\n" +" struct; End+1 symbol: %ld" +msgstr "" +"\n" +" struct; Symbole Fin+1: %ld" #: ecoff.c:1639 #, c-format -msgid "\n enum; End+1 symbol: %ld" -msgstr "\n enum; Dernier+1 symbol: %ld" - -#: ecoff.c:1645 -#, c-format -msgid "\n Type: %s" -msgstr "\n Type: %s" +msgid "" +"\n" +" union; End+1 symbol: %ld" +msgstr "" +"\n" +" union; Dernier+1 symbole: %ld" -#: elf32-arm.h:1179 +#: ecoff.c:1644 #, c-format -msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." -msgstr "%s: AVERTISSEMENT: instruction Arm BLX vise la fonction Arm '%s'." +msgid "" +"\n" +" enum; End+1 symbol: %ld" +msgstr "" +"\n" +" enum; Dernier+1 symbol: %ld" -#: elf32-arm.h:1375 +#: ecoff.c:1650 #, c-format -msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." -msgstr "%s: AVERTISSEMENT: instruction de repérage BLX vise la function de repérage '%s'." +msgid "" +"\n" +" Type: %s" +msgstr "" +"\n" +" Type: %s" -#: elf-hppa.h:1369 elf-hppa.h:1402 elf32-arm.h:1853 elf32-i386.c:1428 -#: elf32-ppc.c:3096 elf32-sh.c:2997 elf64-x86-64.c:271 +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 #, c-format -msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" -msgstr "%s: AVERTISSEMENT: relocalisation sans solution vers le symbole `%s' de la section %s" +msgid "" +"%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "" +"%s: AVERTISSEMENT: relocalisation sans solution vers le symbole `%s' de la " +"section %s" -#: elf-m10200.c:455 elf-m10300.c:669 elf32-arm.h:1927 elf32-avr.c:842 -#: elf32-cris.c:431 elf32-d10v.c:478 elf32-fr30.c:651 elf32-i860.c:1051 -#: elf32-m32r.c:1265 elf32-v850.c:1672 +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1406 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1280 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf32-xstormy16.c:976 elf64-mmix.c:1164 msgid "internal error: out of range error" msgstr "erreur interne: hors gamme" -#: elf-m10200.c:459 elf-m10300.c:673 elf32-arm.h:1931 elf32-avr.c:846 -#: elf32-cris.c:435 elf32-d10v.c:482 elf32-fr30.c:655 elf32-i860.c:1055 -#: elf32-m32r.c:1269 elf32-v850.c:1676 +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1410 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1284 elf32-mips.c:7587 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf32-xstormy16.c:980 elf64-mips.c:4464 elf64-mmix.c:1168 msgid "internal error: unsupported relocation error" msgstr "erreur interne: erreur de relocalisation non supportée" -#: elf-m10200.c:463 elf-m10300.c:677 elf32-arm.h:1935 elf32-d10v.c:486 -#: elf32-m32r.c:1273 +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1288 msgid "internal error: dangerous error" msgstr "erreur interne: erreur dangereuse" -#: elf-m10200.c:467 elf-m10300.c:681 elf32-arm.h:1939 elf32-avr.c:854 -#: elf32-cris.c:443 elf32-d10v.c:490 elf32-fr30.c:663 elf32-i860.c:1063 -#: elf32-m32r.c:1277 elf32-v850.c:1696 +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1418 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1292 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf32-xstormy16.c:988 elf64-mmix.c:1176 msgid "internal error: unknown error" msgstr "erreur interne: erreur inconnue" -#: elf32-arm.h:1967 +#: elf.c:343 #, c-format -msgid "Warning: Not setting interwork flag of %s since it has already been specified as non-interworking" -msgstr "AVERTISSEMENT: pas d'initialisation du fanion d'inter-réseautage %s alors qu'il a déjè été spécifié sans inter-réseautage" +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%s: chaîne de décalage invalide %u >= %lu pour la section `%s'" -#: elf32-arm.h:1971 +#: elf.c:448 #, c-format -msgid "Warning: Clearing the interwork flag of %s due to outside request" -msgstr "AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison d'une requête externe" +msgid "%s: invalid SHT_GROUP entry" +msgstr "%s: entrée SHT_GROUP invalide" -#: elf32-arm.h:2019 +#: elf.c:529 #, c-format -msgid "Warning: Clearing the interwork flag in %s because non-interworking code in %s has been linked with it" -msgstr "AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison du code sans inter-réseautage dans %s qui a été lié avec lui" +msgid "%s: no group info for section %s" +msgstr "%s: aucune info de groupe pour la section %s" + +#: elf.c:840 +msgid "" +"\n" +"Program Header:\n" +msgstr "" +"\n" +"En-tête de programme:\n" + +#: elf.c:889 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" +"\n" +"Section dynamique:\n" + +#: elf.c:1018 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" +"\n" +"Définitions des versions:\n" -#: elf32-arm.h:2113 +#: elf.c:1041 +msgid "" +"\n" +"Version References:\n" +msgstr "" +"\n" +"Références de version:\n" + +#: elf.c:1046 #, c-format -msgid "Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" -msgstr "Erreur: %s compilé pour une version EABI %d, alors que %s a été compilé pour la version %d" +msgid " required from %s:\n" +msgstr " requis par %s:\n" -#: elf32-arm.h:2127 +#: elf.c:1682 #, c-format -msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" -msgstr "Erreur: %s compilé pour APCS-%d, alors que %s a été compilé pour APCS-%d" +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "%s: lien invalide %lu pour la section de relocalisation %s (index %u)" -#: elf32-arm.h:2138 +#: elf.c:3296 #, c-format -msgid "Error: %s passes floats in %s registers, whereas %s passes them in %s registers" -msgstr "Erreur: %s passage de valeurs en virgule flottante dans les registres %s, alors que %s les passe dans les registres %s" +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "" +"%s: pas suffisamment d'espace pour les en-têtes du programme (alloué %u, " +"besoin de %u)" -#: elf32-arm.h:2141 elf32-arm.h:2143 -msgid "float" -msgstr "flottant" +#: elf.c:3400 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "" +"%s: pas suffisamment d'espace pour les en-têtes du programme, essayer " +"l'option -N" -#: elf32-arm.h:2141 elf32-arm.h:2143 -msgid "integer" -msgstr "entier" +#: elf.c:3525 +#, c-format +msgid "" +"Error: First section in segment (%s) starts at 0x%x whereas the segment " +"starts at 0x%x" +msgstr "" +"Erreur: première section dans le segment (%s) débute à 0x%x alors que le " +"segment débute à 0x%x" -#: elf32-arm.h:2150 +#: elf.c:3811 #, c-format -msgid "Error: %s uses %s floating point, whereas %s uses %s floating point" -msgstr "Erreur: %s utilise %s en virgule flottante, alors que %s utilise %s en virgule flottante" +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: AVERTISSEMENT: section allouée `%s' n'est pas dans le segment" -#: elf32-arm.h:2153 elf32-arm.h:2155 -msgid "soft" -msgstr "logiciel" +#: elf.c:4142 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: symbole `%s' requis mais absent" -#: elf32-arm.h:2153 elf32-arm.h:2155 -msgid "hard" -msgstr "matériel" +#: elf.c:4395 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "%s: AVERTISSEMENT: segment chargeable vide détecté\n" -#: elf32-arm.h:2162 +#: elf.c:5808 #, c-format -msgid "Warning: %s %s interworking, whereas %s %s" -msgstr "Warning: %s %s inter-réseautage, alors que %s %s" +msgid "%s: unsupported relocation type %s" +msgstr "%s: type de relocalisation non supporté %s" -#: elf32-arm.h:2165 -msgid "supports" -msgstr "supporte" +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "%s: AVERTISSEMENT: instruction Arm BLX vise la fonction Arm '%s'." -#: elf32-arm.h:2165 -msgid "does not support" -msgstr "n'est pas supportée" +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "" +"%s: AVERTISSEMENT: instruction de repérage BLX vise la function de repérage " +"'%s'." -#: elf32-arm.h:2167 -msgid "does not" -msgstr "n'est pas" - -#: elf32-arm.h:2167 -msgid "does" -msgstr "est" +#: elf32-arm.h:1904 elf32-i386.c:1778 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%s(%s+0x%lx): %s relocation vers une section SEC_MERGE" -#. Ignore init flag - it may not be set, despite the flags field -#. containing valid data. -#: elf32-arm.h:2193 elf32-cris.c:615 elf32-m68k.c:430 elf32-mips.c:2695 -msgid "private flags = %lx:" -msgstr "fanions privés = %lx" +#: elf32-arm.h:1998 +#, c-format +msgid "" +"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "" +"%s: AVERTISSEMENT: relocalisation sans solution %d vers le symbole `%s' de " +"la section %s" -#: elf32-arm.h:2202 -msgid " [interworking enabled]" -msgstr " [inter-réseautage autorisé]" +#: elf32-arm.h:2166 +#, fuzzy, c-format +msgid "" +"Warning: Clearing the interworking flag of %s because non-interworking code " +"in %s has been linked with it" +msgstr "" +"AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison du code " +"sans inter-réseautage dans %s qui a été lié avec lui" -#: elf32-arm.h:2205 -msgid " [APCS-26]" -msgstr " [APCS-26]" +#: elf32-arm.h:2261 +#, c-format +msgid "" +"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "" +"Erreur: %s compilé pour une version EABI %d, alors que %s a été compilé pour " +"la version %d" -#: elf32-arm.h:2207 -msgid " [APCS-32]" -msgstr " [APCS-32]" +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "" +"Erreur: %s compilé pour APCS-%d, alors que %s a été compilé pour APCS-%d" -#: elf32-arm.h:2216 -msgid " [new ABI]" -msgstr " [nouvel ABI]" +#: elf32-arm.h:2287 +#, c-format +msgid "" +"Error: %s passes floats in FP registers, whereas %s passes them in integer " +"registers" +msgstr "" +"Erreur: %s passage de valeurs en virgule flottante dans les registres FP, " +"alors que %s les passe dans les registres entiers" -#: elf32-arm.h:2219 -msgid " [old ABI]" -msgstr " [ancien ABI]" +#: elf32-arm.h:2292 +#, c-format +msgid "" +"Error: %s passes floats in integer registers, whereas %s passes them in FP " +"registers" +msgstr "" +"Erreur: %s passage de valeurs en virgule flottante dans les registres " +"entiers, alors que %s les passe dans les registres FP" -#: elf32-arm.h:2222 -msgid " [software FP]" -msgstr " [virgule flottante logiciel]" +#: elf32-arm.h:2303 +#, fuzzy, c-format +msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" +msgstr "" +"Erreur: %s utilise les instructions VFP, alors que %s utilise les " +"instructions FPA" -#: elf32-arm.h:2229 -msgid " [Version1 EABI]" -msgstr " [Version 1 EABI]" +#: elf32-arm.h:2308 +#, fuzzy, c-format +msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" +msgstr "" +"Erreur: %s utilise les instructions FPA, alors que %s utilise les " +"instructions VFP" -#: elf32-arm.h:2232 -msgid " [sorted symbol table]" +#: elf32-arm.h:2328 +#, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" +msgstr "" +"Erreur: %s utilise le logiciel pour virgule flottante, alors que %s utilise " +"le matériel pour virgule flottante" + +#: elf32-arm.h:2333 +#, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" +msgstr "" +"Erreur: %s utilise le matériel pour virgule flottante, alors que %s utilise " +"le logiciel pour virgule flottante" + +#: elf32-arm.h:2348 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "AVERTISSEMENT: %s supporte l'inter-réseautage, contrairement à %s." + +#: elf32-arm.h:2355 +#, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "" +"AVERTISSEMENT: %s ne supporte pas l'inter-réseautage, contrairement à %s." + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2386 elf32-cris.c:2991 elf32-m68k.c:410 elf32-mips.c:3242 +#, c-format +msgid "private flags = %lx:" +msgstr "fanions privés = %lx" + +#: elf32-arm.h:2395 +msgid " [interworking enabled]" +msgstr " [inter-réseautage autorisé]" + +#: elf32-arm.h:2398 +msgid " [APCS-26]" +msgstr " [APCS-26]" + +#: elf32-arm.h:2400 +msgid " [APCS-32]" +msgstr " [APCS-32]" + +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr " [format flottant VFP]" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr " [format flottant FPA]" + +#: elf32-arm.h:2414 +msgid " [new ABI]" +msgstr " [nouvel ABI]" + +#: elf32-arm.h:2417 +msgid " [old ABI]" +msgstr " [ancien ABI]" + +#: elf32-arm.h:2420 +msgid " [software FP]" +msgstr " [virgule flottante logiciel]" + +#: elf32-arm.h:2428 +msgid " [Version1 EABI]" +msgstr " [Version 1 EABI]" + +#: elf32-arm.h:2431 elf32-arm.h:2442 +msgid " [sorted symbol table]" msgstr " [table des symboles triés]" -#: elf32-arm.h:2234 +#: elf32-arm.h:2433 elf32-arm.h:2444 msgid " [unsorted symbol table]" msgstr " [table des symboles non triés]" -#: elf32-arm.h:2240 +#: elf32-arm.h:2439 +msgid " [Version2 EABI]" +msgstr " [Version2 EABI]" + +#: elf32-arm.h:2447 +msgid " [dynamic symbols use segment index]" +msgstr " [symboles dynamiques utilisent un index de segment]" + +#: elf32-arm.h:2450 +msgid " [mapping symbols precede others]" +msgstr " [mapping de symboles précèdes les autres]" + +#: elf32-arm.h:2457 msgid " " msgstr " " -#: elf32-arm.h:2247 +#: elf32-arm.h:2464 msgid " [relocatable executable]" msgstr " [exécutables relocalisés]" -#: elf32-arm.h:2250 +#: elf32-arm.h:2467 msgid " [has entry point]" msgstr " [a des points d'entrées]" -#: elf32-arm.h:2255 +#: elf32-arm.h:2472 msgid "" msgstr "" -#: elf32-avr.c:850 elf32-cris.c:439 elf32-fr30.c:659 elf32-i860.c:1059 -#: elf32-v850.c:1680 +#: elf32-avr.c:843 elf32-cris.c:1414 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf32-xstormy16.c:984 +#: elf64-mmix.c:1172 msgid "internal error: dangerous relocation" msgstr "erreur interne: relocalisation dangereuse" -#: elf32-cris.c:618 +#: elf32-cris.c:949 +#, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "" +"%s: relocalisation %s sans solution vers le symbole `%s' à partir de la " +"section %s" + +#: elf32-cris.c:1012 +#, c-format +msgid "" +"%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "" +"%s: pas de relocalisation %s PLT ni GOT vers le symbole `%s' à partir de la " +"section %s" + +#: elf32-cris.c:1015 elf32-cris.c:1142 +msgid "[whose name is lost]" +msgstr "[où le nom est perdu]" + +#: elf32-cris.c:1131 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against local symbol from %s " +"section" +msgstr "" +"%s: relocalisation %s sans zéro ajoute %d vers le symbole local à partir de " +"la section %s" + +#: elf32-cris.c:1138 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "" +"%s: relocalisation %s sans zéro ajoute %d vers le symbole `%s' à partir de " +"la section %s" + +#: elf32-cris.c:1156 +#, c-format +msgid "" +"%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "" +"%s: relocalisation %s n'est pas permise pour le symbole global: `%s' de la " +"section %s." + +#: elf32-cris.c:1171 +#, fuzzy, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "%s: relocalisations dans la section `%s', mais n,a aucun contenu" + +#: elf32-cris.c:1289 +#, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "%s: inconsistence interne; pas de section de relocalisation %s" + +#: elf32-cris.c:2523 +#, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s, section %s:\n" +" relocalisation %s devrait être utilisée dans un objet partagé; recompiler " +"avec -fPIC" + +#: elf32-cris.c:2994 msgid " [symbols have a _ prefix]" msgstr " [symboles sont préfixés par `_']" -#: elf32-cris.c:657 +#: elf32-cris.c:3033 #, c-format msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" -msgstr "%s: utilise _-prefixed symbols, mais avec écriture au fichier avec des symboles sans préfixes" +msgstr "" +"%s: utilise _-prefixed symbols, mais avec écriture au fichier avec des " +"symboles sans préfixes" -#: elf32-cris.c:658 +#: elf32-cris.c:3034 #, c-format msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" -msgstr "%s: utilise des symboles sans préfixes, mais avec écriture au fichier avec des symboles ayant des préfixes_-prefixed" +msgstr "" +"%s: utilise des symboles sans préfixes, mais avec écriture au fichier avec " +"des symboles ayant des préfixes_-prefixed" -#: elf32-hppa.c:606 +#: elf32-gen.c:82 elf64-gen.c:82 #, c-format -msgid "%s(%s+0x%lx): cannot find stub entry %s" -msgstr "%s(%s+0x%lx): ne peut repérer l'entrée du talon %s" +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "%s: relocalisation en format ELF générique (EM: %d)" -#: elf32-hppa.c:667 +#: elf32-hppa.c:646 +#, c-format msgid "%s: cannot create stub entry %s" msgstr "%s: ne peut créer l'entrée du talon %s" -#: elf32-hppa.c:859 +#: elf32-hppa.c:937 elf32-hppa.c:3545 #, c-format -msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections" -msgstr "%s(%s+0x%lx): ne peut relocaliser %s, recompiler avec -ffunction-sections" - -#: elf32-hppa.c:872 elf32-hppa.c:1568 -msgid "Could not find relocation section for %s" -msgstr "Ne peut repérer la section de relocalisation pour %s" +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "" +"%s(%s+0x%lx): ne peut atteindre %s, recompiler avec -ffunction-sections" -#: elf32-hppa.c:1011 elf32-hppa.c:3362 +#: elf32-hppa.c:1312 #, c-format -msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" -msgstr "%s(%s+0x%lx): ne peut atteindre %s, recompiler avec -ffunction-sections" +msgid "" +"%s: relocation %s can not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: relocalisation de %s ne peut être utilisée lors de la création d'un " +"objet partagé; recompiler avec -fPIC" -#: elf32-hppa.c:1323 +#: elf32-hppa.c:1332 #, c-format -msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC" -msgstr "%s: relocalisation de %s ne peut être utilisée lors de la création d'un objet partagé; recompiler avec -fPIC" +msgid "" +"%s: relocation %s should not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: relocalisation %s ne doit pas être utilisée lors de la création d'un " +"objet partagé; recompiler avec -fPIC" -#: elf32-hppa.c:1343 +#: elf32-hppa.c:1525 #, c-format -msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC" -msgstr "%s: relocalisation %s ne doit pas être utilisée lors de la création d'un objet partagé; recompiler avec -fPIC" +msgid "Could not find relocation section for %s" +msgstr "Ne peut repérer la section de relocalisation pour %s" -#: elf32-hppa.c:2755 +#: elf32-hppa.c:2867 #, c-format msgid "%s: duplicate export stub %s" msgstr "%s: talon d'exportation en double %s" -#: elf32-hppa.c:3253 +#: elf32-hppa.c:3429 #, c-format msgid "%s(%s+0x%lx): fixing %s" msgstr "%s(%s+0x%lx): corrigeant %s" -#: elf32-hppa.c:3856 +#: elf32-hppa.c:4069 #, c-format msgid "%s(%s+0x%lx): cannot handle %s for %s" msgstr "%s(%s+0x%lx): ne traiter %s pour %s" -#: elf32-hppa.c:4173 +#: elf32-hppa.c:4408 msgid ".got section not immediately after .plt section" msgstr "section .got pas immédiatement après la section .plt" -#: elf32-i386.c:273 +#: elf32-i386.c:298 +#, c-format msgid "%s: invalid relocation type %d" msgstr "%s: type de relocalisation invalide %d" -#: elf32-m32r.c:916 +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 +#, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s: symbole index erroné: %d" + +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2198 elf64-s390.c:759 +#, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: nom de section de relocalisation erroné `%s'" + +#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 +#, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): relocalisation sans solution vers le symbole `%s'" + +#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): relocalisation vers `%s': erreur %d" + +#: elf32-m32r.c:923 msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "relocalisation SDA alors que _SDA_BASE_ n'est pas définie" -#: elf32-m32r.c:1000 elf32-ppc.c:2963 +#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 +#, c-format msgid "%s: unknown relocation type %d" msgstr "%s: type de relocalisation inconnu %d" -#: elf32-m32r.c:1208 +#: elf32-m32r.c:1223 #, c-format msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" -msgstr "%s: la cible (%s) de la relocalisation %s est dans la mauvaise section (%s)" +msgstr "" +"%s: la cible (%s) de la relocalisation %s est dans la mauvaise section (%s)" -#: elf32-m32r.c:2010 +#: elf32-m32r.c:2000 #, c-format msgid "%s: Instruction set mismatch with previous modules" msgstr "%s: jeu d'instructions ne concorde par avec les modules précédents" -#: elf32-m32r.c:2033 +#: elf32-m32r.c:2023 +#, c-format msgid "private flags = %lx" msgstr "fanions privés = %lx" -#: elf32-m32r.c:2038 +#: elf32-m32r.c:2028 msgid ": m32r instructions" msgstr ": instructions m32r" -#: elf32-m32r.c:2039 +#: elf32-m32r.c:2029 msgid ": m32rx instructions" msgstr ": instruction m32rx" -#: elf32-m68k.c:433 +#: elf32-m68k.c:413 msgid " [cpu32]" msgstr " [cpu32]" -#: elf32-mcore.c:366 elf32-mcore.c:493 +#: elf32-mcore.c:353 elf32-mcore.c:479 +#, c-format msgid "%s: Relocation %s (%d) is not currently supported.\n" msgstr "%s: relocalisation %s (%d) n'est pas couramment supportée.\n" -#: elf32-mcore.c:452 +#: elf32-mcore.c:438 +#, c-format msgid "%s: Unknown relocation type %d\n" msgstr "%s: type de relocalisation inconnue %d\n" -#: elf32-mips.c:1576 +#: elf32-mips.c:2156 elf64-mips.c:1972 msgid "32bits gp relative relocation occurs for an external symbol" msgstr "relocalisation relative gp 32bits est survenue pour un symbole externe" -#: elf32-mips.c:1725 +#: elf32-mips.c:2305 #, c-format msgid "Linking mips16 objects into %s format is not supported" msgstr "Édition de liens d'objets mips16 dans le format %s n'est pas supporté" -#: elf32-mips.c:2582 +#: elf32-mips.c:3129 #, c-format msgid "%s: linking PIC files with non-PIC files" msgstr "%s: édition de liens des fichiers PIC avec des fichiers non PIC" -#: elf32-mips.c:2592 +#: elf32-mips.c:3139 #, c-format msgid "%s: linking abicalls files with non-abicalls files" -msgstr "%s: édition de liens des fichier abicalls avec des fichiers non abicalls" +msgstr "" +"%s: édition de liens des fichier abicalls avec des fichiers non abicalls" -#: elf32-mips.c:2621 +#: elf32-mips.c:3168 #, c-format msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" -msgstr "%s: ISA ne concorde pas (-mips%d) avec les modules précédents (-mips%d)" +msgstr "" +"%s: ISA ne concorde pas (-mips%d) avec les modules précédents (-mips%d)" -#: elf32-mips.c:2630 +#: elf32-mips.c:3177 #, c-format msgid "%s: ISA mismatch (%d) with previous modules (%d)" msgstr "%s: ISA ne concorde pas (%d) avec les modules précédents (%d)" -#: elf32-mips.c:2653 +#: elf32-mips.c:3200 #, c-format msgid "%s: ABI mismatch: linking %s module with previous %s modules" -msgstr "%s: ABI ne concorde pas: édition de lien du module %s avec les modules précédents %s" +msgstr "" +"%s: ABI ne concorde pas: édition de lien du module %s avec les modules " +"précédents %s" -#: elf32-mips.c:2667 elf32-ppc.c:1477 elf64-sparc.c:2971 +#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 #, c-format msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" -msgstr "%s: utilise differents champs e_flags (0x%lx) que les modules précédents (0x%lx)" +msgstr "" +"%s: utilise differents champs e_flags (0x%lx) que les modules précédents (0x%" +"lx)" -#: elf32-mips.c:2698 +#: elf32-mips.c:3245 msgid " [abi=O32]" msgstr " [abi=O32]" -#: elf32-mips.c:2700 +#: elf32-mips.c:3247 msgid " [abi=O64]" msgstr " [abi=O64]" -#: elf32-mips.c:2702 +#: elf32-mips.c:3249 msgid " [abi=EABI32]" msgstr " [abi=EABI32]" -#: elf32-mips.c:2704 +#: elf32-mips.c:3251 msgid " [abi=EABI64]" msgstr " [abi=EABI64]" -#: elf32-mips.c:2706 +#: elf32-mips.c:3253 msgid " [abi unknown]" msgstr " [abi inconnu]" -#: elf32-mips.c:2708 +#: elf32-mips.c:3255 msgid " [abi=N32]" msgstr " [abi=N32]" -#: elf32-mips.c:2710 +#: elf32-mips.c:3257 msgid " [abi=64]" msgstr " [abi=64]" -#: elf32-mips.c:2712 +#: elf32-mips.c:3259 msgid " [no abi set]" msgstr " [aucun jeu abi]" -#: elf32-mips.c:2715 +#: elf32-mips.c:3262 msgid " [mips1]" msgstr " [mips1]" -#: elf32-mips.c:2717 +#: elf32-mips.c:3264 msgid " [mips2]" msgstr " [mips2]" -#: elf32-mips.c:2719 +#: elf32-mips.c:3266 msgid " [mips3]" msgstr " [mips3]" -#: elf32-mips.c:2721 +#: elf32-mips.c:3268 msgid " [mips4]" msgstr " [mips4]" -#: elf32-mips.c:2723 +#: elf32-mips.c:3270 msgid " [mips5]" msgstr " [mips5]" -#: elf32-mips.c:2725 +#: elf32-mips.c:3272 msgid " [mips32]" msgstr " [mips32]" -#: elf32-mips.c:2727 +#: elf32-mips.c:3274 msgid " [mips64]" msgstr " [mips64]" -#: elf32-mips.c:2729 +#: elf32-mips.c:3276 msgid " [unknown ISA]" msgstr " [ISA inconnu]" -#: elf32-mips.c:2732 +#: elf32-mips.c:3279 msgid " [32bitmode]" msgstr " [mode 32 bits]" -#: elf32-mips.c:2734 +#: elf32-mips.c:3281 msgid " [not 32bitmode]" msgstr " [aucun mode 32 bits]" -#: elf32-mips.c:4388 +#: elf32-mips.c:4954 msgid "static procedure (no name)" msgstr "procédure statique (sans name)" -#: elf32-mips.c:5005 elf64-alpha.c:4377 +#: elf32-mips.c:5572 elf64-mips.c:6694 +#, c-format msgid "%s: illegal section name `%s'" msgstr "%s: nom illégal de section `%s'" -#: elf32-mips.c:5570 +#: elf32-mips.c:6139 elf64-mips.c:3150 msgid "not enough GOT space for local GOT entries" msgstr "pas suffisamment d'espace GOT pour les entrées locales GOT" -#: elf32-mips.c:6686 +#: elf32-mips.c:7250 elf64-mips.c:4203 #, c-format msgid "%s: %s+0x%lx: jump to stub routine which is not jal" -msgstr "%s: %s+0x%lx: saut vers la routine dans la partie du talon (stub) qui n'est pas jal" +msgstr "" +"%s: %s+0x%lx: saut vers la routine dans la partie du talon (stub) qui n'est " +"pas jal" -#: elf32-mips.c:7673 +#: elf32-mips.c:8259 elf64-mips.c:5891 #, c-format -msgid "Malformed reloc detected for section %s" -msgstr "Relocalisation mal composée détectée dans la section %s" +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: relocalisation mal composée détectée dans la section %s" -#: elf32-mips.c:7750 +#: elf32-mips.c:8337 elf64-mips.c:5969 #, c-format msgid "%s: CALL16 reloc at 0x%lx not against global symbol" -msgstr "%s: appel CALL16 de relocalisation à 0x%lx qui n'est pas pourun symbole global" +msgstr "" +"%s: appel CALL16 de relocalisation à 0x%lx qui n'est pas pourun symbole " +"global" -#: elf32-ppc.c:1443 +#: elf32-ppc.c:1436 elf64-ppc.c:1521 #, c-format -msgid "%s: compiled with -mrelocatable and linked with modules compiled normally" -msgstr "%s: compilé avec -mrelocatable et fait l'édition de lien avec les modules compilés normalement" +msgid "" +"%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "" +"%s: compilé avec -mrelocatable et fait l'édition de lien avec les modules " +"compilés normalement" -#: elf32-ppc.c:1451 +#: elf32-ppc.c:1444 elf64-ppc.c:1529 #, c-format -msgid "%s: compiled normally and linked with modules compiled with -mrelocatable" -msgstr "%s: compilé normalement et fait l'édition de lien avec les modules compilés avec -mrelocatable" +msgid "" +"%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "" +"%s: compilé normalement et fait l'édition de lien avec les modules compilés " +"avec -mrelocatable" -#: elf32-ppc.c:1578 +#: elf32-ppc.c:1568 #, c-format msgid "%s: Unknown special linker type %d" msgstr "%s: type d'édition spécial de lien inconnu %d" -#: elf32-ppc.c:2245 elf32-ppc.c:2279 elf32-ppc.c:2314 +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 #, c-format msgid "%s: relocation %s cannot be used when making a shared object" -msgstr "%s: relocalisation %s ne peut être utilisée lors de la création d'un objet partagé" +msgstr "" +"%s: relocalisation %s ne peut être utilisée lors de la création d'un objet " +"partagé" -#: elf32-ppc.c:3129 +#: elf32-ppc.c:3097 elf64-ppc.c:3716 #, c-format msgid "%s: unknown relocation type %d for symbol %s" msgstr "%s: type de relocalisation inconnue %d pour le symbole %s" -#: elf32-ppc.c:3493 elf32-ppc.c:3514 elf32-ppc.c:3564 +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 #, c-format -msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)" -msgstr "%s: la cible (%s) d'une relocalisation %s est dans la mauvaise section de sortie (%s)" +msgid "" +"%s: The target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "" +"%s: la cible (%s) d'une relocalisation %s est dans la mauvaise section de " +"sortie (%s)" -#: elf32-ppc.c:3630 +#: elf32-ppc.c:3589 #, c-format msgid "%s: Relocation %s is not yet supported for symbol %s." msgstr "%s: relocalisation %s n'est pas encore supporté pour le symbole %s." -#: elf32-sh.c:1084 +#: elf32-sh.c:1101 #, c-format msgid "%s: 0x%lx: warning: bad R_SH_USES offset" msgstr "%s: 0x%lx: AVERTISSEMENT: mauvais décalage pour R_SH_USES" -#: elf32-sh.c:1096 +#: elf32-sh.c:1113 #, c-format msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "%s: 0x%lx: AVERTISSEMENT: R_SH_USES pointe vers un insn inconnu 0x%x " -#: elf32-sh.c:1113 +#: elf32-sh.c:1130 #, c-format msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" msgstr "%s: 0x%lx: AVERTISSEMENT: mauvais décalage de chargement R_SH_USES" -#: elf32-sh.c:1128 +#: elf32-sh.c:1145 #, c-format msgid "%s: 0x%lx: warning: could not find expected reloc" msgstr "%s: 0x%lx: AVERTISSEMENT: ne peut repérer la relocalisation attendue" -#: elf32-sh.c:1165 +#: elf32-sh.c:1202 #, c-format msgid "%s: 0x%lx: warning: symbol in unexpected section" msgstr "%s: 0x%lx: AVERTISSEMENT: symbole dans une section inattendue" -#: elf32-sh.c:1287 +#: elf32-sh.c:1323 #, c-format msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" -msgstr "%s: 0x%lx: AVERTISSEMENT: ne peut repérer le compteur de relocalisation attendu" +msgstr "" +"%s: 0x%lx: AVERTISSEMENT: ne peut repérer le compteur de relocalisation " +"attendu" -#: elf32-sh.c:1296 +#: elf32-sh.c:1332 +#, c-format msgid "%s: 0x%lx: warning: bad count" msgstr "%s: 0x%lx: AVERTISSEMENT: mauvais décompte" -#: elf32-sh.c:1689 elf32-sh.c:2076 +#: elf32-sh.c:1741 elf32-sh.c:2132 #, c-format msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" -msgstr "%s: 0x%lx: erreur fatale: débordement de relocalisation lors de relâches" +msgstr "" +"%s: 0x%lx: erreur fatale: débordement de relocalisation lors de relâches" + +#: elf32-sh.c:3267 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "" +"%s: 0x%lx: fatal: cible de branchement non aligné pour une relocalisatin de " +"type relax-support" -#: elf32-sparc.c:1512 elf64-sparc.c:2262 +#: elf32-sparc.c:1554 elf64-sparc.c:2280 #, c-format msgid "%s: probably compiled without -fPIC?" msgstr "%s: probablement compilé sans -fPIC?" -#: elf32-sparc.c:1962 +#: elf32-sparc.c:2007 #, c-format msgid "%s: compiled for a 64 bit system and target is 32 bit" msgstr "%s: compilé pour un système à 64 bits et la cible est de 32 bits" -#: elf32-sparc.c:1976 +#: elf32-sparc.c:2021 #, c-format msgid "%s: linking little endian files with big endian files" msgstr "" "%s: édition de liens pour des fichiers en système à octets de poids faibles\n" "avec des fichiers pour des systèmes à octets de poids fort" -#: elf32-v850.c:677 +#: elf32-v850.c:682 #, c-format msgid "Variable `%s' cannot occupy in multiple small data regions" msgstr "Variable `%s' ne peut occuper de multiples petites régions de données" -#: elf32-v850.c:680 +#: elf32-v850.c:685 #, c-format -msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" -msgstr "Variable `%s' peut seulement être dans une région de données petite, zéro ou minuscule" +msgid "" +"Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "" +"Variable `%s' peut seulement être dans une région de données petite, zéro ou " +"minuscule" -#: elf32-v850.c:683 +#: elf32-v850.c:688 #, c-format -msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" -msgstr "Variable `%s' ne peut être dans une région de données petite et zéro à la fois" +msgid "" +"Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "" +"Variable `%s' ne peut être dans une région de données petite et zéro à la " +"fois" -#: elf32-v850.c:686 +#: elf32-v850.c:691 #, c-format -msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" -msgstr "Variable `%s' ne peut être dans une région de données petite et minuscule zéro à la fois" +msgid "" +"Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "" +"Variable `%s' ne peut être dans une région de données petite et minuscule " +"zéro à la fois" -#: elf32-v850.c:689 +#: elf32-v850.c:694 #, c-format -msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" -msgstr "Variable `%s' ne peut être dans une région de données zéro et minuscule zéro à la fois" +msgid "" +"Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "" +"Variable `%s' ne peut être dans une région de données zéro et minuscule zéro " +"à la fois" -#: elf32-v850.c:1066 +#: elf32-v850.c:1072 msgid "FAILED to find previous HI16 reloc\n" msgstr "ÉCHEC de repérage de la relocalisation précédente HI16\n" -#: elf32-v850.c:1684 +#: elf32-v850.c:1703 msgid "could not locate special linker symbol __gp" msgstr "ne peut repérer le symbole spécial d'édition de lien __gp" -#: elf32-v850.c:1688 +#: elf32-v850.c:1707 msgid "could not locate special linker symbol __ep" msgstr "ne peut repérer le symbole spécial d'édition de lien __ep" -#: elf32-v850.c:1692 +#: elf32-v850.c:1711 msgid "could not locate special linker symbol __ctbp" msgstr "ne peut repérer le symbole spécial d'édition de lien __ctbp" -#: elf32-v850.c:1881 +#: elf32-v850.c:1877 #, c-format msgid "%s: Architecture mismatch with previous modules" msgstr "%s: l'architecture ne concorde pas avec les modules précédents" -#: elf32-v850.c:1900 +#: elf32-v850.c:1897 +#, c-format msgid "private flags = %lx: " msgstr "fanions privés = %lx" -#: elf32-v850.c:1905 +#: elf32-v850.c:1902 msgid "v850 architecture" msgstr "architecture v850" -#: elf32-v850.c:1906 +#: elf32-v850.c:1903 msgid "v850e architecture" msgstr "architecture v850e" -#: elf32-v850.c:1907 +#: elf32-v850.c:1904 msgid "v850ea architecture" msgstr "architecture v850ea" -#: elf64-alpha.c:951 +#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 +msgid "non-zero addend in @fptr reloc" +msgstr "ajout non null dans la relocalisation @fptr" + +#: elf64-alpha.c:858 msgid "GPDISP relocation did not find ldah and lda instructions" msgstr "la relocalisation GPDISP n'a pas repéré les instructions ldah et lda" -#: elf64-alpha.c:3014 +#: elf64-alpha.c:2934 #, c-format msgid "%s: .got subsegment exceeds 64K (size %d)" msgstr "%s: le sous-segment .got excède 64K (taille %d)" -#: elf64-sparc.c:1248 +#: elf64-alpha.c:3518 elf64-alpha.c:3530 #, c-format -msgid "%s: check_relocs: unhandled reloc type %d" -msgstr "%s: check_relocs: type de relocalisation non traitée %d" +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "%s: relocalisation relative gp vers le symbole dynamique %s" -#: elf64-sparc.c:1285 -msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" -msgstr "%s: seuls les registres %%g[2367] peuvent être déclarés en utilisant les registres STT_REGISTER" +#: elf64-hppa.c:2070 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "entrée du talon pour %s ne peut charger .plt, décalage dp = %ld" -#: elf64-sparc.c:1305 -msgid "Register %%g%d used incompatibly: previously declared in %s to %s, in %s redefined to %s" -msgstr "Registre %%g%d utilisé de manière incompatible: déclaré précédemment dans %s vers %s, dans %s redéfini comme %s" +#: elf64-mmix.c:1271 +#, fuzzy, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "" +"%s: relocalisation de registre vers le symbole non-registre: %s dans %s" -#: elf64-sparc.c:1328 +#: elf64-mmix.c:1276 #, c-format -msgid "Symbol `%s' has differing types: previously %s, REGISTER in %s" -msgstr "Symbole `%s' a des types qui diffèrent: précédemment %s, ENREGISTRÉ dans %s" +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "" +"%s: relocalisation de registre vers le symbole non-registre: %s dans %s" -#: elf64-sparc.c:1374 +#: elf64-mmix.c:1312 #, c-format -msgid "Symbol `%s' has differing types: REGISTER in %s, %s in %s" -msgstr "Symbole `%s' a des types qui diffèrent: ENREGISTRÉ dans %s, %s dans %s" +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "" +"%s: directive LOCAL valide seulement avec un registre ou une valeur absolue" -#: elf64-sparc.c:2952 +#: elf64-mmix.c:1340 #, c-format -msgid "%s: linking UltraSPARC specific with HAL specific code" -msgstr "%s: édition de liens spécifiques pour UltraSPARC avec du code spécifique HAL" +msgid "" +"%s: LOCAL directive: Register $%ld is not a local register. First global " +"register is $%ld." +msgstr "" +"%s: directive LOCAL: registre $%ld n'est pas un registre local. Premier " +"registre global est $%ld." -#: elf.c:325 +#: elf64-mmix.c:1615 #, c-format -msgid "%s: invalid string offset %u >= %lu for section `%s'" -msgstr "%s: chaîne de décalage invalide %u >= %lu pour la section `%s'" +msgid "" +"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " +"linked file\n" +msgstr "" +"%s: erreur: multiple définitions de `%s'; début de %s est initialisé dans un " +"précédent fichier lié\n" -#: elf.c:566 -msgid "\nProgram Header:\n" -msgstr "\nEn-tête de programme:\n" - -#: elf.c:614 -msgid "\nDynamic Section:\n" -msgstr "\nSection dynamique:\n" - -#: elf.c:743 -msgid "\nVersion definitions:\n" -msgstr "\nDéfinitions des versions:\n" - -#: elf.c:766 -msgid "\nVersion References:\n" -msgstr "\nRéférences de version:\n" +#: elf64-mmix.c:1674 +msgid "Register section has contents\n" +msgstr "Registre de section contient\n" -#: elf.c:771 +#: elf64-ppc.c:1484 libbfd.c:1436 #, c-format -msgid " required from %s:\n" -msgstr " requis par %s:\n" +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "" +"%s: compilé pour un système à octets de poids fort alors que la cible\n" +"est un système à octets de poids faible" -#: elf.c:1359 +#: elf64-ppc.c:1486 libbfd.c:1438 #, c-format -msgid "%s: invalid link %lu for reloc section %s (index %u)" -msgstr "%s: lien invalide %lu pour la section de relocalisation %s (index %u)" +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "" +"%s: compilé pour un système à octets de poids faible alors que la cible\n" +"est un système à octets de poids fort" -#: elf.c:2113 -#, c-format -msgid "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section = 0x%.8lx\n" -msgstr "création de la section des symboles, nom = %s, valeur = 0x%.8lx, index = %d, section = 0x%.8lx\n" +#: elf64-ppc.c:3350 +#, fuzzy, c-format +msgid "linkage table error against `%s'" +msgstr "débordement de la table de liaison vers `%s'" -#: elf.c:2716 -#, c-format -msgid "%s: Not enough room for program headers (allocated %u, need %u)" -msgstr "%s: pas suffisamment d'espace pour les en-têtes du programme (alloué %u, besoin de %u)" +#: elf64-ppc.c:3432 +msgid "stub section size doesn't match calculated size" +msgstr "taille de la section du talon ne concorde pas avec la taille calculée" -#: elf.c:2815 +#: elf64-ppc.c:4061 #, c-format -msgid "%s: Not enough room for program headers, try linking with -N" -msgstr "%s: pas suffisamment d'espace pour les en-têtes du programme, essayer l'option -N" +msgid "%s: Relocation %s is not supported for symbol %s." +msgstr "%s: relocalisation %s n'est pas supportée pour le symbole %s." -#: elf.c:2941 +#: elf64-ppc.c:4105 #, c-format -msgid "Error: First section in segment (%s) starts at 0x%x" -msgstr "Erreur: première section dans le segment (%s) débute à 0x%x" +msgid "%s: error: relocation %s not a multiple of 4" +msgstr "%s: erreur: relocalisation %s n'est pas un multiple de 4" -#: elf.c:2944 +#: elf64-sparc.c:1277 #, c-format -msgid " whereas segment starts at 0x%x" -msgstr " alors que le segment débute à 0x%x" +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: type de relocalisation non traitée %d" -#: elf.c:3217 +#: elf64-sparc.c:1314 #, c-format -msgid "%s: warning: allocated section `%s' not in segment" -msgstr "%s: AVERTISSEMENT: section allouée `%s' n'est pas dans le segment" +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "" +"%s: seuls les registres %%g[2367] peuvent être déclarés en utilisant les " +"registres STT_REGISTER" -#: elf.c:3616 -msgid "%s: symbol `%s' required but not present" -msgstr "%s: symbole `%s' requis mais absent" +#: elf64-sparc.c:1334 +#, fuzzy, c-format +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" +msgstr "Registre %%g%d utilisé de manière incompatible: %s dans %s" + +#: elf64-sparc.c:1357 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" +msgstr "" +"Symbole `%s' a des types qui diffèrent: précédemment %s, ENREGISTRÉ dans %s" -#: elf.c:3625 -#, c-format -msgid "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n" -msgstr "elf_symbol_from_bfd_symbol 0x%.8lx, nom = %s, no. de symbole = %d, fanions = 0x%.8lx%s\n" +#: elf64-sparc.c:1404 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" +msgstr "" +"Symbole `%s' a des types qui diffèrent: précédemment %s, ENREGISTRÉ dans %s" -#: elf.c:3866 +#: elf64-sparc.c:3008 #, c-format -msgid "%s: warning: Empty loadable segment detected\n" -msgstr "%s: AVERTISSEMENT: segment chargeable vide détecté\n" - -#: elf.c:5213 -msgid "%s: unsupported relocation type %s" -msgstr "%s: type de relocalisation non supporté %s" +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "" +"%s: édition de liens spécifiques pour UltraSPARC avec du code spécifique HAL" -#: elfcode.h:1084 +#: elfcode.h:1218 +#, c-format msgid "%s: version count (%ld) does not match symbol count (%ld)" -msgstr "%s: compteur de version (%ld) ne concorde pas avec le symbole du compteur (%ld)" +msgstr "" +"%s: compteur de version (%ld) ne concorde pas avec le symbole du compteur (%" +"ld)" -#: elflink.c:432 +#: elflink.c:434 #, c-format -msgid "%s: Section %s is already to large to put hole of %ld bytes in" -msgstr "%s: section %s est déjà trop grande pour un faire un trou de %ld octets dans" +msgid "%s: Section %s is too large to add hole of %ld bytes" +msgstr "%s: section %s est trop grande pour ajouter un trou de %ld octets" + +#: elflink.h:1113 +#, c-format +msgid "%s: warning: unexpected redefinition of `%s'" +msgstr "%s: AVERTISSEMENT: redéfinition inattendue de `%s'" -#: elflink.h:1465 +#: elflink.h:1784 #, c-format msgid "%s: %s: invalid version %u (max %d)" msgstr "%s: %s: version invalide %u (max %d)" -#: elflink.h:1506 +#: elflink.h:1825 #, c-format msgid "%s: %s: invalid needed version %d" msgstr "%s: %s: version requise invalide %d" -#: elflink.h:1626 +#: elflink.h:1945 #, c-format msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" msgstr "AVERTISSEMENT: taille du symbole `%s' a changé de %lu à %lu dans %s" -#: elflink.h:1872 -msgid "%s: warning: unexpected redefinition of `%s'" -msgstr "%s: AVERTISSEMENT: redéfinition inattendue de `%s'" - -#: elflink.h:3659 +#: elflink.h:4014 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" -msgstr "AVERTISSEMENT: type et taille du symbole dynamique `%s' ne sont pas définis" +msgstr "" +"AVERTISSEMENT: type et taille du symbole dynamique `%s' ne sont pas définis" -#: elflink.h:3931 +#: elflink.h:4320 #, c-format msgid "%s: undefined versioned symbol name %s" msgstr "%s: nom symbole avec version indéfinie %s" -#: elflink.h:5180 +#: elflink.h:4544 elflink.h:4552 elflink.h:6203 elflink.h:7280 +msgid "Error: out of memory" +msgstr "Erreur: mémoire épuisée" + +#: elflink.h:4714 +msgid "Not enough memory to sort relocations" +msgstr "Pas assez de mémoire pour effectuer le trie des relocalisations" + +#: elflink.h:5980 #, c-format msgid "%s: could not find output section %s for input section %s" -msgstr "%s: ne peut repérer la section de sortie %s pour la section d'entrée %s" +msgstr "" +"%s: ne peut repérer la section de sortie %s pour la section d'entrée %s" + +#: elflink.h:6553 +msgid "warning: relocation against removed section; zeroing" +msgstr "" +"AVERTISSEMENT: relocalisation vers une section qui a été enlevée; mise à zéro" -#: i386linux.c:450 m68klinux.c:454 sparclinux.c:452 +#: elflink.h:6583 +msgid "warning: relocation against removed section" +msgstr "AVERTISSEMENT: relocalisation vers une section enlevée" + +#: elflink.h:6596 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "symboles locaux de la section mise à l'écart %s" + +#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 #, c-format msgid "Output file requires shared library `%s'\n" msgstr "La sortie requiert une ilbrairie partagée `%s'\n" -#: i386linux.c:458 m68klinux.c:462 sparclinux.c:460 +#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 #, c-format msgid "Output file requires shared library `%s.so.%s'\n" msgstr "Le fichier de sortie requiert une librairie partagée `%s.so.%s'\n" -#: i386linux.c:646 i386linux.c:696 m68klinux.c:653 m68klinux.c:701 -#: sparclinux.c:649 sparclinux.c:699 +#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 +#: sparclinux.c:655 sparclinux.c:705 #, c-format msgid "Symbol %s not defined for fixups\n" msgstr "Symbole %s n'est pas défini pour les corrections\n" -#: i386linux.c:720 m68klinux.c:725 sparclinux.c:723 +#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 msgid "Warning: fixup count mismatch\n" msgstr "AVERTISSEMENT: correction du compteur qui ne concordait pas\n" -#: ieee.c:167 +#: ieee.c:235 #, c-format msgid "%s: string too long (%d chars, max 65535)" msgstr "%s: chaîne trop longue (%d caractères, max 65535)" -#: ieee.c:297 +#: ieee.c:365 +#, c-format msgid "%s: unrecognized symbol `%s' flags 0x%x" msgstr "%s: symbole non reconnue `%s' fanions 0x%x" -#: ieee.c:793 -#, c-format -msgid "%s: unimplemented ATI record %u for symbol %u" +#: ieee.c:877 +#, fuzzy, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" msgstr "%s: enregistrement ATI non implanté %u pour le symbole %u" -#: ieee.c:818 +#: ieee.c:902 #, c-format msgid "%s: unexpected ATN type %d in external part" msgstr "%s: type ATN inattendu %d dans la partie externe" -#: ieee.c:840 +#: ieee.c:924 +#, c-format msgid "%s: unexpected type after ATN" msgstr "%s: type inattendu après ATN" -#: ihex.c:259 +#: ihex.c:258 #, c-format msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" msgstr "%s:%d: caractères inattendue `%s' dans le fichier Intel hexadécimal\n" -#: ihex.c:369 +#: ihex.c:368 #, c-format -msgid "%s:%d: bad checksum in Intel Hex file (expected %u, found %u)" -msgstr "%s:%d: somme de contrôle erronée dans le fichier Intel hexadécimal (attendu %u, obtenu %u)" +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "" +"%s:%u: somme de contrôle erronée dans le fichier Intel hexadécimal (attendu %" +"u, obtenu %u)" -#: ihex.c:421 +#: ihex.c:422 #, c-format -msgid "%s:%d: bad extended address record length in Intel Hex file" -msgstr "%s:%d: longueur erronée de l'enregistrement d'adresse étendue dans le fichier Intel hexadécimal" +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "" +"%s:%u: longueur erronée de l'enregistrement d'adresse étendue dans le " +"fichier Intel hexadécimal" -#: ihex.c:438 +#: ihex.c:439 #, c-format -msgid "%s:%d: bad extended start address length in Intel Hex file" -msgstr "%s:%d: longueur erronée d'adresse étendue de début dans le fichier Intel hexadécimal" +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "" +"%s:%u: longueur erronée d'adresse étendue de début dans le fichier Intel " +"hexadécimal" -#: ihex.c:455 +#: ihex.c:456 #, c-format -msgid "%s:%d: bad extended linear address record length in Intel Hex file" -msgstr "%s:%d: longueur erronée de l'enregistrement d'adresse étendue linéaire dans le fichier Intel hexadécimal" +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "" +"%s:%u: longueur erronée de l'enregistrement d'adresse étendue linéaire dans " +"le fichier Intel hexadécimal" -#: ihex.c:472 +#: ihex.c:473 #, c-format -msgid "%s:%d: bad extended linear start address length in Intel Hex file" -msgstr "%s:%d: longueur erronée d'adresse étendue linéraire de début dans le fichier Intel hexadécimal" +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "" +"%s:%u: longueur erronée d'adresse étendue linéraire de début dans le fichier " +"Intel hexadécimal" -#: ihex.c:489 +#: ihex.c:490 #, c-format -msgid "%s:%d: unrecognized ihex type %u in Intel Hex file\n" -msgstr "%s:%d: type ihex non reconnu %u dans le fichier Intel hexadécimal\n" +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s:%u: type ihex non reconnu %u dans le fichier Intel hexadécimal\n" -#: ihex.c:609 +#: ihex.c:610 #, c-format msgid "%s: internal error in ihex_read_section" msgstr "%s: erreur interne dans ihex_read_section" -#: ihex.c:644 +#: ihex.c:645 #, c-format msgid "%s: bad section length in ihex_read_section" msgstr "%s: longuer erronée de section dans ihex_read_section" -#: ihex.c:858 -#, c-format -msgid "%s: address 0x%s out of range for Intex Hex file" +#: ihex.c:863 +#, fuzzy, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" msgstr "%s: adresse 0x%s hors gamme pour le fichier Intel hexadécimal" -#: libbfd.c:471 +#: libbfd.c:492 #, c-format msgid "not mapping: data=%lx mapped=%d\n" msgstr "pas de table de projection: données=%lx adresse de la table=%d\n" -#: libbfd.c:474 +#: libbfd.c:495 msgid "not mapping: env var not set\n" msgstr "pas de table de projection: variable d'environnement pas initialisée\n" -#: libbfd.c:1370 -#, c-format -msgid "%s: compiled for a big endian system and target is little endian" -msgstr "" -"%s: compilé pour un système à octets de poids fort alors que la cible\n" -"est un système à octets de poids faible" +#: libbfd.c:1467 +#, fuzzy, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr " à %s ligne %d dans %s\n" + +#: libbfd.c:1470 +#, fuzzy, c-format +msgid "Deprecated %s called\n" +msgstr "%s appel déprécié" -#: libbfd.c:1372 +#: linker.c:1849 #, c-format -msgid "%s: compiled for a little endian system and target is big endian" -msgstr "" -"%s: compilé pour un système à octets de poids faible alors que la cible\n" -"est un système à octets de poids fort" +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "%s: symbole indirect `%s' vers `%s' est une boucle" -#: linker.c:2678 +#: linker.c:2745 #, c-format msgid "Attempt to do relocateable link with %s input and %s output" -msgstr "Tentative de relocalisation d'un lien avec %s à l'entrée et %s à la sortie" +msgstr "" +"Tentative de relocalisation d'un lien avec %s à l'entrée et %s à la sortie" -#: oasys.c:1016 -msgid "%s: can not represent section `%s' in oasys" -msgstr "%s: ne peut représenter la section `%s' dans oasis" +#: merge.c:897 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "%s: accès au-delà de la fin de la section fusionnée (%ld + %ld)" -#: osf-core.c:146 +#: mmo.c:460 #, c-format -msgid "Unhandled OSF/1 core file section type %d\n" -msgstr "Type de section de fichier core OSF/1 non traité %d\n" +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: pas de corps pour allouer un nom de section %s\n" -#. XXX code yet to be written. -#: peicode.h:807 +#: mmo.c:537 #, c-format -msgid "%s: Unhandled import type; %x" -msgstr "%s: type d'importation non traitée; %x" +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: pas de corps pour allouer un symbole %d octets de longueur\n" -#: peicode.h:812 -msgid "%s: Unrecognised import type; %x" -msgstr "%s: type d'importation non reconnu; %x" +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "" +"%s: fichier mmo invalide: valeur d'initialisation pour $255 n'est pas " +"`Main'\n" -#: peicode.h:826 -msgid "%s: Unrecognised import name type; %x" -msgstr "%s: type de nom d'importation non reconnu: %x" +#: mmo.c:1336 +#, c-format +msgid "" +"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " +"starting with `%s'\n" +msgstr "" +"%s: séquence de caractères large 0x%02X 0x%02X non supportée après le nom de " +"symbole débutant avec `%s'\n" -#: peicode.h:1183 +#: mmo.c:1571 #, c-format -msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" -msgstr "%s: type de machine non reconnue (0x%x) dans l'archive de librairie d'importation" +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: fichier mmo invalide: lopcode non supporté `%d'\n" -#: peicode.h:1195 +#: mmo.c:1581 #, c-format -msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive" -msgstr "%s: type de machine reconnue mais non traitée (0x%x) dans l'archive da la librairie de formats d'importation" +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "" +"%s: fichier mmo invalide: attendu YZ = 1 obtenu YZ = %d pour lop_quote\n" -#: peicode.h:1212 +#: mmo.c:1617 #, c-format -msgid "%s: size field is zero in Import Library Format header" -msgstr "%s: taille du champ est zéro dans l'en-tête de la librairie de formats d'importation" +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" +"%s: fichier mmo invalide: attendu z = 1 ou z = 2, obtenu z = %d pour " +"lop_loc\n" -#: peicode.h:1240 +#: mmo.c:1663 #, c-format -msgid "%s: string not null terminated in ILF object file." -msgstr "%s: chaîne n'est pas terminée par un nulle dans le fichier objet ILF." +msgid "" +"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" +"%s: fichier mmo invalide: attendu z = 1 ou z = 2, obtenu z = %d pour " +"lop_fixo\n" -#: peigen.c:993 +#: mmo.c:1702 #, c-format -msgid "%s: line number overflow: 0x%lx > 0xffff" -msgstr "%s: débordement du nombre de lignes: 0x%lx > 0xffff" +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "" +"%s: fichier mmo invalide: attendu y = 0, obtenu y = %d pour lop_fixrx\n" -#: peigen.c:1011 +#: mmo.c:1711 #, c-format -msgid "%s: reloc overflow 1: 0x%lx > 0xffff" -msgstr "%s: débordement de la relocalisation 1: 0x%lx > 0xffff" +msgid "" +"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" +"%s: fichier mmo invalide: attendu z = 16 ou z = 24, obtenu z = %d pour " +"lop_fixrx\n" -#: peigen.c:1024 -msgid "Export Directory [.edata (or where ever we found it)]" -msgstr "Répertoire d'exportation [.edata (ou là où il a été repéré)]" +#: mmo.c:1734 +#, c-format +msgid "" +"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " +"for lop_fixrx\n" +msgstr "" +"%s: fichier mmo invalide: octet de tête du mot de l'opérande doit être 0 ou " +"1, obtenu %d pour lop_fixrx\n" -#: peigen.c:1025 -msgid "Import Directory [parts of .idata]" -msgstr "Répertoire d'importation [faisant partie de .idata]" +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "" +"%s: ne allouer un nom de ficheir pour le no. de fichier %d, %d octets\n" -#: peigen.c:1026 -msgid "Resource Directory [.rsrc]" -msgstr "Répertoire des resources [.rsrc]" - -#: peigen.c:1027 -msgid "Exception Directory [.pdata]" -msgstr "Répertoire des exceptions [.pdata]" - -#: peigen.c:1028 -msgid "Security Directory" -msgstr "Répertoire de la sécurité" - -#: peigen.c:1029 -msgid "Base Relocation Directory [.reloc]" -msgstr "Répertoire de base de relocalisation [.reloc]" - -#: peigen.c:1030 -msgid "Debug Directory" -msgstr "Répertoire de débug" - -#: peigen.c:1031 -msgid "Description Directory" -msgstr "Répertoire de description" - -#: peigen.c:1032 -msgid "Special Directory" -msgstr "Répertoire spécial" - -#: peigen.c:1033 MRO -msgid "Thread Storage Directory [.tls]" -msgstr "Répertoire des files de stockage [.tls]" - -#: peigen.c:1034 -msgid "Load Configuration Directory" -msgstr "Répertoire de chargement de configuration" - -#: peigen.c:1035 -msgid "Bound Import Directory" -msgstr "Répertoire des importations limitées" - -#: peigen.c:1036 -msgid "Import Address Table Directory" -msgstr "Répertoire de la table d'adresse d'importation" - -#: peigen.c:1037 -msgid "Delay Import Directory" -msgstr "Répertoire des délais d'importation" - -#: peigen.c:1038 peigen.c:1039 -msgid "Reserved" -msgstr "Réservé" - -#: peigen.c:1103 -msgid "\nThere is an import table, but the section containing it could not be found\n" -msgstr "\nIl y a une table d'importation, mais la section la contenant ne peut être repérée\n" - -#: peigen.c:1108 -#, c-format -msgid "\nThere is an import table in %s at 0x%lx\n" -msgstr "\nIl y a une table d'importation dans %s à 0x%lx\n" - -#: peigen.c:1147 -#, c-format -msgid "\nFunction descriptor located at the start address: %04lx\n" -msgstr "\nDescripteur de fonction localisé à l'adresse de départ: %04lx\n" - -#: peigen.c:1150 +#: mmo.c:1777 #, c-format -msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" -msgstr "\tcode-base %08lx tab. des entrées (chargeable/actuel) %08lx/%08lx\n" - -#: peigen.c:1156 -msgid "\nNo reldata section! Function descriptor not decoded.\n" -msgstr "\nPas de section reldata! Descripteur de fonction n'a pas été décodé.\n" +msgid "" +"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" +"%s: fichier mmo invalide: no. de fichier %d `%s', a déjà été entré comme `%" +"s'\n" -#: peigen.c:1161 +#: mmo.c:1790 #, c-format -msgid "\nThe Import Tables (interpreted %s section contents)\n" -msgstr "\nLes tables d'importation (contenus interprétés de la section %s)\n" - -#: peigen.c:1164 MRO -msgid " vma: Hint Time Forward DLL First\n" -msgstr " vma: Hint Heure Forward DLL Premier\n" - -#: peigen.c:1166 MRO -msgid " Table Stamp Chain Name Thunk\n" -msgstr " Table Tampon Chaîne Nom Thunk\n" - -#: peigen.c:1216 -msgid "\n\tDLL Name: %s\n" -msgstr "\n\tNom DLL: %s\n" - -#: peigen.c:1220 peigen.c:1283 MRO -msgid "\tvma: Hint/Ord Member-Name\n" -msgstr "\tvma: Hint/Nom-de-membre nombre ordinal\n" - -#: peigen.c:1282 -msgid "\tThe Import Address Table (difference found)\n" -msgstr "\tL'adresse de la table d'importation (différence détectée)\n" - -#: peigen.c:1289 -msgid "\t>>> Ran out of IAT members!\n" -msgstr "\t>>> membres IAT tous utilisés!\n" - -#: peigen.c:1308 -msgid "\tThe Import Address Table is identical\n" -msgstr "\tL'adresse de la table d'importation est identique\n" - -#: peigen.c:1381 -msgid "\nThere is an export table, but the section containing it could not be found\n" -msgstr "\nIl y a une table d'exportation, mais la section la contenant n'a pu être repérée\n" +msgid "" +"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" +"%s: fichier mmo invalide: nom de fichier %d n'a pas été spécifié avant son " +"utilisation\n" -#: peigen.c:1386 +#: mmo.c:1896 #, c-format -msgid "\nThere is an export table in %s at 0x%lx\n" -msgstr "\nIl y a une table d'exportation dans %s à 0x%lx\n" +msgid "" +"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" +"%s: fichier mmo invalide: champs y et z de lop_stab non null, y: %d, z: %d\n" -#: peigen.c:1417 +#: mmo.c:1932 #, c-format -msgid "\nThe Export Tables (interpreted %s section contents)\n\n" -msgstr "\nLes tables d'exportation (contenus interprétés de la section %s)\n\n" +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "" +"%s: fichier mmo invalide: lop_end N,est pas le dernier item dans le fichier\n" -#: peigen.c:1421 +#: mmo.c:1945 #, c-format -msgid "Export Flags \t\t\t%lx\n" -msgstr "Fanion d'exportation \t\t\t%lx\n" +msgid "" +"%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras " +"to the preceding lop_stab (%ld)\n" +msgstr "" +"%s: fichier mmo invalide: YZ de lop_end (%ld) n'est pas égal au nombre de " +"teras du lop_stab précédent (%ld)\n" -#: peigen.c:1424 +#: mmo.c:2610 #, c-format -msgid "Time/Date stamp \t\t%lx\n" -msgstr "Tampon Heure/Date \t\t%lx\n" +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: table de symboles invalides: duplication du symbole `%s'\n" -#: peigen.c:1427 +#: mmo.c:2898 #, c-format -msgid "Major/Minor \t\t\t%d/%d\n" -msgstr "Majeur/Mineur \t\t\t%d/%d\n" - -#: peigen.c:1430 -msgid "Name \t\t\t\t" -msgstr "Nom \t\t\t\t" +msgid "" +"%s: Bad symbol definition: `Main' set to %s rather than the start address %" +"s\n" +msgstr "" +"%s: définition de symbole erronée: `Main' initialisé à %s au lieu de " +"l'adresse de départ %s\n" -#: peigen.c:1436 +#: mmo.c:2932 #, c-format -msgid "Ordinal Base \t\t\t%ld\n" -msgstr "base de nombre ordinal \t\t\t%ld\n" - -#: peigen.c:1439 -msgid "Number in:\n" -msgstr "Numéro dans:\n" +msgid "" +"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " +"%d. Only `Main' will be emitted.\n" +msgstr "" +"%s: avertissement: table de symboles trop grande pour mmo, plus grande que " +"65535 mots de 32 bits: %d. Seul `Main' sera produit.\n" -#: peigen.c:1442 +#: mmo.c:2977 #, c-format -msgid "\tExport Address Table \t\t%08lx\n" -msgstr "\tTable d'adresses d'exportation \t\t%08lx\n" +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "" +"%s: erreur interne, table de symbole a changé de taille de %d à %d mots\n" -#: peigen.c:1446 +#: mmo.c:3032 #, c-format -msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" -msgstr "\tTable de noms [Pointeur/Nombre ordinal]\t%08lx\n" +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: erreur interne, registre interne de section %s a du contenu\n" -#: peigen.c:1449 -msgid "Table Addresses\n" -msgstr "Table d'adresses\n" - -#: peigen.c:1452 -msgid "\tExport Address Table \t\t" -msgstr "\tTable d'adresse d'exportation \t\t" - -#: peigen.c:1457 -msgid "\tName Pointer Table \t\t" -msgstr "\tTable des noms de pointeurs \t\t" - -#: peigen.c:1462 -msgid "\tOrdinal Table \t\t\t" -msgstr "\tTable des ordinals \t\t\t" - -#: peigen.c:1476 +#: mmo.c:3084 #, c-format -msgid "\nExport Address Table -- Ordinal Base %ld\n" -msgstr "\nTable d'adresses d'exportation -- base de nombre ordinal %ld\n" +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: pas de registres initialisés; section de longeur 0\n" -#: peigen.c:1495 -msgid "Forwarder RVA" -msgstr "Adresseur RVA" - -#: peigen.c:1506 -msgid "Export RVA" -msgstr "Exportation RVA" - -#: peigen.c:1513 -msgid "\n[Ordinal/Name Pointer] Table\n" -msgstr "\nTable [Ordinal/Nom de pointeurs]\n" - -#: peigen.c:1568 +#: mmo.c:3090 #, c-format -msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" -msgstr "AVERTISSEMENT, taille de la section .pdata (%ld) n'est pas un multiple de %d\n" - -#: peigen.c:1572 -msgid "\nThe Function Table (interpreted .pdata section contents)\n" -msgstr "\nLa table de fonctions (interprétation du contenu de la section .pdata)\n" - -#: peigen.c:1575 -msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" -msgstr " vma:\t\t\tDébut Adresse Fin Adresse Unwind Info\n" - -#: peigen.c:1578 -msgid " vma:\t\tBegin End EH EH PrologEnd Exception\n" -msgstr " vma:\t\tDébut Fin EH EH FinProlog Exception\n" - -#: peigen.c:1580 -msgid " \t\tAddress Address Handler Data Address Mask\n" -msgstr " \t\tAdresse Adresse Routine Données Adresse Masque\n" - -#: peigen.c:1652 -msgid " Register save millicode" -msgstr " Registre a préservé le millicode" - -#: peigen.c:1655 -msgid " Register restore millicode" -msgstr " Registre a restauré le millicode" - -#: peigen.c:1658 -msgid " Glue code sequence" -msgstr " Séquence du code de liants" - -#: peigen.c:1709 -msgid "\n\nPE File Base Relocations (interpreted .reloc section contents)\n" -msgstr "\n\nFichier de base des relocalisation PE (contenus interprétés de la section .reloc)\n" +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: trop de resigstres initialisés; longueur de section %ld\n" -#: peigen.c:1744 +#: mmo.c:3095 #, c-format -msgid "\nVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" -msgstr "\nAdresse virtuelle: %08lx taille des morceaux %ld (0x%lx) nombre de correctifs %ld\n" +msgid "" +"%s: invalid start address for initialized registers of length %ld: 0x%lx%" +"08lx\n" +msgstr "" +"%s: adresse de départ invalide pour des registres initialisés de longueur %" +"ld: 0x%lx%08lx\n" -#: peigen.c:1757 +#: oasys.c:1036 #, c-format -msgid "\treloc %4d offset %4x [%4lx] %s" -msgstr "\trelocalisation %4d décalage %4x [%4lx] %s" +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: ne peut représenter la section `%s' dans oasis" -#. The MS dumpbin program reportedly ands with 0xff0f before -#. printing the characteristics field. Not sure why. No reason to -#. emulate it here. -#: peigen.c:1796 +#: osf-core.c:132 #, c-format -msgid "\nCharacteristics 0x%x\n" -msgstr "\nCaractéristiques 0x%x\n" +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Type de section de fichier core OSF/1 non traité %d\n" -#: pe-mips.c:653 +#: pe-mips.c:658 #, c-format msgid "%s: `ld -r' not supported with PE MIPS objects\n" msgstr "%s: `ld -r' non supporté avec les objets PE MIPS\n" @@ -1677,398 +2029,946 @@ msgstr "%s: `ld -r' non supporté avec le #. mem = pointer to memory we're fixing up #. val = VMA of what we need to refer to #. -#: pe-mips.c:789 +#: pe-mips.c:794 +#, c-format msgid "%s: unimplemented %s\n" msgstr "%s: non implanté %s\n" -#: pe-mips.c:815 +#: pe-mips.c:820 #, c-format msgid "%s: jump too far away\n" msgstr "%s: le saut va trop loin\n" -#: pe-mips.c:842 +#: pe-mips.c:847 #, c-format msgid "%s: bad pair/reflo after refhi\n" msgstr "%s: pairage erronée pair/reflo après refhi\n" -#: ppcboot.c:422 -msgid "\nppcboot header:\n" -msgstr "\nEn-têtes ppcboot:\n" +#. XXX code yet to be written. +#: peicode.h:785 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: type d'importation non traitée; %x" + +#: peicode.h:790 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: type d'importation non reconnu; %x" + +#: peicode.h:804 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: type de nom d'importation non reconnu: %x" -#: ppcboot.c:423 +#: peicode.h:1162 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "" +"%s: type de machine non reconnue (0x%x) dans l'archive de librairie " +"d'importation" + +#: peicode.h:1174 +#, c-format +msgid "" +"%s: Recognised but unhandled machine type (0x%x) in Import Library Format " +"archive" +msgstr "" +"%s: type de machine reconnue mais non traitée (0x%x) dans l'archive da la " +"librairie de formats d'importation" + +#: peicode.h:1191 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "" +"%s: taille du champ est zéro dans l'en-tête de la librairie de formats " +"d'importation" + +#: peicode.h:1219 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: chaîne n'est pas terminée par un nulle dans le fichier objet ILF." + +#: ppcboot.c:416 +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"En-têtes ppcboot:\n" + +#: ppcboot.c:417 #, c-format msgid "Entry offset = 0x%.8lx (%ld)\n" msgstr "Décalage de l'entrée= 0x%.8lx (%ld)\n" -#: ppcboot.c:424 +#: ppcboot.c:418 +#, c-format msgid "Length = 0x%.8lx (%ld)\n" msgstr "Longueur = 0x%.8lx (%ld)\n" -#: ppcboot.c:427 +#: ppcboot.c:421 #, c-format msgid "Flag field = 0x%.2x\n" msgstr "Champ de fanion = 0x%.2x\n" -#: ppcboot.c:433 +#: ppcboot.c:427 #, c-format msgid "Partition name = \"%s\"\n" msgstr "Nom de partition = \"%s\"\n" -#: ppcboot.c:452 +#: ppcboot.c:446 #, c-format -msgid "\nPartition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" -msgstr "\nDébut de partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgid "" +"\n" +"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "" +"\n" +"Début de partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" -#: ppcboot.c:458 +#: ppcboot.c:452 #, c-format msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" msgstr "Fin de la partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" -#: ppcboot.c:464 +#: ppcboot.c:458 #, c-format msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" msgstr "Secteur de la partition[%d] = 0x%.8lx (%ld)\n" -#: ppcboot.c:465 +#: ppcboot.c:459 #, c-format msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "Longueur de la partition[%d] = 0x%.8lx (%ld)\n" -#: som.c:5355 +#: som.c:5402 msgid "som_sizeof_headers unimplemented" msgstr "som_sizeof_headers non implanté" -#: srec.c:300 +#: srec.c:301 #, c-format msgid "%s:%d: Unexpected character `%s' in S-record file\n" msgstr "%s:%d: caractère inattendue `%s' dans le fichier S-record\n" -#: syms.c:968 +#: syms.c:998 msgid "Unsupported .stab relocation" msgstr "Relocalisation du .stab non supporté" -#: vms-gsd.c:354 +#: vms-gsd.c:356 +#, c-format msgid "bfd_make_section (%s) failed" msgstr "Échec de bfd_make_section (%s)" -#: vms-gsd.c:368 +#: vms-gsd.c:371 #, c-format msgid "bfd_set_section_flags (%s, %x) failed" msgstr "bfd_set_section_flags (%s, %x) a échoué" -#: vms-gsd.c:404 +#: vms-gsd.c:407 #, c-format msgid "Size mismatch section %s=%lx, %s=%lx" msgstr "Taille de section ne concorde pas %s=%lx, %s=%lx" -#: vms-gsd.c:699 +#: vms-gsd.c:704 +#, c-format msgid "unknown gsd/egsd subtype %d" msgstr "sous type gsd/egsd inconnu %d" -#: vms-hdr.c:403 +#: vms-hdr.c:406 msgid "Object module NOT error-free !\n" msgstr "Module objet N'EST PAS sans erreur !\n" -#: vms-misc.c:539 +#: vms-misc.c:543 #, c-format msgid "Stack overflow (%d) in _bfd_vms_push" msgstr "Débordement de la pile (%d) dans _bfd_vms_push" -#: vms-misc.c:557 +#: vms-misc.c:561 msgid "Stack underflow in _bfd_vms_pop" msgstr "Sous dépilage de la pile dans _bfd_vms_pop" -#: vms-misc.c:915 +#: vms-misc.c:919 msgid "_bfd_vms_output_counted called with zero bytes" msgstr "_bfd_vms_output_counted appelé avec un compte de zéro octet" -#: vms-misc.c:920 +#: vms-misc.c:924 msgid "_bfd_vms_output_counted called with too many bytes" msgstr "_bfd_vms_output_counted appelé avec trop d'octets" -#: vms-misc.c:1051 +#: vms-misc.c:1055 #, c-format msgid "Symbol %s replaced by %s\n" msgstr "Symbole %s remplacé par %s\n" -#: vms-misc.c:1113 +#: vms-misc.c:1117 +#, c-format msgid "failed to enter %s" msgstr "échec d'insertion de %s" -#: vms-tir.c:68 +#: vms-tir.c:81 msgid "No Mem !" msgstr "Mémoire épuisée!" -#: vms-tir.c:302 -msgid "Bad section index in ETIR_S_C_STA_PQ" +#: vms-tir.c:362 +#, fuzzy, c-format +msgid "bad section index in %s" msgstr "Index de section erronée dans ETIR_S_C_STA_PQ" -#: vms-tir.c:317 -msgid "Unsupported STA cmd %d" +#: vms-tir.c:375 +#, fuzzy, c-format +msgid "unsupported STA cmd %s" msgstr "Commande STA non supportée %d" -#: vms-tir.c:322 vms-tir.c:1274 -#, c-format -msgid "Reserved STA cmd %d" +#: vms-tir.c:380 vms-tir.c:1240 +#, fuzzy, c-format +msgid "reserved STA cmd %d" msgstr "Commande STA réservée %d" -#: vms-tir.c:428 -#, c-format -msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" -msgstr "ETIR_S_C_STO_GBL: pas de symbole \"%s\"" - -#: vms-tir.c:449 -#, c-format -msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" -msgstr "ETIR_S_C_STO_CA: pas de symbole \"%s\"" - -#: vms-tir.c:462 -msgid "ETIR_S_C_STO_RB/AB: Not supported" -msgstr "ETIR_S_C_STO_RB/AB: non supporté" - -#: vms-tir.c:520 -msgid "ETIR_S_C_STO_LP_PSB: Not supported" -msgstr "ETIR_S_C_STO_LP_PSB: non supporté" +#: vms-tir.c:491 vms-tir.c:514 +#, fuzzy, c-format +msgid "%s: no symbol \"%s\"" +msgstr "%s: pas de tel symbole" -#: vms-tir.c:526 -msgid "ETIR_S_C_STO_HINT_GBL: not implemented" -msgstr "ETIR_S_C_STO_HINT_GBL: pas implanté" +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829 +#: vms-tir.c:838 vms-tir.c:1563 +#, fuzzy, c-format +msgid "%s: not supported" +msgstr "n'est pas supportée" -#: vms-tir.c:532 -msgid "ETIR_S_C_STO_HINT_PS: not implemented" -msgstr "ETIR_S_C_STO_HINT_PS: pas implanté" +#: vms-tir.c:586 vms-tir.c:1418 +#, fuzzy, c-format +msgid "%s: not implemented" +msgstr "%s: non implanté %s\n" -#: vms-tir.c:536 vms-tir.c:1446 -#, c-format -msgid "Reserved STO cmd %d" +#: vms-tir.c:590 vms-tir.c:1422 +#, fuzzy, c-format +msgid "reserved STO cmd %d" msgstr "Commande STO réservée %d" -#: vms-tir.c:649 -msgid "ETIR_S_C_OPR_INSV: Not supported" -msgstr "ETIR_S_C_OPR_INSV: non supporté" - -#: vms-tir.c:667 -msgid "ETIR_S_C_OPR_USH: Not supported" -msgstr "ETIR_S_C_OPR_USH: non supporté" - -#: vms-tir.c:673 -msgid "ETIR_S_C_OPR_ROT: Not supported" -msgstr "ETIR_S_C_OPR_ROT: non supporté" - -#: vms-tir.c:692 -msgid "ETIR_S_C_OPR_REDEF: Not supported" -msgstr "ETIR_S_C_OPR_REDEF: non supporté" - -#: vms-tir.c:698 -msgid "ETIR_S_C_OPR_DFLIT: Not supported" -msgstr "ETIR_S_C_OPR_DFLIT: non supporté" - -#: vms-tir.c:702 vms-tir.c:1641 -#, c-format -msgid "Reserved OPR cmd %d" +#: vms-tir.c:708 vms-tir.c:1568 +#, fuzzy, c-format +msgid "reserved OPR cmd %d" msgstr "Commande OPR réservée %d" -#: vms-tir.c:770 vms-tir.c:1710 -#, c-format -msgid "Reserved CTL cmd %d" +#: vms-tir.c:776 vms-tir.c:1632 +#, fuzzy, c-format +msgid "reserved CTL cmd %d" msgstr "Commande CTL réservée %d" -#: vms-tir.c:798 -msgid "ETIR_S_C_STC_LP: not supported" -msgstr "ETIR_S_C_STC_LP: non supporté" - -#: vms-tir.c:816 -msgid "ETIR_S_C_STC_GBL: not supported" -msgstr "ETIR_S_C_STC_GBL: non supporté" - -#: vms-tir.c:824 -msgid "ETIR_S_C_STC_GCA: not supported" -msgstr "ETIR_S_C_STC_GCA: non supporté" - -#: vms-tir.c:833 -msgid "ETIR_S_C_STC_PS: not supported" -msgstr "ETIR_S_C_STC_PS: non supporté" - -#. -#. * stack byte from image -#. * arg: - -#. * -#. -#: vms-tir.c:1174 -msgid "Stack-from-image not implemented" +#. stack byte from image +#. arg: none. +#: vms-tir.c:1148 +#, fuzzy +msgid "stack-from-image not implemented" msgstr "Stack-from-image non implanté" -#: vms-tir.c:1194 -msgid "Stack-entry-mask not fully implemented" +#: vms-tir.c:1166 +#, fuzzy +msgid "stack-entry-mask not fully implemented" msgstr "Stack-entry-mask pas complètement implanté" +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor #. -#. * compare procedure argument -#. * arg: cs symbol name -#. * by argument index -#. * da argument descriptor -#. * -#. * compare argument descriptor with symbol argument (ARG$V_PASSMECH) -#. * and stack TRUE (args match) or FALSE (args dont match) value -#. -#: vms-tir.c:1210 +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1180 msgid "PASSMECH not fully implemented" msgstr "PASSMECH pas complètement implanté" -#: vms-tir.c:1230 -msgid "Stack-local-symbol not fully implemented" +#: vms-tir.c:1199 +#, fuzzy +msgid "stack-local-symbol not fully implemented" msgstr "Stack-local-symbol pas complètement implanté" -#: vms-tir.c:1245 -msgid "Stack-literal not fully implemented" +#: vms-tir.c:1212 +#, fuzzy +msgid "stack-literal not fully implemented" msgstr "Stack-literal pas complètement implanté" -#: vms-tir.c:1267 -msgid "Stack-local-symbol-entry-point-mask not fully implemented" +#: vms-tir.c:1233 +#, fuzzy +msgid "stack-local-symbol-entry-point-mask not fully implemented" msgstr "Stack-local-symbol-entry-point-mask pas complètement implanté" -#: vms-tir.c:1442 -#, c-format -msgid "Unimplemented STO cmd %d" -msgstr "Commande STO non implantée %d" - -#: vms-tir.c:1581 -msgid "TIR_S_C_OPR_ASH incomplete" -msgstr "TIR_S_C_OPR_ASH incomplète" - -#: vms-tir.c:1595 -msgid "TIR_S_C_OPR_USH incomplete" -msgstr "TIR_S_C_OPR_USH incomplète" - -#: vms-tir.c:1609 -msgid "TIR_S_C_OPR_ROT incomplete" -msgstr "TIR_S_C_OPR_ROT incomplète" - -#. -#. * redefine symbol to current location -#. -#: vms-tir.c:1630 -msgid "TIR_S_C_OPR_REDEF not supported" -msgstr "TIR_S_C_OPR_REDEF non supporté" - -#. -#. * define a literal -#. -#: vms-tir.c:1637 -msgid "TIR_S_C_OPR_DFLIT not supported" -msgstr "TIR_S_C_OPR_DFLIT non supporté" - -#: vms-tir.c:1691 -msgid "TIR_S_C_CTL_DFLOC not fully implemented" -msgstr "TIR_S_C_CTL_DFLOC pas complètement implanté" - -#: vms-tir.c:1699 -msgid "TIR_S_C_CTL_STLOC not fully implemented" -msgstr "TIR_S_C_CTL_STLOC pas complètement implanté" - -#: vms-tir.c:1707 -msgid "TIR_S_C_CTL_STKDL not fully implemented" -msgstr "TIR_S_C_CTL_STKDL n'est pas complètement implanté" +#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611 +#: vms-tir.c:1619 vms-tir.c:1627 +#, fuzzy, c-format +msgid "%s: not fully implemented" +msgstr "PASSMECH pas complètement implanté" -#: vms-tir.c:1761 -msgid "Obj code %d not found" +#: vms-tir.c:1684 +#, fuzzy, c-format +msgid "obj code %d not found" msgstr "Code objet %d non repéré" -#: vms-tir.c:2102 +#: vms-tir.c:2019 #, c-format msgid "SEC_RELOC with no relocs in section %s" msgstr "SEC_RELOC sans relocalisation dans la section %s" -#: vms-tir.c:2376 +#: vms-tir.c:2307 +#, c-format msgid "Unhandled relocation %s" msgstr "Relocalisation non traitée: %s" -#: xcofflink.c:1634 +#: xcofflink.c:1241 #, c-format msgid "%s: `%s' has line numbers but no enclosing section" msgstr "%s: `%s' contient des numéros de lignes mais de section de fermeture" -#: xcofflink.c:1686 +#: xcofflink.c:1294 #, c-format msgid "%s: class %d symbol `%s' has no aux entries" msgstr "%s: classe %d symbole `%s' n'a pas d'entrée auxiliaire" -#: xcofflink.c:1709 +#: xcofflink.c:1317 #, c-format msgid "%s: symbol `%s' has unrecognized csect type %d" msgstr "%s: symbole `%s' a un type csect non reconnu %d" -#: xcofflink.c:1721 +#: xcofflink.c:1329 #, c-format msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" msgstr "%s: symbole XTY_ER erroné `%s': classe %d scnum %d scnlen %d" -#: xcofflink.c:1760 +#: xcofflink.c:1365 #, c-format msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" msgstr "%s: XMC_TC0 symbol `%s' est la classe %d scnlen %d" -#: xcofflink.c:1883 +#: xcofflink.c:1517 #, c-format -msgid "%s: symbol `%s' has unrecognized smclas %d" -msgstr "%s: symbole `%s' a une classe smclas non reconnue %d" - -#: xcofflink.c:1902 msgid "%s: csect `%s' not in enclosing section" msgstr "%s: csect `%s' n'est pas dans un section fermée" -#: xcofflink.c:2006 +#: xcofflink.c:1624 #, c-format msgid "%s: misplaced XTY_LD `%s'" msgstr "%s: XTY_LD mal placé `%s'" -#: xcofflink.c:2317 +#: xcofflink.c:1948 #, c-format msgid "%s: reloc %s:%d not in csect" msgstr "%s: relocalisation %s:%d n'est pas dans csect" -#: xcofflink.c:2452 +#: xcofflink.c:2083 #, c-format msgid "%s: XCOFF shared object when not producing XCOFF output" msgstr "%s: objet XCOFF partagé sans être en production de sortie XCOFF" -#: xcofflink.c:2473 +#: xcofflink.c:2104 #, c-format msgid "%s: dynamic object with no .loader section" msgstr "%s: objet dynamique sans section .loader" -#: xcofflink.c:3113 +#: xcofflink.c:2749 +#, c-format msgid "%s: no such symbol" msgstr "%s: pas de tel symbole" -#: xcofflink.c:3704 +#: xcofflink.c:2890 +msgid "error: undefined symbol __rtinit" +msgstr "erreur: symbole __rtinit indéfini" + +#: xcofflink.c:3458 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "AVERTISSEMENT: tentative d'exportation d'un symbole indéfini `%s'" -#: xcofflink.c:4698 +#: xcofflink.c:4452 #, c-format msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" -msgstr "Débordement de la table des entrées: 0x%lx > 0x10000; essayer l'option -mminimal-toc" +msgstr "" +"Débordement de la table des entrées: 0x%lx > 0x10000; essayer l'option -" +"mminimal-toc" -#: xcofflink.c:5523 xcofflink.c:5879 xcofflink.c:5916 xcofflink.c:6233 +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 +#, c-format msgid "%s: loader reloc in unrecognized section `%s'" msgstr "%s: chargeur de relocalisation dans une section non reconnnue `%s'" -#: xcofflink.c:5545 xcofflink.c:6244 +#: xcofflink.c:5314 xcofflink.c:6128 #, c-format msgid "%s: `%s' in loader reloc but not loader sym" -msgstr "%s: `%s' est dans le chargeur de relocalisation mais pas dans celui des symboles" +msgstr "" +"%s: `%s' est dans le chargeur de relocalisation mais pas dans celui des " +"symboles" -#: xcofflink.c:5560 +#: xcofflink.c:5329 +#, c-format msgid "%s: loader reloc in read-only section %s" msgstr "%s: chargeur de relocalisation dans un section en lecture seulement %s" -#: xcofflink.c:6440 -msgid "%s: unsupported relocation type 0x%02x" -msgstr "%s: type de relocalisation non supporté 0x%02x" +#: elf32-ia64.c:2189 elf64-ia64.c:2189 +msgid "@pltoff reloc against local symbol" +msgstr "relocalisation @pltoff vers un symbole local" -#: xcofflink.c:6486 +#: elf32-ia64.c:3413 elf64-ia64.c:3413 #, c-format -msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" -msgstr "%s: table des matières des relocalisation à 0x%x pour les symboles `%s' sans aucune entrée dans la table des matières" +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: débordement du segment de données court (0x%lx >= 0x400000)" + +#: elf32-ia64.c:3424 elf64-ia64.c:3424 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp ne couvre pas ce segment de données court" + +#: elf32-ia64.c:3728 elf64-ia64.c:3728 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "%s: liaison de code non-pic dans une librairie partagée" + +#: elf32-ia64.c:3761 elf64-ia64.c:3761 +#, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: relocalisation @gprel vers le symbole dynamique %s" + +#: elf32-ia64.c:3900 elf64-ia64.c:3900 +#, c-format +msgid "%s: dynamic relocation against speculation fixup" +msgstr "%s: relocalisation dynamique vers un correctif spéculé" + +#: elf32-ia64.c:3908 elf64-ia64.c:3908 +#, c-format +msgid "%s: speculation fixup against undefined weak symbol" +msgstr "%s: correctif spéculé vers un symbole faible indéfini" + +#: elf32-ia64.c:4092 elf64-ia64.c:4092 +msgid "unsupported reloc" +msgstr "relocalisation non supporté" + +#: elf32-ia64.c:4372 elf64-ia64.c:4372 +#, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "" +"%s: édition de liens trap-on-NULL-dereference avec des fichiers non-trapping" + +#: elf32-ia64.c:4381 elf64-ia64.c:4381 +#, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "" +"%s: édition de liens pour des fichiers en système à octets de poids fort\n" +"avec des fichiers pour des systèmes à octets de poids faible" + +#: elf32-ia64.c:4390 elf64-ia64.c:4390 +#, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "" +"%s: édition de liens de fichiers de 64 bits avec des fichiers de 32 bits" + +#: elf32-ia64.c:4399 elf64-ia64.c:4399 +#, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "" +"%s: édition de liens de fichiers constant-gp avec des fichier non-constant-gp" + +#: elf32-ia64.c:4409 elf64-ia64.c:4409 +#, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "" +"%s: édition de liens de fichiers auto-pic avec des fichiers non-auto-pic" + +#: peigen.c:962 pepigen.c:962 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: débordement du nombre de lignes: 0x%lx > 0xffff" + +#: peigen.c:979 pepigen.c:979 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: débordement de la relocalisation 1: 0x%lx > 0xffff" + +#: peigen.c:993 pepigen.c:993 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Répertoire d'exportation [.edata (ou là où il a été repéré)]" + +#: peigen.c:994 pepigen.c:994 +msgid "Import Directory [parts of .idata]" +msgstr "Répertoire d'importation [faisant partie de .idata]" + +#: peigen.c:995 pepigen.c:995 +msgid "Resource Directory [.rsrc]" +msgstr "Répertoire des resources [.rsrc]" + +#: peigen.c:996 pepigen.c:996 +msgid "Exception Directory [.pdata]" +msgstr "Répertoire des exceptions [.pdata]" + +#: peigen.c:997 pepigen.c:997 +msgid "Security Directory" +msgstr "Répertoire de la sécurité" + +#: peigen.c:998 pepigen.c:998 +msgid "Base Relocation Directory [.reloc]" +msgstr "Répertoire de base de relocalisation [.reloc]" + +#: peigen.c:999 pepigen.c:999 +msgid "Debug Directory" +msgstr "Répertoire de débug" + +#: peigen.c:1000 pepigen.c:1000 +msgid "Description Directory" +msgstr "Répertoire de description" + +#: peigen.c:1001 pepigen.c:1001 +msgid "Special Directory" +msgstr "Répertoire spécial" + +#: peigen.c:1002 pepigen.c:1002 +msgid "Thread Storage Directory [.tls]" +msgstr "Répertoire des files de stockage [.tls]" + +#: peigen.c:1003 pepigen.c:1003 +msgid "Load Configuration Directory" +msgstr "Répertoire de chargement de configuration" + +#: peigen.c:1004 pepigen.c:1004 +msgid "Bound Import Directory" +msgstr "Répertoire des importations limitées" + +#: peigen.c:1005 pepigen.c:1005 +msgid "Import Address Table Directory" +msgstr "Répertoire de la table d'adresse d'importation" + +#: peigen.c:1006 pepigen.c:1006 +msgid "Delay Import Directory" +msgstr "Répertoire des délais d'importation" + +#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +msgid "Reserved" +msgstr "Réservé" + +#: peigen.c:1071 pepigen.c:1071 +msgid "" +"\n" +"There is an import table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Il y a une table d'importation, mais la section la contenant ne peut être " +"repérée\n" + +#: peigen.c:1076 pepigen.c:1076 +#, c-format +msgid "" +"\n" +"There is an import table in %s at 0x%lx\n" +msgstr "" +"\n" +"Il y a une table d'importation dans %s à 0x%lx\n" + +#: peigen.c:1113 pepigen.c:1113 +#, c-format +msgid "" +"\n" +"Function descriptor located at the start address: %04lx\n" +msgstr "" +"\n" +"Descripteur de fonction localisé à l'adresse de départ: %04lx\n" + +#: peigen.c:1116 pepigen.c:1116 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\tcode-base %08lx tab. des entrées (chargeable/actuel) %08lx/%08lx\n" + +#: peigen.c:1122 pepigen.c:1122 +msgid "" +"\n" +"No reldata section! Function descriptor not decoded.\n" +msgstr "" +"\n" +"Pas de section reldata! Descripteur de fonction n'a pas été décodé.\n" + +#: peigen.c:1127 pepigen.c:1127 +#, c-format +msgid "" +"\n" +"The Import Tables (interpreted %s section contents)\n" +msgstr "" +"\n" +"Les tables d'importation (contenus interprétés de la section %s)\n" + +#: peigen.c:1130 pepigen.c:1130 +#, fuzzy +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" +msgstr " Table Tampon Chaîne Nom Thunk\n" + +#: peigen.c:1180 pepigen.c:1180 +#, c-format +msgid "" +"\n" +"\tDLL Name: %s\n" +msgstr "" +"\n" +"\tNom DLL: %s\n" + +#: peigen.c:1184 peigen.c:1247 pepigen.c:1184 pepigen.c:1247 +msgid "\tvma: Hint/Ord Member-Name\n" +msgstr "\tvma: Hint/Nom-de-membre nombre ordinal\n" + +#: peigen.c:1246 pepigen.c:1246 +msgid "\tThe Import Address Table (difference found)\n" +msgstr "\tL'adresse de la table d'importation (différence détectée)\n" + +#: peigen.c:1253 pepigen.c:1253 +msgid "\t>>> Ran out of IAT members!\n" +msgstr "\t>>> membres IAT tous utilisés!\n" + +#: peigen.c:1271 pepigen.c:1271 +msgid "\tThe Import Address Table is identical\n" +msgstr "\tL'adresse de la table d'importation est identique\n" + +#: peigen.c:1343 pepigen.c:1343 +msgid "" +"\n" +"There is an export table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Il y a une table d'exportation, mais la section la contenant n'a pu être " +"repérée\n" + +#: peigen.c:1348 pepigen.c:1348 +#, c-format +msgid "" +"\n" +"There is an export table in %s at 0x%lx\n" +msgstr "" +"\n" +"Il y a une table d'exportation dans %s à 0x%lx\n" + +#: peigen.c:1379 pepigen.c:1379 +#, c-format +msgid "" +"\n" +"The Export Tables (interpreted %s section contents)\n" +"\n" +msgstr "" +"\n" +"Les tables d'exportation (contenus interprétés de la section %s)\n" +"\n" + +#: peigen.c:1383 pepigen.c:1383 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Fanion d'exportation \t\t\t%lx\n" + +#: peigen.c:1386 pepigen.c:1386 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "Tampon Heure/Date \t\t%lx\n" + +#: peigen.c:1389 pepigen.c:1389 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Majeur/Mineur \t\t\t%d/%d\n" + +#: peigen.c:1392 pepigen.c:1392 +msgid "Name \t\t\t\t" +msgstr "Nom \t\t\t\t" + +#: peigen.c:1398 pepigen.c:1398 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "base de nombre ordinal \t\t\t%ld\n" + +#: peigen.c:1401 pepigen.c:1401 +msgid "Number in:\n" +msgstr "Numéro dans:\n" + +#: peigen.c:1404 pepigen.c:1404 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\tTable d'adresses d'exportation \t\t%08lx\n" + +#: peigen.c:1408 pepigen.c:1408 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\tTable de noms [Pointeur/Nombre ordinal]\t%08lx\n" + +#: peigen.c:1411 pepigen.c:1411 +msgid "Table Addresses\n" +msgstr "Table d'adresses\n" + +#: peigen.c:1414 pepigen.c:1414 +msgid "\tExport Address Table \t\t" +msgstr "\tTable d'adresse d'exportation \t\t" + +#: peigen.c:1419 pepigen.c:1419 +msgid "\tName Pointer Table \t\t" +msgstr "\tTable des noms de pointeurs \t\t" + +#: peigen.c:1424 pepigen.c:1424 +msgid "\tOrdinal Table \t\t\t" +msgstr "\tTable des ordinals \t\t\t" + +#: peigen.c:1439 pepigen.c:1439 +#, c-format +msgid "" +"\n" +"Export Address Table -- Ordinal Base %ld\n" +msgstr "" +"\n" +"Table d'adresses d'exportation -- base de nombre ordinal %ld\n" + +#: peigen.c:1458 pepigen.c:1458 +msgid "Forwarder RVA" +msgstr "Adresseur RVA" + +#: peigen.c:1469 pepigen.c:1469 +msgid "Export RVA" +msgstr "Exportation RVA" + +#: peigen.c:1476 pepigen.c:1476 +msgid "" +"\n" +"[Ordinal/Name Pointer] Table\n" +msgstr "" +"\n" +"Table [Ordinal/Nom de pointeurs]\n" + +#: peigen.c:1531 pepigen.c:1531 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "" +"AVERTISSEMENT, taille de la section .pdata (%ld) n'est pas un multiple de %" +"d\n" + +#: peigen.c:1535 pepigen.c:1535 +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"La table de fonctions (interprétation du contenu de la section .pdata)\n" + +#: peigen.c:1538 pepigen.c:1538 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\tDébut Adresse Fin Adresse Unwind Info\n" + +#: peigen.c:1540 pepigen.c:1540 +#, fuzzy +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" +msgstr " vma:\t\tDébut Fin EH EH FinProlog Exception\n" + +#: peigen.c:1610 pepigen.c:1610 +msgid " Register save millicode" +msgstr " Registre a préservé le millicode" + +#: peigen.c:1613 pepigen.c:1613 +msgid " Register restore millicode" +msgstr " Registre a restauré le millicode" + +#: peigen.c:1616 pepigen.c:1616 +msgid " Glue code sequence" +msgstr " Séquence du code de liants" + +#: peigen.c:1668 pepigen.c:1668 +msgid "" +"\n" +"\n" +"PE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "" +"\n" +"\n" +"Fichier de base des relocalisation PE (contenus interprétés de la section ." +"reloc)\n" + +#: peigen.c:1698 pepigen.c:1698 +#, c-format +msgid "" +"\n" +"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "" +"\n" +"Adresse virtuelle: %08lx taille des morceaux %ld (0x%lx) nombre de " +"correctifs %ld\n" + +#: peigen.c:1711 pepigen.c:1711 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\trelocalisation %4d décalage %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1751 pepigen.c:1751 +#, c-format +msgid "" +"\n" +"Characteristics 0x%x\n" +msgstr "" +"\n" +"Caractéristiques 0x%x\n" + +#~ msgid "GP relative relocation when GP not defined" +#~ msgstr "GP relocalisation relative alors que GP n'est pas défini" + +#~ msgid "Warning: input file %s supports interworking, whereas %s does not." +#~ msgstr "" +#~ "AVERTISSEMENT: file d'entrée %s supporte l'inter-réseautage, " +#~ "contrairement à %s." + +#~ msgid "" +#~ "Warning: input file %s does not support interworking, whereas %s does." +#~ msgstr "" +#~ "AVERTISSEMENT: fichier d'entrée %s ne supporte pas l'inter-réseautage, " +#~ "contrairement à %s." + +#~ msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +#~ msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld prochain %ld" + +#~ msgid "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x" +#~ "%.8lx%s\n" +#~ msgstr "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, nom = %s, no. de symbole = %d, " +#~ "fanions = 0x%.8lx%s\n" + +#~ msgid "" +#~ "Warning: Not setting interwork flag of %s since it has already been " +#~ "specified as non-interworking" +#~ msgstr "" +#~ "AVERTISSEMENT: pas d'initialisation du fanion d'inter-réseautage %s alors " +#~ "qu'il a déjè été spécifié sans inter-réseautage" + +#~ msgid "Warning: Clearing the interwork flag of %s due to outside request" +#~ msgstr "" +#~ "AVERTISSEMENT: mise à zéro du fanion d'inter-réseautage %s en raison " +#~ "d'une requête externe" + +#~ msgid "(unknown)" +#~ msgstr "(inconnu)" + +#~ msgid " previously %s in %s" +#~ msgstr " précédemment %s dans %s" + +#~ msgid "Symbol `%s' has differing types: %s in %s" +#~ msgstr "Symbole `%s' a des types qui diffèrent: %s dans %s" + +#~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_GBL: pas de symbole \"%s\"" + +#~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_CA: pas de symbole \"%s\"" + +#~ msgid "ETIR_S_C_STO_RB/AB: Not supported" +#~ msgstr "ETIR_S_C_STO_RB/AB: non supporté" + +#~ msgid "ETIR_S_C_STO_LP_PSB: Not supported" +#~ msgstr "ETIR_S_C_STO_LP_PSB: non supporté" + +#~ msgid "ETIR_S_C_STO_HINT_GBL: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_GBL: pas implanté" + +#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_PS: pas implanté" + +#~ msgid "ETIR_S_C_OPR_INSV: Not supported" +#~ msgstr "ETIR_S_C_OPR_INSV: non supporté" + +#~ msgid "ETIR_S_C_OPR_USH: Not supported" +#~ msgstr "ETIR_S_C_OPR_USH: non supporté" + +#~ msgid "ETIR_S_C_OPR_ROT: Not supported" +#~ msgstr "ETIR_S_C_OPR_ROT: non supporté" + +#~ msgid "ETIR_S_C_OPR_REDEF: Not supported" +#~ msgstr "ETIR_S_C_OPR_REDEF: non supporté" + +#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" +#~ msgstr "ETIR_S_C_OPR_DFLIT: non supporté" + +#~ msgid "ETIR_S_C_STC_LP: not supported" +#~ msgstr "ETIR_S_C_STC_LP: non supporté" + +#~ msgid "ETIR_S_C_STC_GBL: not supported" +#~ msgstr "ETIR_S_C_STC_GBL: non supporté" + +#~ msgid "ETIR_S_C_STC_GCA: not supported" +#~ msgstr "ETIR_S_C_STC_GCA: non supporté" + +#~ msgid "ETIR_S_C_STC_PS: not supported" +#~ msgstr "ETIR_S_C_STC_PS: non supporté" + +#~ msgid "Unimplemented STO cmd %d" +#~ msgstr "Commande STO non implantée %d" + +#~ msgid "TIR_S_C_OPR_ASH incomplete" +#~ msgstr "TIR_S_C_OPR_ASH incomplète" + +#~ msgid "TIR_S_C_OPR_USH incomplete" +#~ msgstr "TIR_S_C_OPR_USH incomplète" + +#~ msgid "TIR_S_C_OPR_ROT incomplete" +#~ msgstr "TIR_S_C_OPR_ROT incomplète" + +#~ msgid "TIR_S_C_OPR_REDEF not supported" +#~ msgstr "TIR_S_C_OPR_REDEF non supporté" + +#~ msgid "TIR_S_C_OPR_DFLIT not supported" +#~ msgstr "TIR_S_C_OPR_DFLIT non supporté" + +#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_DFLOC pas complètement implanté" + +#~ msgid "TIR_S_C_CTL_STLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_STLOC pas complètement implanté" + +#~ msgid "TIR_S_C_CTL_STKDL not fully implemented" +#~ msgstr "TIR_S_C_CTL_STKDL n'est pas complètement implanté" + +#~ msgid " vma: Hint Time Forward DLL First\n" +#~ msgstr " vma: Hint Heure Forward DLL Premier\n" + +#~ msgid " \t\tAddress Address Handler Data Address Mask\n" +#~ msgstr " \t\tAdresse Adresse Routine Données Adresse Masque\n" + +#~ msgid "float" +#~ msgstr "flottant" + +#~ msgid "integer" +#~ msgstr "entier" + +#~ msgid "soft" +#~ msgstr "logiciel" + +#~ msgid "hard" +#~ msgstr "matériel" + +#~ msgid "Warning: %s %s interworking, whereas %s %s" +#~ msgstr "Warning: %s %s inter-réseautage, alors que %s %s" + +#~ msgid "supports" +#~ msgstr "supporte" + +#~ msgid "does not" +#~ msgstr "n'est pas" + +#~ msgid "does" +#~ msgstr "est" + +#~ msgid "%s(%s+0x%lx): cannot find stub entry %s" +#~ msgstr "%s(%s+0x%lx): ne peut repérer l'entrée du talon %s" + +#~ msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections" +#~ msgstr "" +#~ "%s(%s+0x%lx): ne peut relocaliser %s, recompiler avec -ffunction-sections" + +#~ msgid "" +#~ "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section " +#~ "= 0x%.8lx\n" +#~ msgstr "" +#~ "création de la section des symboles, nom = %s, valeur = 0x%.8lx, index = %" +#~ "d, section = 0x%.8lx\n" + +#~ msgid " whereas segment starts at 0x%x" +#~ msgstr " alors que le segment débute à 0x%x" diff -uprN binutils-2.11.92.0.12.3/bfd/po/ja.po binutils-2.11.93.0.2/bfd/po/ja.po --- binutils-2.11.92.0.12.3/bfd/po/ja.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/po/ja.po Sun Feb 3 11:22:30 2002 @@ -0,0 +1,2848 @@ +# Japanese message for bfd 2.11 +# Copyright (C) 2001 Free Software Foundation, Inc. +# Daisuke Yamashita , 2001 +# +msgid "" +msgstr "" +"Project-Id-Version: bfd 2.11\n" +"POT-Creation-Date: 2002-01-31 17:07+0000\n" +"PO-Revision-Date: 2001-12-22 13:37+0900\n" +"Last-Translator: Daisuke Yamashita \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: aout-adobe.c:196 +#, c-format +msgid "%s: Unknown section type in a.out.adobe file: %x\n" +msgstr "%s: a.out.adobe ¥Õ¥¡¥¤¥ë¤ËÉÔÌÀ¤Ê¥»¥¯¥·¥ç¥ó·¿¤¬¤¢¤ê¤Þ¤¹: %x\n" + +#: aout-cris.c:208 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "%s: export ¤µ¤ì¤¿ºÆÇÛÃÖ¥¿¥¤¥×¤¬ÉÔŬÀڤǤ¹: %d" + +#: aout-cris.c:252 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "%s: import ¤µ¤ì¤¿ºÆÇÛÃÖ¥¿¥¤¥×¤¬ÉÔŬÀڤǤ¹: %d" + +#: aout-cris.c:263 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "%s: import ¤µ¤ì¤¿ºÆÇÛÃ֥쥳¡¼¥É¤¬ÉÔÀµ¤Ç¤¹: %d" + +#: aoutx.h:1282 aoutx.h:1699 +#, c-format +msgid "%s: can not represent section `%s' in a.out object file format" +msgstr "%s: a.out ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤Ç¤Ï¥»¥¯¥·¥ç¥ó `%s' ¤òɽ¸½¤Ç¤­¤Þ¤»¤ó" + +#: aoutx.h:1669 +#, c-format +msgid "" +"%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "" +"%s: a.out ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë·Á¼°¤Ç¤Ï¥·¥ó¥Ü¥ë `%s' ÍѤΥ»¥¯¥·¥ç¥ó¤òɽ¸½¤Ç¤­" +"¤Þ¤»¤ó" + +#: aoutx.h:1671 +msgid "*unknown*" +msgstr "*ÉÔ ÌÀ*" + +#: aoutx.h:3735 +#, c-format +msgid "%s: relocateable link from %s to %s not supported" +msgstr "%s: %s ¤«¤é %s ¤Ø¤ÎºÆÇÛÃÖ²Äǽ¥ê¥ó¥¯¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: archive.c:1826 +msgid "Warning: writing archive was slow: rewriting timestamp\n" +msgstr "·Ù¹ð: ½ñ¸Ë¤Ø¤Î½ñ¤­¹þ¤ß¤¬ÃÙ¤ì¤Þ¤·¤¿: ¥¿¥¤¥à¥¹¥¿¥ó¥×¤ò½ñ¤­´¹¤¨¤Þ¤¹\n" + +#: archive.c:2093 +msgid "Reading archive file mod timestamp" +msgstr "½ñ¸Ë¥Õ¥¡¥¤¥ë¤Î½¤Àµ»þ¹ïÆɹþ¤ßÃæ" + +#. FIXME: bfd can't call perror. +#: archive.c:2120 +msgid "Writing updated armap timestamp" +msgstr "¹¹¿·¤µ¤ì¤¿ armap ¥¿¥¤¥à¥¹¥¿¥ó¥×½ñ¹þ¤ßÃæ" + +#: bfd.c:274 +msgid "No error" +msgstr "¥¨¥é¡¼¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: bfd.c:275 +msgid "System call error" +msgstr "¥·¥¹¥Æ¥à¥³¡¼¥ë¥¨¥é¡¼" + +#: bfd.c:276 +msgid "Invalid bfd target" +msgstr "ÉÔŬÀÚ¤Ê bfd ¥¿¡¼¥²¥Ã¥È¤Ç¤¹" + +#: bfd.c:277 +msgid "File in wrong format" +msgstr "´Ö°ã¤Ã¤¿·Á¼°¤Î¥Õ¥¡¥¤¥ë" + +#: bfd.c:278 +#, fuzzy +msgid "Archive object file in wrong format" +msgstr "´Ö°ã¤Ã¤¿·Á¼°¤Î¥Õ¥¡¥¤¥ë" + +#: bfd.c:279 +msgid "Invalid operation" +msgstr "ÉÔŬÀÚ¤ÊÁàºî" + +#: bfd.c:280 +msgid "Memory exhausted" +msgstr "¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿" + +#: bfd.c:281 +msgid "No symbols" +msgstr "¥·¥ó¥Ü¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: bfd.c:282 +msgid "Archive has no index; run ranlib to add one" +msgstr "" +"½ñ¸Ë¤Ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¤¢¤ê¤Þ¤»¤ó -- Äɲ乤뤿¤á¤Ë ranlib ¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦" + +#: bfd.c:283 +msgid "No more archived files" +msgstr "¤³¤ì°Ê¾å½ñ¸Ë¥Õ¥¡¥¤¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: bfd.c:284 +msgid "Malformed archive" +msgstr "¤ª¤«¤·¤Ê½ñ¸Ë¤Ç¤¹" + +#: bfd.c:285 +msgid "File format not recognized" +msgstr "¥Õ¥¡¥¤¥ë·Á¼°¤¬Ç§¼±¤Ç¤­¤Þ¤»¤ó" + +#: bfd.c:286 +msgid "File format is ambiguous" +msgstr "¥Õ¥¡¥¤¥ë·Á¼°¤¬Û£Ëæ¤Ç¤¹" + +#: bfd.c:287 +msgid "Section has no contents" +msgstr "¥»¥¯¥·¥ç¥ó¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" + +#: bfd.c:288 +msgid "Nonrepresentable section on output" +msgstr "½ÐÎϤËÂбþ¤¹¤ë¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" + +#: bfd.c:289 +msgid "Symbol needs debug section which does not exist" +msgstr "¸ºß¤·¤Æ¤¤¤Ê¤¤¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ò¥·¥ó¥Ü¥ë¤¬É¬ÍפȤ·¤Æ¤¤¤Þ¤¹" + +#: bfd.c:290 +msgid "Bad value" +msgstr "ÉÔÀµ¤ÊÃͤǤ¹" + +#: bfd.c:291 +msgid "File truncated" +msgstr "¥Õ¥¡¥¤¥ë¤¬ÅÓÀÚ¤ì¤Æ¤¤¤Þ¤¹" + +#: bfd.c:292 +msgid "File too big" +msgstr "¥Õ¥¡¥¤¥ë¤¬Â礭¤¹¤®¤Þ¤¹" + +#: bfd.c:293 +msgid "#" +msgstr "#<ÉÔŬÀڤʥ¨¥é¡¼¥³¡¼¥É>" + +#: bfd.c:700 +#, fuzzy, c-format +msgid "BFD %s assertion fail %s:%d" +msgstr "bfd ¥¢¥µ¡¼¥·¥ç¥ó¤¬¼ºÇÔ %s:%d" + +#: bfd.c:719 +#, fuzzy, c-format +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌÜ %s ¤ÇÃæÃǤ·¤Þ¤·¤¿\n" + +#: bfd.c:723 +#, fuzzy, c-format +msgid "BFD %s internal error, aborting at %s line %d\n" +msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌܤÇÃæÃǤ·¤Þ¤·¤¿\n" + +#: bfd.c:725 +msgid "Please report this bug.\n" +msgstr "¤³¤Î¥Ð¥°¤òÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤¡£\n" + +#: binary.c:306 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "" +"·Ù¹ð: ¥»¥¯¥·¥ç¥ó `%s' µðÂç(Îã Éé¿ô)¤Ê¥Õ¥¡¥¤¥ë¥ª¥Õ¥»¥Ã¥È 0x%lx ¤Ø¤Î½ñ¹þ¤ß¤Ç" +"¤¹¡£" + +#: coff-a29k.c:119 +msgid "Missing IHCONST" +msgstr "IHCONST ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: coff-a29k.c:180 +msgid "Missing IHIHALF" +msgstr "IHIHALF ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: coff-a29k.c:212 coff-or32.c:228 +msgid "Unrecognized reloc" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ºÆÇÛÃ֤Ǥ¹" + +#: coff-a29k.c:408 +msgid "missing IHCONST reloc" +msgstr "IHCONST ºÆÇÛÃÖ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: coff-a29k.c:498 +msgid "missing IHIHALF reloc" +msgstr "IHIHALF ºÆÇÛÃÖ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 +msgid "GP relative relocation used when GP not defined" +msgstr "GP ¤¬Ì¤ÄêµÁ¤Î»þ¤Ë GP ´ØÏ¢ºÆÇÛÃÖ¤¬»È¤ï¤ì¤Þ¤·¤¿" + +#: coff-alpha.c:1485 +msgid "using multiple gp values" +msgstr "Ê£¿ô¤Î gp Ãͤò»ÈÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹" + +#: coff-arm.c:1051 elf32-arm.h:285 +#, c-format +msgid "%s: unable to find THUMB glue '%s' for `%s'" +msgstr "%s: THUMB ¥°¥ë¡¼ '%s' (`%s' ÍÑ) ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: coff-arm.c:1080 elf32-arm.h:320 +#, c-format +msgid "%s: unable to find ARM glue '%s' for `%s'" +msgstr "%s: ARM ¥°¥ë¡¼ '%s' (`%s' ÍÑ) ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990 +#, c-format +msgid "%s(%s): warning: interworking not enabled." +msgstr "%s(%s): ·Ù¹ð: interworking ¤¬Í­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£" + +#: coff-arm.c:1379 elf32-arm.h:993 +#, c-format +msgid " first occurrence: %s: arm call to thumb" +msgstr " ½é²óȯÀ¸: %s: arm ¤Î thumb ¸Æ¤Ó½Ð¤·" + +#: coff-arm.c:1474 elf32-arm.h:889 +#, c-format +msgid " first occurrence: %s: thumb call to arm" +msgstr " ½é²óȯÀ¸: %s: thumb ¤Î arm ¸Æ¤Ó½Ð¤·" + +#: coff-arm.c:1477 +msgid " consider relinking with --support-old-code enabled" +msgstr "" +" --support-old-code ¤òÍ­¸ú¤Ë¤·¤ÆºÆ¥ê¥ó¥¯¤¹¤ë¤³¤È¤ò¹Íθ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤" + +#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 +#, c-format +msgid "%s: bad reloc address 0x%lx in section `%s'" +msgstr "%s: ÉÔÀµ¤ÊºÆÇÛÃÖ¥¢¥É¥ì¥¹ 0x%lx ¤¬¥»¥¯¥·¥ç¥ó `%s' Æâ¤Ë¤¢¤ê¤Þ¤¹" + +#: coff-arm.c:2107 +#, c-format +msgid "%s: illegal symbol index in reloc: %d" +msgstr "%s: ºÆÇÛÃÖÆâ¤Î¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹: %d" + +#: coff-arm.c:2235 +#, c-format +msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" +msgstr "" +"%s: ¥¨¥é¡¼: APCS-%d ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥¿¡¼¥²¥Ã¥È %s ¤Ë¤â¤«¤«¤ï¤é¤º APCS-%d " +"¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" + +#: coff-arm.c:2250 +#, c-format +msgid "" +"%s: ERROR: passes floats in float registers whereas target %s uses integer " +"registers" +msgstr "" +"%s: ¥¨¥é¡¼: ÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ËÉâÆ°¾®¿ô¤òÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È " +"%s ¤¬À°¿ô¥ì¥¸¥¹¥¿¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" + +#: coff-arm.c:2253 +#, c-format +msgid "" +"%s: ERROR: passes floats in integer registers whereas target %s uses float " +"registers" +msgstr "" +"%s: ¥¨¥é¡¼: À°¿ô¥ì¥¸¥¹¥¿¤ËÉâÆ°¾®¿ô¤òÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È %s " +"¤ÏÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ò»È¤Ã¤Æ¤¤¤Þ¤¹" + +#: coff-arm.c:2268 +#, c-format +msgid "" +"%s: ERROR: compiled as position independent code, whereas target %s is " +"absolute position" +msgstr "" +"%s: ¥¨¥é¡¼: °ÌÃÖÈó°Í¸¥³¡¼¥É¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È " +"%s ¤ÏÀäÂаÌÃ֤ˤʤäƤ¤¤Þ¤¹" + +#: coff-arm.c:2271 +#, c-format +msgid "" +"%s: ERROR: compiled as absolute position code, whereas target %s is position " +"independent" +msgstr "" +"%s: ¥¨¥é¡¼: ÀäÂаÌÃÖ¥³¡¼¥É¤È¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥¿¡¼¥²¥Ã¥È %" +"s ¤Ï°ÌÃÖÈó°Í¸¥³¡¼¥É¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹" + +#: coff-arm.c:2300 +#, fuzzy, c-format +msgid "Warning: %s supports interworking, whereas %s does not." +msgstr "" +"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" +"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£" + +#: coff-arm.c:2303 +#, fuzzy, c-format +msgid "Warning: %s does not support interworking, whereas %s does." +msgstr "" +"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" +"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£" + +#: coff-arm.c:2330 +#, c-format +msgid "private flags = %x:" +msgstr "private ¥Õ¥é¥° = %x:" + +#: coff-arm.c:2338 elf32-arm.h:2408 +msgid " [floats passed in float registers]" +msgstr " [ÉâÆ°¾®¿ô¤¬ÉâÆ°¾®¿ô¥ì¥¸¥¹¥¿¤ËÅϤµ¤ì¤Þ¤·¤¿]" + +#: coff-arm.c:2340 +msgid " [floats passed in integer registers]" +msgstr " [ÉâÆ°¾®¿ô¤¬À°¿ô¥ì¥¸¥¹¥¿¤ËÅϤµ¤ì¤Þ¤·¤¿]" + +#: coff-arm.c:2343 elf32-arm.h:2411 +msgid " [position independent]" +msgstr " [°ÌÃÖÈó°Í¸]" + +#: coff-arm.c:2345 +msgid " [absolute position]" +msgstr " [ÀäÂаÌÃÖ]" + +#: coff-arm.c:2349 +msgid " [interworking flag not initialised]" +msgstr " [interworking ¥Õ¥é¥°¤Ï½é´ü²½¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]" + +#: coff-arm.c:2351 +msgid " [interworking supported]" +msgstr " [interworking ¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤¹]" + +#: coff-arm.c:2353 +msgid " [interworking not supported]" +msgstr " [interworking ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó]" + +#: coff-arm.c:2401 elf32-arm.h:2114 +#, fuzzy, c-format +msgid "" +"Warning: Not setting interworking flag of %s since it has already been " +"specified as non-interworking" +msgstr "" +"·Ù¹ð: ´û¤ËÈó interworking ¤È»ØÄꤵ¤ì¤Æ¤¤¤ë¤¿¤á¡¢%s ¤Î interworking ¥Õ¥é¥°¤òÀß" +"Äꤷ¤Þ¤»¤ó" + +#: coff-arm.c:2405 elf32-arm.h:2118 +#, c-format +msgid "Warning: Clearing the interworking flag of %s due to outside request" +msgstr "·Ù¹ð: Í׵ᳰ¤Î¤¿¤á %s ¤Î interworking ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹" + +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "Èó COFF ¥·¥ó¥Ü¥ëÍѤθƤӽФ·µ¬Ìó¤¬ÉÔ³ÎÄê¤Ç¤¹" + +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +msgid "unsupported reloc type" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥×¤Ç¤¹" + +#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "GP ´ØÏ¢¤ÎºÆÇÛÃÖ¤¬ _gp ¤¬Ì¤ÄêµÁ¤Î»þÅÀ¤Ç¸½¤ì¤Þ¤·¤¿" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "¥µ¥Ý¡¼¥È³°¤Î¥»¥¯¥·¥ç¥ó¤ËÂФ¹¤ëºÆÇÛÃ֤Ǥ¹" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" +msgstr "ºÆÇÛÃÖÎΰ褬ŬÀڤ˥¢¥é¥¤¥ó¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× 0x%02x ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "%s: TOC ºÆÇÛÃÖ(0x%x, ¥·¥ó¥Ü¥ë `%s') ¤Ë TOC ¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó" + +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¤Ïǧ¼±¤Ç¤­¤Ê¤¤ smclas %d ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹" + +#: coff-tic54x.c:279 coff-tic80.c:449 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "ºÆÇÛÃÖ¥¿¥¤¥× 0x%x ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: coff-tic54x.c:390 coffcode.h:4868 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: ·Ù¹ð: ÉÔÀµ¤Ê¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹ %ld ¤¬ºÆÇÛÃÖÆ⥨¥ó¥È¥ê¤Ë¤¢¤ê¤Þ¤¹" + +#: coff-w65.c:363 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "ºÆÇÛÃÖ %s ¤ò̵»ë¤·¤Þ¤¹\n" + +#: coffcode.h:1081 +#, fuzzy, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "bfd_set_section_flags (%s, %x) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: coffcode.h:2132 +#, c-format +msgid "Unrecognized TI COFF target id '0x%x'" +msgstr "TI COFF ¥¿¡¼¥²¥Ã¥È id '0x%x' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: coffcode.h:4257 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" +msgstr "%s: ·Ù¹ð: ÉÔÀµ¤Ê¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹ %ld ¤¬¹ÔÈÖ¹æÃæ¤Ë¤¢¤ê¤Þ¤¹" + +#: coffcode.h:4271 +#, c-format +msgid "%s: warning: duplicate line number information for `%s'" +msgstr "%s: ·Ù¹ð: `%s' ÍѤιÔÈÖ¹æ¾ðÊ󤬽ÅÊ£¤·¤Æ¤¤¤Þ¤¹" + +#: coffcode.h:4630 +#, c-format +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%s: µ­²±¥¯¥é¥¹ %d (section %s, symbol `%s') ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: coffcode.h:4761 +#, c-format +msgid "warning: %s: local symbol `%s' has no section" +msgstr "·Ù¹ð: %s: ¶É½ê¥·¥ó¥Ü¥ë `%s' ¤¬¥»¥¯¥·¥ç¥ó¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó" + +#: coffcode.h:4906 +#, c-format +msgid "%s: illegal relocation type %d at address 0x%lx" +msgstr "%s: ÉÔÀµ¤ÊºÆÇÛÃÖ¥¿¥¤¥× %d ¤¬¥¢¥É¥ì¥¹ 0x%lx ¤Ç¸«¤Ä¤«¤ê¤Þ¤·¤¿" + +#: coffgen.c:1661 +#, c-format +msgid "%s: bad string table size %lu" +msgstr "%s: ʸ»úÎó¥Æ¡¼¥Ö¥ë¥µ¥¤¥º %lu ¤ÏÉÔÀµ¤Ç¤¹" + +#: cofflink.c:536 elflink.h:1967 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgstr "·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' ¤Î·¿¤Ï %d ¤«¤é %d ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿ (%s Æâ)" + +#: cofflink.c:2317 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" +msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s' Æâ¤ÎºÆÇÛÃÖÎΰè¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" + +#: cofflink.c:2653 coffswap.h:889 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgstr "%s: %s: ºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x%lx > 0xffff" + +#: cofflink.c:2662 coffswap.h:876 +#, c-format +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: ·Ù¹ð: %s: ¹ÔÈֹ椬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x%lx > 0xffff" + +#: dwarf2.c:381 +#, fuzzy +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Dwarf ¥¨¥é¡¼: .debug_abbrev ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" + +#: dwarf2.c:398 +#, fuzzy, c-format +msgid "" +"Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str " +"size (%u)." +msgstr "" +"Dwarf ¥¨¥é¡¼: abbrev ¥ª¥Õ¥»¥Ã¥È (%u) ¤¬ abbrev ¥µ¥¤¥º (%u) ¤è¤êÂ礭¤¤¤Ç¤¹¡£" + +#: dwarf2.c:542 +msgid "Dwarf Error: Can't find .debug_abbrev section." +msgstr "Dwarf ¥¨¥é¡¼: .debug_abbrev ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" + +#: dwarf2.c:559 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size " +"(%u)." +msgstr "" +"Dwarf ¥¨¥é¡¼: abbrev ¥ª¥Õ¥»¥Ã¥È (%u) ¤¬ abbrev ¥µ¥¤¥º (%u) ¤è¤êÂ礭¤¤¤Ç¤¹¡£" + +#: dwarf2.c:756 +#, c-format +msgid "Dwarf Error: Invalid or unhandled FORM value: %d." +msgstr "Dwarf ¥¨¥é¡¼: FORM Ãͤ¬ÉÔŬÀڤǤ¢¤ë¤«¡¢¼è¤ê°·¤¨¤Þ¤»¤ó: %d¡£" + +#: dwarf2.c:843 +msgid "Dwarf Error: mangled line number section (bad file number)." +msgstr "Dwarf ¥¨¥é¡¼: ¹ÔÈֹ楻¥¯¥·¥ç¥ó¤¬ÊÑ·Á¤µ¤ì¤Þ¤·¤¿¡ÊÉÔÀµ¤Ê¥Õ¥¡¥¤¥ëÈÖ¹æ¡Ë¡£" + +#: dwarf2.c:929 +msgid "Dwarf Error: Can't find .debug_line section." +msgstr "Dwarf ¥¨¥é¡¼: .debug_line ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¡£" + +#: dwarf2.c:952 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)." +msgstr "" +"Dwarf ¥¨¥é¡¼: line ¥ª¥Õ¥»¥Ã¥È (%u) ¤¬ line ¥µ¥¤¥º (%u) ¤è¤êÂ礭¤¤¤Ç¤¹¡£" + +#: dwarf2.c:1143 +msgid "Dwarf Error: mangled line number section." +msgstr "Dwarf ¥¨¥é¡¼: ¹ÔÈֹ楻¥¯¥·¥ç¥ó¤¬ÊÑ·Á¤µ¤ì¤Þ¤·¤¿¡£" + +#: dwarf2.c:1318 dwarf2.c:1529 +#, c-format +msgid "Dwarf Error: Could not find abbrev number %d." +msgstr "Dwarf ¥¨¥é¡¼: abbrev ÈÖ¹æ %d ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£" + +#: dwarf2.c:1490 +#, c-format +msgid "" +"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " +"information." +msgstr "" +"Dwarf ¥¨¥é¡¼: dwarf ¥Ð¡¼¥¸¥ç¥ó '%hu' ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¤¬¡¢¥Ð¡¼¥¸¥ç¥ó 2 ¤Î¾ðÊó" +"¤·¤«Æɤ߼è¤ì¤Þ¤»¤ó¡£" + +#: dwarf2.c:1497 +#, c-format +msgid "" +"Dwarf Error: found address size '%u', this reader can not handle sizes " +"greater than '%u'." +msgstr "" +"Dwarf ¥¨¥é¡¼: ¥¢¥É¥ì¥¹¥µ¥¤¥º '%u' ¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¤¬¡¢'%u' ¤è¤êÂ礭¤Ê¥µ¥¤¥º¤Ï" +"°·¤¨¤Þ¤»¤ó¡£" + +#: dwarf2.c:1520 +#, c-format +msgid "Dwarf Error: Bad abbrev number: %d." +msgstr "Dwarf ¥¨¥é¡¼: ÉÔÀµ¤Ê abbrev ÈÖ¹æ¤Ç¤¹: %d¡£" + +#: ecoff.c:1328 +#, c-format +msgid "Unknown basic type %d" +msgstr "´ðËÜ·¿ %d ¤¬ÉÔÌÀ¤Ç¤¹" + +#: ecoff.c:1597 +#, c-format +msgid "" +"\n" +" End+1 symbol: %ld" +msgstr "" +"\n" +" End+1 ¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1604 ecoff.c:1607 +#, c-format +msgid "" +"\n" +" First symbol: %ld" +msgstr "" +"\n" +" ºÇ½é¤Î¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1619 +#, c-format +msgid "" +"\n" +" End+1 symbol: %-7ld Type: %s" +msgstr "" +"\n" +" End+1 ¥·¥ó¥Ü¥ë: %-7ld ¥¿¥¤¥×: %s" + +#: ecoff.c:1626 +#, c-format +msgid "" +"\n" +" Local symbol: %ld" +msgstr "" +"\n" +" ¶É½ê¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1634 +#, c-format +msgid "" +"\n" +" struct; End+1 symbol: %ld" +msgstr "" +"\n" +" struct; End+1 ¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1639 +#, c-format +msgid "" +"\n" +" union; End+1 symbol: %ld" +msgstr "" +"\n" +" union; End+1 ¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1644 +#, c-format +msgid "" +"\n" +" enum; End+1 symbol: %ld" +msgstr "" +"\n" +" enum; End+1 ¥·¥ó¥Ü¥ë: %ld" + +#: ecoff.c:1650 +#, c-format +msgid "" +"\n" +" Type: %s" +msgstr "" +"\n" +" ·¿: %s" + +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 +#, c-format +msgid "" +"%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1406 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1280 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf32-xstormy16.c:976 elf64-mmix.c:1164 +msgid "internal error: out of range error" +msgstr "ÆâÉô¥¨¥é¡¼: Èϰϳ°¥¨¥é¡¼¤Ç¤¹" + +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1410 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1284 elf32-mips.c:7587 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf32-xstormy16.c:980 elf64-mips.c:4464 elf64-mmix.c:1168 +msgid "internal error: unsupported relocation error" +msgstr "ÆâÉô¥¨¥é¡¼: ̤¥µ¥Ý¡¼¥È¤ÎºÆÇÛÃÖ¥¨¥é¡¼" + +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1288 +msgid "internal error: dangerous error" +msgstr "ÆâÉô¥¨¥é¡¼: ´í¸±¤Ê¥¨¥é¡¼" + +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1418 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1292 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf32-xstormy16.c:988 elf64-mmix.c:1176 +msgid "internal error: unknown error" +msgstr "ÆâÉô¥¨¥é¡¼: ÉÔÌÀ¤Ê¥¨¥é¡¼" + +#: elf.c:343 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%s: ÉÔŬÀÚ¤Êʸ»úÎ󥪥ե»¥Ã¥È %u >= %lu (¥»¥¯¥·¥ç¥ó `%s' ÍÑ)" + +#: elf.c:448 +#, c-format +msgid "%s: invalid SHT_GROUP entry" +msgstr "" + +#: elf.c:529 +#, fuzzy, c-format +msgid "%s: no group info for section %s" +msgstr "%s: ¥í¡¼¥ÀºÆÇÛÃÖ¤¬Æɹþ¤ßÀìÍÑ¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹" + +#: elf.c:840 +msgid "" +"\n" +"Program Header:\n" +msgstr "" +"\n" +"¥×¥í¥°¥é¥à¥Ø¥Ã¥À:\n" + +#: elf.c:889 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" +"\n" +"ưŪ¥»¥¯¥·¥ç¥ó:\n" + +#: elf.c:1018 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" +"\n" +"¥Ð¡¼¥¸¥ç¥óÄêµÁ:\n" + +#: elf.c:1041 +msgid "" +"\n" +"Version References:\n" +msgstr "" +"\n" +"¥Ð¡¼¥¸¥ç¥ó»²¾È:\n" + +#: elf.c:1046 +#, c-format +msgid " required from %s:\n" +msgstr " %s ¤«¤é¤ÎÍ×µá:\n" + +#: elf.c:1682 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "" +"%s: ÉÔŬÀڤʥê¥ó¥¯ %lu ¤òºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó %s (index %u) ¤Ë¹Ô¤Ê¤Ã¤Æ¤¤¤Þ¤¹" + +#: elf.c:3296 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "%s: ¥×¥í¥°¥é¥à¥Ø¥Ã¥ÀÍѤζõ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹ (³ÎÊÝºÑ %u, Í× %u)" + +#: elf.c:3400 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "" +"%s: ¥×¥í¥°¥é¥à¥Ø¥Ã¥ÀÍѤζõ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹¡£-N ¤òÉÕ¤±¤Æ¥ê¥ó¥¯¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤" + +#: elf.c:3525 +#, fuzzy, c-format +msgid "" +"Error: First section in segment (%s) starts at 0x%x whereas the segment " +"starts at 0x%x" +msgstr "¥¨¥é¡¼: ¥»¥°¥á¥ó¥È (%s) ¤ÎºÇ½é¤Î¥»¥¯¥·¥ç¥ó¤¬ 0x%x ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë" + +#: elf.c:3811 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: ·Ù¹ð: ³ÎÊݤµ¤ì¤¿¥»¥¯¥·¥ç¥ó `%s' ¤¬¥»¥°¥á¥ó¥ÈÆâ¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: elf.c:4142 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¤¬Í׵ᤵ¤ì¤Þ¤·¤¿¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: elf.c:4395 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "%s: ·Ù¹ð: ¶õ¤Î¥í¡¼¥À¥Ö¥ë¥»¥°¥á¥ó¥È¤¬¸¡½Ð¤µ¤ì¤Þ¤·¤¿\n" + +#: elf.c:5808 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "%s: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥× %s ¤Ç¤¹" + +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "" +"%s: ·Ù¹ð: Arm BLX Ì¿Î᤬ Arm ¥Õ¥¡¥ó¥¯¥·¥ç¥ó '%s' ¤ò¥¿¡¼¥²¥Ã¥È¤Ë¤·¤Æ¤¤¤Þ¤¹¡£" + +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "" +"%s: ·Ù¹ð: Thumb BLX Ì¿Î᤬ thumb ¥Õ¥¡¥ó¥¯¥·¥ç¥ó '%s' ¤ò¥¿¡¼¥²¥Ã¥È¤Ë¤·¤Æ¤Þ¤¹¡£" + +#: elf32-arm.h:1904 elf32-i386.c:1778 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "" + +#: elf32-arm.h:1998 +#, fuzzy, c-format +msgid "" +"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-arm.h:2166 +#, fuzzy, c-format +msgid "" +"Warning: Clearing the interworking flag of %s because non-interworking code " +"in %s has been linked with it" +msgstr "" +"·Ù¹ð: %s ¤Î interwork ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹¡£%s ¤ÎÈó interworking ¥³¡¼¥É¤È°ì½ï" +"¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£" + +#: elf32-arm.h:2261 +#, c-format +msgid "" +"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï EABI ¥Ð¡¼¥¸¥ç¥ó %d ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬" +"¥Ð¡¼¥¸¥ç¥ó %d ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿" + +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï APCS-%d ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬ APCS-%d ÍѤË" +"¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿" + +#: elf32-arm.h:2287 +#, fuzzy, c-format +msgid "" +"Error: %s passes floats in FP registers, whereas %s passes them in integer " +"registers" +msgstr "" +"¥¨¥é¡¼: %s ¤ÏÉâÆ°¾®¿ô¤ò%s¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬¤½¤ì¤é¤ò%s" +"¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2292 +#, fuzzy, c-format +msgid "" +"Error: %s passes floats in integer registers, whereas %s passes them in FP " +"registers" +msgstr "" +"¥¨¥é¡¼: %s ¤ÏÉâÆ°¾®¿ô¤ò%s¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬¤½¤ì¤é¤ò%s" +"¥ì¥¸¥¹¥¿¤ËÅϤ·¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2303 +#, fuzzy, c-format +msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" +"¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2308 +#, fuzzy, c-format +msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" +"¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2328 +#, fuzzy, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" +"¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2333 +#, fuzzy, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" +msgstr "" +"¥¨¥é¡¼: %s ¤Ï%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%sÉâÆ°¾®¿ôÅÀ¤ò»È¤Ã" +"¤Æ¤¤¤Þ¤¹" + +#: elf32-arm.h:2348 +#, fuzzy, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "" +"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" +"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£" + +#: elf32-arm.h:2355 +#, fuzzy, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "" +"·Ù¹ð: ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬ interworking ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤Ï" +"¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£" + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2386 elf32-cris.c:2991 elf32-m68k.c:410 elf32-mips.c:3242 +#, c-format +msgid "private flags = %lx:" +msgstr "private ¥Õ¥é¥° = %lx:" + +#: elf32-arm.h:2395 +msgid " [interworking enabled]" +msgstr " [interworking ¤ÏÍ­¸ú]" + +#: elf32-arm.h:2398 +msgid " [APCS-26]" +msgstr " [APCS-26]" + +#: elf32-arm.h:2400 +msgid " [APCS-32]" +msgstr " [APCS-32]" + +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr "" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr "" + +#: elf32-arm.h:2414 +msgid " [new ABI]" +msgstr " [¿· ABI]" + +#: elf32-arm.h:2417 +msgid " [old ABI]" +msgstr " [µì ABI]" + +#: elf32-arm.h:2420 +msgid " [software FP]" +msgstr " [¥½¥Õ¥È¥¦¥§¥¢ÉâÆ°¾®¿ôÅÀ]" + +#: elf32-arm.h:2428 +msgid " [Version1 EABI]" +msgstr " [¥Ð¡¼¥¸¥ç¥ó1 EABI]" + +#: elf32-arm.h:2431 elf32-arm.h:2442 +msgid " [sorted symbol table]" +msgstr " [¥½¡¼¥ÈºÑ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë]" + +#: elf32-arm.h:2433 elf32-arm.h:2444 +msgid " [unsorted symbol table]" +msgstr " [̤¥½¡¼¥È¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë]" + +#: elf32-arm.h:2439 +#, fuzzy +msgid " [Version2 EABI]" +msgstr " [¥Ð¡¼¥¸¥ç¥ó1 EABI]" + +#: elf32-arm.h:2447 +msgid " [dynamic symbols use segment index]" +msgstr "" + +#: elf32-arm.h:2450 +msgid " [mapping symbols precede others]" +msgstr "" + +#: elf32-arm.h:2457 +msgid " " +msgstr " " + +#: elf32-arm.h:2464 +msgid " [relocatable executable]" +msgstr " [ºÆÇÛÃÖ²Äǽ¼Â¹Ô¥Õ¥¡¥¤¥ë]" + +#: elf32-arm.h:2467 +msgid " [has entry point]" +msgstr " [¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹]" + +#: elf32-arm.h:2472 +msgid "" +msgstr "<¥Õ¥é¥°¥Ó¥Ã¥È¥»¥Ã¥È¤òǧ¼±¤Ç¤­¤Þ¤»¤ó>" + +#: elf32-avr.c:843 elf32-cris.c:1414 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf32-xstormy16.c:984 +#: elf64-mmix.c:1172 +msgid "internal error: dangerous relocation" +msgstr "ÆâÉô¥¨¥é¡¼: ´í¸±¤ÊºÆÇÛÃ֤Ǥ¹" + +#: elf32-cris.c:949 +#, fuzzy, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-cris.c:1012 +#, fuzzy, c-format +msgid "" +"%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-cris.c:1015 elf32-cris.c:1142 +msgid "[whose name is lost]" +msgstr "" + +#: elf32-cris.c:1131 +#, fuzzy, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against local symbol from %s " +"section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-cris.c:1138 +#, fuzzy, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-cris.c:1156 +#, fuzzy, c-format +msgid "" +"%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¥·¥ó¥Ü¥ë %s ÍѤΤâ¤Î¤È¤·¤Æ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: elf32-cris.c:1171 +#, fuzzy, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s' Æâ¤ÎºÆÇÛÃÖÎΰè¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" + +#: elf32-cris.c:1289 +#, fuzzy, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "%s ÍѤκÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: elf32-cris.c:2523 +#, fuzzy, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤È¤­¤Ë¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó -- -" +"fPIC ¤ò¤Ä¤±¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯¤À¤µ¤¤" + +#: elf32-cris.c:2994 +msgid " [symbols have a _ prefix]" +msgstr " [ _ ÀÜƬ¼­¤Ä¤­¥·¥ó¥Ü¥ë]" + +#: elf32-cris.c:3033 +#, c-format +msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "" +"%s: _ ÀÜƬ¼­¥·¥ó¥Ü¥ë¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤ËÀÜƬ¼­Ìµ¤·¤Ç½ñ¤­¹þ¤ß¤Þ¤¹" + +#: elf32-cris.c:3034 +#, c-format +msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "" +"%s: ÀÜƬ¼­Ìµ¤·¤Î¥·¥ó¥Ü¥ë¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢¥Õ¥¡¥¤¥ë¤Ë¤Ï _ ÀÜƬ¼­ÉÕ¤­¤Ç½ñ¤­¹þ¤ß" +"¤Þ¤¹" + +#: elf32-gen.c:82 elf64-gen.c:82 +#, c-format +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "" + +#: elf32-hppa.c:646 +#, c-format +msgid "%s: cannot create stub entry %s" +msgstr "%s: ¥¹¥¿¥Ö¥¨¥ó¥È¥ê %s ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó" + +#: elf32-hppa.c:937 elf32-hppa.c:3545 +#, c-format +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "" +"%s(%s+0x%lx): %s ¤ËÆϤ­¤Þ¤»¤ó¡£-ffunction-sections ¤òÉÕ¤±¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯" +"¤À¤µ¤¤" + +#: elf32-hppa.c:1312 +#, c-format +msgid "" +"%s: relocation %s can not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤È¤­¤Ë¤Ï»È¤¨¤Þ¤»¤ó -- -fPIC ¤òÉÕ¤±" +"¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯¤À¤µ¤¤" + +#: elf32-hppa.c:1332 +#, c-format +msgid "" +"%s: relocation %s should not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤È¤­¤Ë¤Ï»È¤¦¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó -- -" +"fPIC ¤ò¤Ä¤±¤ÆºÆ¥³¥ó¥Ñ¥¤¥ë¤·¤Æ¤¯¤À¤µ¤¤" + +#: elf32-hppa.c:1525 +#, c-format +msgid "Could not find relocation section for %s" +msgstr "%s ÍѤκÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: elf32-hppa.c:2867 +#, c-format +msgid "%s: duplicate export stub %s" +msgstr "%s: export ¥¹¥¿¥Ö %s ¤¬½ÅÊ£¤·¤Æ¤¤¤Þ¤¹" + +#: elf32-hppa.c:3429 +#, c-format +msgid "%s(%s+0x%lx): fixing %s" +msgstr "%s(%s+0x%lx): %s ¤ò½¤Éü¤·¤Þ¤¹" + +#: elf32-hppa.c:4069 +#, c-format +msgid "%s(%s+0x%lx): cannot handle %s for %s" +msgstr "%s(%s+0x%lx): %s (%s) ¤ò¼è¤ê°·¤¨¤Þ¤»¤ó" + +#: elf32-hppa.c:4408 +msgid ".got section not immediately after .plt section" +msgstr ".got ¥»¥¯¥·¥ç¥ó¤¬ .plt ¥»¥¯¥·¥ç¥ó¤Îľ¸å¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: elf32-i386.c:298 +#, c-format +msgid "%s: invalid relocation type %d" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤ÏÉÔŬÀڤǤ¹" + +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 +#, fuzzy, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s: ºÆÇÛÃÖÆâ¤Î¥·¥ó¥Ü¥ë¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹: %d" + +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2198 elf64-s390.c:759 +#, fuzzy, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: ÉÔÀµ¤Ê¥»¥¯¥·¥ç¥ó̾ `%s' ¤Ç¤¹" + +#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 +#, fuzzy, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#, fuzzy, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): %s (%s) ¤ò¼è¤ê°·¤¨¤Þ¤»¤ó" + +#: elf32-m32r.c:923 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "_SDA_BASE_ ¤¬Ì¤ÄêµÁ¤Î»þÅÀ¤Ç¤Î SDA ºÆÇÛÃ֤Ǥ¹" + +#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤¬ÉÔÌÀ¤Ç¤¹" + +#: elf32-m32r.c:1223 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: ¥¿¡¼¥²¥Ã¥È (%s, %s ºÆÇÛÃÖ) ¤¬´Ö°ã¤Ã¤¿¥»¥¯¥·¥ç¥ó (%s) Æâ¤Ë¤¢¤ê¤Þ¤¹" + +#: elf32-m32r.c:2000 +#, c-format +msgid "%s: Instruction set mismatch with previous modules" +msgstr "%s: Ì¿Î᥻¥Ã¥È¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë¤ÈŬ¹ç¤·¤Þ¤»¤ó" + +#: elf32-m32r.c:2023 +#, c-format +msgid "private flags = %lx" +msgstr "private ¥Õ¥é¥° = %lx" + +#: elf32-m32r.c:2028 +msgid ": m32r instructions" +msgstr ": m32r Ì¿Îá" + +#: elf32-m32r.c:2029 +msgid ": m32rx instructions" +msgstr ": m32rx Ì¿Îá" + +#: elf32-m68k.c:413 +msgid " [cpu32]" +msgstr " [cpu32]" + +#: elf32-mcore.c:353 elf32-mcore.c:479 +#, c-format +msgid "%s: Relocation %s (%d) is not currently supported.\n" +msgstr "%s: ºÆÇÛÃÖ %s (%d) ¤Ï¸½ºß¤Î¤È¤³¤í¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#: elf32-mcore.c:438 +#, c-format +msgid "%s: Unknown relocation type %d\n" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤ÏÉÔÌÀ¤Ç¤¹\n" + +#: elf32-mips.c:2156 elf64-mips.c:1972 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "32¥Ó¥Ã¥È gp ´ØÏ¢ºÆÇÛÃÖ¤¬³°Éô¥·¥ó¥Ü¥ë¤ÎÍѤËȯÀ¸¤·¤Þ¤·¤¿" + +#: elf32-mips.c:2305 +#, c-format +msgid "Linking mips16 objects into %s format is not supported" +msgstr "" +"%s ·Á¼°¤Ø¤Î mips16 ¥ª¥Ö¥¸¥§¥¯¥È¤ò¥ê¥ó¥¯¤¹¤ë¤³¤È¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: elf32-mips.c:3129 +#, c-format +msgid "%s: linking PIC files with non-PIC files" +msgstr "%s: PIC ¥Õ¥¡¥¤¥ë¤ËÈó PIC ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: elf32-mips.c:3139 +#, c-format +msgid "%s: linking abicalls files with non-abicalls files" +msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: elf32-mips.c:3168 +#, c-format +msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +msgstr "%s: ISA (-mips%d) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (-mips%d) ¤È°ìÃפ·¤Þ¤»¤ó" + +#: elf32-mips.c:3177 +#, c-format +msgid "%s: ISA mismatch (%d) with previous modules (%d)" +msgstr "%s: ISA (%d) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (%d) ¤È°ìÃפ·¤Þ¤»¤ó" + +#: elf32-mips.c:3200 +#, c-format +msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgstr "" +"%s: ABI ¤¬°ìÃפ·¤Þ¤»¤ó -- %s ¥â¥¸¥å¡¼¥ë¤ò°ÊÁ°¤Î %s ¥â¥¸¥å¡¼¥ë¤È¥ê¥ó¥¯¤·¤è¤¦¤È" +"¤·¤Þ¤·¤¿" + +#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 +#, c-format +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "" +"%s: »ÈÍѤ·¤Æ¤¤¤ë e_flags(0x%lx) ¤¬°ÊÁ°¤Î¥â¥¸¥å¡¼¥ë (0x%lx) ¤È°Û¤Ê¤Ã¤Æ¤¤¤Þ¤¹" + +#: elf32-mips.c:3245 +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elf32-mips.c:3247 +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elf32-mips.c:3249 +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elf32-mips.c:3251 +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elf32-mips.c:3253 +msgid " [abi unknown]" +msgstr " [abi unknown]" + +#: elf32-mips.c:3255 +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elf32-mips.c:3257 +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elf32-mips.c:3259 +msgid " [no abi set]" +msgstr " [abi ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó]" + +#: elf32-mips.c:3262 +msgid " [mips1]" +msgstr " [mips1]" + +#: elf32-mips.c:3264 +msgid " [mips2]" +msgstr " [mips2]" + +#: elf32-mips.c:3266 +msgid " [mips3]" +msgstr " [mips3]" + +#: elf32-mips.c:3268 +msgid " [mips4]" +msgstr " [mips4]" + +#: elf32-mips.c:3270 +msgid " [mips5]" +msgstr " [mips5]" + +#: elf32-mips.c:3272 +msgid " [mips32]" +msgstr " [mips32]" + +#: elf32-mips.c:3274 +msgid " [mips64]" +msgstr " [mips64]" + +#: elf32-mips.c:3276 +msgid " [unknown ISA]" +msgstr " [ÉÔÌÀ¤Ê ISA]" + +#: elf32-mips.c:3279 +msgid " [32bitmode]" +msgstr " [32¥Ó¥Ã¥È¥â¡¼¥É]" + +#: elf32-mips.c:3281 +msgid " [not 32bitmode]" +msgstr " [Èó 32 ¥Ó¥Ã¥È¥â¡¼¥É]" + +#: elf32-mips.c:4954 +msgid "static procedure (no name)" +msgstr "ÀÅŪ¥×¥í¥·¡¼¥¸¥ã(̾Á°Ìµ¤·)" + +#: elf32-mips.c:5572 elf64-mips.c:6694 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: ÉÔÀµ¤Ê¥»¥¯¥·¥ç¥ó̾ `%s' ¤Ç¤¹" + +#: elf32-mips.c:6139 elf64-mips.c:3150 +msgid "not enough GOT space for local GOT entries" +msgstr "¶É½ê GOT ¥¨¥ó¥È¥êÍѤΠGOT ¶õ´Ö¤¬ÉÔ½½Ê¬¤Ç¤¹" + +#: elf32-mips.c:7250 elf64-mips.c:4203 +#, c-format +msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +msgstr "%s: %s+0x%lx: jal ¤Ç¤Ï¤Ê¤¤¥¹¥¿¥Ö¥ë¡¼¥Á¥ó¤Ø¤Î¥¸¥ã¥ó¥×¤Ç¤¹" + +#: elf32-mips.c:8259 elf64-mips.c:5891 +#, fuzzy, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "¥»¥¯¥·¥ç¥ó %s ÍѤȤ·¤Æ¤Ï¤ª¤«¤·¤ÊºÆÇÛÃÖ¤ò¸¡½Ð¤·¤Þ¤·¤¿" + +#: elf32-mips.c:8337 elf64-mips.c:5969 +#, c-format +msgid "%s: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: 0x%lx ¤Ç¤Î CALL16 ºÆÇÛÃÖ¤¬Âç°è¥·¥ó¥Ü¥ë¤òÂоݤȤ·¤Æ¤¤¤Þ¤»¤ó" + +#: elf32-ppc.c:1436 elf64-ppc.c:1521 +#, c-format +msgid "" +"%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "" +"%s: -mrelocatable ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤â¤Î¤ÈÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥â" +"¥¸¥å¡¼¥ë¤È¤ò¥ê¥ó¥¯¤·¤Þ¤·¤¿" + +#: elf32-ppc.c:1444 elf64-ppc.c:1529 +#, c-format +msgid "" +"%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "" +"%s: ÉáÄ̤˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤â¤Î¤È -mrelocatable ¤òÉÕ¤±¤Æ¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥â" +"¥¸¥å¡¼¥ë¤È¤ò¥ê¥ó¥¯¤·¤Þ¤·¤¿" + +#: elf32-ppc.c:1568 +#, c-format +msgid "%s: Unknown special linker type %d" +msgstr "%s: ¥¹¥Ú¥·¥ã¥ë¥ê¥ó¥«¥¿¥¤¥× %d ¤¬ÉÔÌÀ¤Ç¤¹" + +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 +#, c-format +msgid "%s: relocation %s cannot be used when making a shared object" +msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Æ¤¤¤ë»þÅÀ¤Ç¤ÏÍøÍѤǤ­¤Þ¤»¤ó" + +#: elf32-ppc.c:3097 elf64-ppc.c:3716 +#, c-format +msgid "%s: unknown relocation type %d for symbol %s" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d (¥·¥ó¥Ü¥ë %s) ¤¬ÉÔÌÀ¤Ç¤¹" + +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 +#, c-format +msgid "" +"%s: The target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%s: ¥¿¡¼¥²¥Ã¥È %s (%sºÆÇÛÃÖ) ¤¬´Ö°ã¤Ã¤¿½ÐÎÏ¥»¥¯¥·¥ç¥ó (%s) ¤Ë¤¢¤ê¤Þ¤¹" + +#: elf32-ppc.c:3589 +#, c-format +msgid "%s: Relocation %s is not yet supported for symbol %s." +msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¥·¥ó¥Ü¥ë %s ÍѤΤâ¤Î¤È¤·¤Æ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: elf32-sh.c:1101 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: ·Ù¹ð: R_SH_USES ¥ª¥Õ¥»¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹" + +#: elf32-sh.c:1113 +#, c-format +msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: ·Ù¹ð: R_SH_USES ¤¬Ç§¼±¤Ç¤­¤Ê¤¤Ì¿Îá 0x%x ¤ò»Ø¤·¤Æ¤¤¤Þ¤¹" + +#: elf32-sh.c:1130 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: ·Ù¹ð: R_SH_USES load ¥ª¥Õ¥»¥Ã¥È¤¬ÉÔÀµ¤Ç¤¹" + +#: elf32-sh.c:1145 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: ·Ù¹ð: ¸ºß¤¹¤ë¤Ï¤º¤ÎºÆÇÛÃÖÎΰè¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: elf32-sh.c:1202 +#, c-format +msgid "%s: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: ·Ù¹ð: ¥·¥ó¥Ü¥ë¤¬Í½´ü¤»¤Ì¥»¥¯¥·¥ç¥ó¤Ë¤¢¤ê¤Þ¤¹" + +#: elf32-sh.c:1323 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: ·Ù¹ð: ¸ºß¤¹¤ë¤Ï¤º¤Î COUNT ºÆÇÛÃÖÎΰè¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: elf32-sh.c:1332 +#, c-format +msgid "%s: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: ·Ù¹ð: count ¤¬ÉÔÀµ¤Ç¤¹" + +#: elf32-sh.c:1741 elf32-sh.c:2132 +#, c-format +msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: Ã×̿Ū: relax Ãæ¤ËºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: elf32-sh.c:3267 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "" + +#: elf32-sparc.c:1554 elf64-sparc.c:2280 +#, c-format +msgid "%s: probably compiled without -fPIC?" +msgstr "%s: ¶²¤é¤¯ -fPIC ¤òÉÕ¤±¤º¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤Î¤Ç¤Ï¡©" + +#: elf32-sparc.c:2007 +#, c-format +msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgstr "" +"%s: 64 ¥Ó¥Ã¥È¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Þ¤·¤¿¤¬¥¿¡¼¥²¥Ã¥È¤¬ 32 ¥Ó¥Ã¥È¤Ç¤¹" + +#: elf32-sparc.c:2021 +#, c-format +msgid "%s: linking little endian files with big endian files" +msgstr "" +"%s: ¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¤ò¥ê¥ó¥¯¤·¤è" +"¤¦¤È¤·¤Æ¤¤¤Þ¤¹" + +#: elf32-v850.c:682 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "ÊÑ¿ô `%s' ¤ÏÊ£¿ô¤Î small ¥Ç¡¼¥¿Îΰè¤òÀêÍ­¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" + +#: elf32-v850.c:685 +#, c-format +msgid "" +"Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "" +"ÊÑ¿ô `%s' ¤Ï small, zero µÚ¤Ó tiny ¥Ç¡¼¥¿Îΰè¤ÎÆâ°ì¤Ä¤Ë¤Î¤ßÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹" + +#: elf32-v850.c:688 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "ÊÑ¿ô `%s' ¤ò small ¤È zero ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" + +#: elf32-v850.c:691 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "ÊÑ¿ô `%s' ¤ò small ¤È tiny ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" + +#: elf32-v850.c:694 +#, c-format +msgid "" +"Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "ÊÑ¿ô `%s' ¤Ï zero ¤È tiny ¥Ç¡¼¥¿Îΰè¤ØƱ»þ¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó" + +#: elf32-v850.c:1072 +msgid "FAILED to find previous HI16 reloc\n" +msgstr "°ÊÁ°¤Î HI16 ºÆÇÛÃÖ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n" + +#: elf32-v850.c:1703 +msgid "could not locate special linker symbol __gp" +msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __gp ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: elf32-v850.c:1707 +msgid "could not locate special linker symbol __ep" +msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __ep ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: elf32-v850.c:1711 +msgid "could not locate special linker symbol __ctbp" +msgstr "Æüì¥ê¥ó¥«¥·¥ó¥Ü¥ë __ctbp ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿" + +#: elf32-v850.c:1877 +#, c-format +msgid "%s: Architecture mismatch with previous modules" +msgstr "%s: °ÊÁ°¤Î¥â¥¸¥å¡¼¥ë¤È¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤¬°ìÃפ·¤Þ¤»¤ó" + +#: elf32-v850.c:1897 +#, c-format +msgid "private flags = %lx: " +msgstr "private ¥Õ¥é¥° = %lx: " + +#: elf32-v850.c:1902 +msgid "v850 architecture" +msgstr "v850 ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" + +#: elf32-v850.c:1903 +msgid "v850e architecture" +msgstr "v850e ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" + +#: elf32-v850.c:1904 +msgid "v850ea architecture" +msgstr "v850ea ¥¢¡¼¥­¥Æ¥¯¥Á¥ã" + +#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 +msgid "non-zero addend in @fptr reloc" +msgstr "" + +#: elf64-alpha.c:858 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "GPDISP ºÆÇÛÃÖ¤¬ ldah ¤È lda Ì¿Îá¤ò¸«¤Ä¤±¤Þ¤»¤ó¤Ç¤·¤¿" + +#: elf64-alpha.c:2934 +#, c-format +msgid "%s: .got subsegment exceeds 64K (size %d)" +msgstr "%s: .got ¥µ¥Ö¥»¥°¥á¥ó¥È¤¬ 64K ¤òĶ¤¨¤Æ¤¤¤Þ¤¹ (¥µ¥¤¥º %d)" + +#: elf64-alpha.c:3518 elf64-alpha.c:3530 +#, fuzzy, c-format +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "32¥Ó¥Ã¥È gp ´ØÏ¢ºÆÇÛÃÖ¤¬³°Éô¥·¥ó¥Ü¥ë¤ÎÍѤËȯÀ¸¤·¤Þ¤·¤¿" + +#: elf64-hppa.c:2070 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "" + +#: elf64-mmix.c:1271 +#, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "" + +#: elf64-mmix.c:1276 +#, fuzzy, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elf64-mmix.c:1312 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "" + +#: elf64-mmix.c:1340 +#, c-format +msgid "" +"%s: LOCAL directive: Register $%ld is not a local register. First global " +"register is $%ld." +msgstr "" + +#: elf64-mmix.c:1615 +#, c-format +msgid "" +"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " +"linked file\n" +msgstr "" + +#: elf64-mmix.c:1674 +#, fuzzy +msgid "Register section has contents\n" +msgstr "¥»¥¯¥·¥ç¥ó¤ËÆâÍƤ¬¤¢¤ê¤Þ¤»¤ó" + +#: elf64-ppc.c:1484 libbfd.c:1436 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "" +"%s: ¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢¥¿¡¼¥²¥Ã¥È¤¬¥ê¥È¥ë¥¨¥ó¥Ç¥£" +"¥¢¥ó¤Ç¤¹" + +#: elf64-ppc.c:1486 libbfd.c:1438 +#, c-format +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "" +"%s: ¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¥·¥¹¥Æ¥àÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢¥¿¡¼¥²¥Ã¥È¤¬¥Ó¥Ã¥°¥¨¥ó¥Ç¥£" +"¥¢¥ó¤Ç¤¹¡£" + +#: elf64-ppc.c:3350 +#, c-format +msgid "linkage table error against `%s'" +msgstr "" + +#: elf64-ppc.c:3432 +msgid "stub section size doesn't match calculated size" +msgstr "" + +#: elf64-ppc.c:4061 +#, fuzzy, c-format +msgid "%s: Relocation %s is not supported for symbol %s." +msgstr "%s: ºÆÇÛÃÖ %s ¤Ï¥·¥ó¥Ü¥ë %s ÍѤΤâ¤Î¤È¤·¤Æ¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: elf64-ppc.c:4105 +#, c-format +msgid "%s: error: relocation %s not a multiple of 4" +msgstr "" + +#: elf64-sparc.c:1277 +#, c-format +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: ºÆÇÛÃÖ¥¿¥¤¥× %d ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó" + +#: elf64-sparc.c:1314 +#, c-format +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%s: STT_REGISTER ¤ò»È¤¦¤ÈÀë¸À¤Ç¤­¤ë¤Î¤Ï¥ì¥¸¥¹¥¿ %%g[2367] ¤À¤±¤Ç¤¹" + +#: elf64-sparc.c:1334 +#, fuzzy, c-format +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" +msgstr "" +"¥ì¥¸¥¹¥¿ %%g%d ¤ÏÌ·½â¤·¤Æ»È¤ï¤ì¤Þ¤·¤¿: °ÊÁ°¤ÎÀë¸À¤Ï %s ¤Ç %s¡¢%s ¤Ç %s ¤ÈºÆÄê" +"µÁ¤µ¤ì¤Þ¤·¤¿" + +#: elf64-sparc.c:1357 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" +msgstr "" +"¥·¥ó¥Ü¥ë `%s' ¤Ï°Û¤Ê¤ë·¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹: %s ¤Ç REGISTER, ¤Ç¤¹¤¬ %s ¤È %s ¤ÇÄê" +"µÁ¤µ¤ì¤Æ¤¤¤Þ¤¹" + +#: elf64-sparc.c:1404 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" +msgstr "¥·¥ó¥Ü¥ë `%s' ¤Ï°Û¤Ê¤ë·¿¤ò¤â¤Ã¤Æ¤¤¤Þ¤¹: °ÊÁ°¤Ï %s, %s ¤Ç¤Ï REGISTER" + +#: elf64-sparc.c:3008 +#, c-format +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "" +"%s: UltraSPARC ÆÃÍ­¤Î¥³¡¼¥É¤È HAL ÆÃÍ­¤Î¥³¡¼¥É¤È¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹" + +#: elfcode.h:1218 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: ¥Ð¡¼¥¸¥ç¥ó¥«¥¦¥ó¥È (%ld) ¤¬¥·¥ó¥Ü¥ë¥«¥¦¥ó¥È (%ld) ¤È°ìÃפ·¤Þ¤»¤ó" + +#: elflink.c:434 +#, fuzzy, c-format +msgid "%s: Section %s is too large to add hole of %ld bytes" +msgstr "%s: ´û¤Ë¥»¥¯¥·¥ç¥ó %s ¤ÏÂ礭¤¹¤®¤Æ %ld ¥Ð¥¤¥È¤Î hole ¤òÃÖ¤±¤Þ¤»¤ó" + +#: elflink.h:1113 +#, c-format +msgid "%s: warning: unexpected redefinition of `%s'" +msgstr "%s: ·Ù¹ð: `%s' ¤ÎºÆÄêµÁ¤Ï¤¢¤êÆÀ¤Ê¤¤¤³¤È¤Ç¤¹" + +#: elflink.h:1784 +#, c-format +msgid "%s: %s: invalid version %u (max %d)" +msgstr "%s: %s: ÉÔŬÀڤʥС¼¥¸¥ç¥ó %u (ºÇÂç %d)" + +#: elflink.h:1825 +#, c-format +msgid "%s: %s: invalid needed version %d" +msgstr "%s: %s: ɬÍפȤµ¤ì¤ë¥Ð¡¼¥¸¥ç¥ó %d ¤¬ÉÔŬÀڤǤ¹" + +#: elflink.h:1945 +#, c-format +msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" +msgstr "·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' ¤Î¥µ¥¤¥º¤¬ %lu ¤«¤é %lu ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿ (%s Æâ)" + +#: elflink.h:4014 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "·Ù¹ð: ưŪ¥·¥ó¥Ü¥ë `%s' ¤Î·¿¤È¥µ¥¤¥º¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: elflink.h:4320 +#, c-format +msgid "%s: undefined versioned symbol name %s" +msgstr "%s: ¥·¥ó¥Ü¥ë̾ %s ¤Î¥Ð¡¼¥¸¥ç¥ó¤¬Ì¤ÄêµÁ¤Ç¤¹" + +#: elflink.h:4544 elflink.h:4552 elflink.h:6203 elflink.h:7280 +msgid "Error: out of memory" +msgstr "" + +#: elflink.h:4714 +msgid "Not enough memory to sort relocations" +msgstr "" + +#: elflink.h:5980 +#, c-format +msgid "%s: could not find output section %s for input section %s" +msgstr "%s: ½ÐÎÏ¥»¥¯¥·¥ç¥ó %s (ÆþÎÏ¥»¥¯¥·¥ç¥ó %s ÍÑ) ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#: elflink.h:6553 +#, fuzzy +msgid "warning: relocation against removed section; zeroing" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elflink.h:6583 +#, fuzzy +msgid "warning: relocation against removed section" +msgstr "%s: ·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' (%s ¥»¥¯¥·¥ç¥ó)¤ËÂФ¹¤ëºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: elflink.h:6596 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "" + +#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¶¦Í­¥é¥¤¥Ö¥é¥ê `%s' ¤òɬÍפȤ·¤Æ¤¤¤Þ¤¹\n" + +#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¶¦Í­¥é¥¤¥Ö¥é¥ê `%s.so.%s' ¤òɬÍפȤ·¤Æ¤¤¤Þ¤¹\n" + +#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 +#: sparclinux.c:655 sparclinux.c:705 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "¥·¥ó¥Ü¥ë %s ¤Ï fixup ÍѤËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 +msgid "Warning: fixup count mismatch\n" +msgstr "·Ù¹ð: fixup ¥«¥¦¥ó¥È¤¬°ìÃפ·¤Þ¤»¤ó\n" + +#: ieee.c:235 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: ʸ»úÎó¤¬Ä¹¤¹¤®¤Þ¤¹ (%d ʸ»ú, ºÇÂç 65535)" + +#: ieee.c:365 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¥Õ¥é¥° 0x%x ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: ieee.c:877 +#, fuzzy, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" +msgstr "%s: ATI ¥ì¥³¡¼¥É %u (¥·¥ó¥Ü¥ë %u ÍÑ) ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ieee.c:902 +#, c-format +msgid "%s: unexpected ATN type %d in external part" +msgstr "%s: external Éôʬ¤Ë¤¢¤ë ATN ¥¿¥¤¥× %d ¤È¤¤¤¦¤Î¤Ï¤¢¤êÆÀ¤Þ¤»¤ó" + +#: ieee.c:924 +#, c-format +msgid "%s: unexpected type after ATN" +msgstr "%s: ATN ¤Î¸å¤í¤Ë¤¢¤êÆÀ¤Ê¤¤¥¿¥¤¥×¤¬¤¢¤ê¤Þ¤¹" + +#: ihex.c:258 +#, c-format +msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" +msgstr "%s:%d: Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤¢¤êÆÀ¤Ê¤¤Ê¸»ú `%s' ¤¬¤¢¤ê¤Þ¤¹\n" + +#: ihex.c:368 +#, fuzzy, c-format +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "%s:%d: Intel Hex ¥Õ¥¡¥¤¥ë¤Î¥Á¥§¥Ã¥¯¥µ¥à¤¬ÉÔÀµ¤Ç¤¹ (%u ¤ÎȦ¤¬ %u ¤Ç¤¹)" + +#: ihex.c:422 +#, fuzzy, c-format +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "%s:%d: ³ÈÄ¥¥¢¥É¥ì¥¹¥ì¥³¡¼¥ÉŤ¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" + +#: ihex.c:439 +#, fuzzy, c-format +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "%s:%d: ³ÈÄ¥³«»Ï¥¢¥É¥ì¥¹Ä¹¤¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" + +#: ihex.c:456 +#, fuzzy, c-format +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "%s:%d: ³ÈÄ¥¥ê¥Ë¥¢¥¢¥É¥ì¥¹¥ì¥³¡¼¥ÉŤ¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤ÆÉÔÀµ¤Ç¤¹" + +#: ihex.c:473 +#, fuzzy, c-format +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "%s:%d: ³ÈÄ¥¥ê¥Ë¥¢³«»Ï¥¢¥É¥ì¥¹Ä¢¤¬ Intel Hex ¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤ÏÉÔÀµ¤Ç¤¹" + +#: ihex.c:490 +#, fuzzy, c-format +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s:%d: Intel Hex ¥Õ¥¡¥¤¥ë¤Î ihex ¥¿¥¤¥× %u ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n" + +#: ihex.c:610 +#, c-format +msgid "%s: internal error in ihex_read_section" +msgstr "%s: ihex_read_section Æâ¤ÇÆâÉô¥¨¥é¡¼" + +#: ihex.c:645 +#, c-format +msgid "%s: bad section length in ihex_read_section" +msgstr "%s: ihex_read_section Æâ¤ÇÉÔÀµ¤Ê¥»¥¯¥·¥ç¥óŤ¬¤¢¤ê¤Þ¤¹" + +#: ihex.c:863 +#, fuzzy, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: ¥¢¥É¥ì¥¹ 0x%s ¤Ï Intel Hex ¥Õ¥¡¥¤¥ë¤ÎÈϰϤòĶ¤¨¤Æ¤¤¤Þ¤¹" + +#: libbfd.c:492 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "¥Þ¥Ã¥×¤·¤Þ¤»¤ó: ¥Ç¡¼¥¿=%lx ¥Þ¥Ã¥×ºÑ=%d\n" + +#: libbfd.c:495 +msgid "not mapping: env var not set\n" +msgstr "¥Þ¥Ã¥×¤·¤Þ¤»¤ó: ´Ä¶­ÊÑ¿ô¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#: libbfd.c:1467 +#, fuzzy, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr "BFD ÆâÉô¥¨¥é¡¼¡£%s ¤Î %d ¹ÔÌÜ %s ¤ÇÃæÃǤ·¤Þ¤·¤¿\n" + +#: libbfd.c:1470 +#, c-format +msgid "Deprecated %s called\n" +msgstr "" + +#: linker.c:1849 +#, c-format +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "" + +#: linker.c:2745 +#, c-format +msgid "Attempt to do relocateable link with %s input and %s output" +msgstr "ÆþÎÏ %s ¤È½ÐÎÏ %s ¤È¤òºÆÇÛÃÖ²Äǽ¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: merge.c:897 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "" + +#: mmo.c:460 +#, fuzzy, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: ÉÔÀµ¤Ê¥»¥¯¥·¥ç¥ó̾ `%s' ¤Ç¤¹" + +#: mmo.c:537 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "" + +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "" + +#: mmo.c:1336 +#, c-format +msgid "" +"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " +"starting with `%s'\n" +msgstr "" + +#: mmo.c:1571 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "" + +#: mmo.c:1581 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "" + +#: mmo.c:1617 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" + +#: mmo.c:1663 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" + +#: mmo.c:1702 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1711 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" + +#: mmo.c:1734 +#, c-format +msgid "" +"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " +"for lop_fixrx\n" +msgstr "" + +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "" + +#: mmo.c:1777 +#, c-format +msgid "" +"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" + +#: mmo.c:1790 +#, c-format +msgid "" +"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" + +#: mmo.c:1896 +#, c-format +msgid "" +"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" + +#: mmo.c:1932 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "" + +#: mmo.c:1945 +#, c-format +msgid "" +"%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras " +"to the preceding lop_stab (%ld)\n" +msgstr "" + +#: mmo.c:2610 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "" + +#: mmo.c:2898 +#, c-format +msgid "" +"%s: Bad symbol definition: `Main' set to %s rather than the start address %" +"s\n" +msgstr "" + +#: mmo.c:2932 +#, c-format +msgid "" +"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " +"%d. Only `Main' will be emitted.\n" +msgstr "" + +#: mmo.c:2977 +#, fuzzy, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "·Ù¹ð: ¥·¥ó¥Ü¥ë `%s' ¤Î·¿¤Ï %d ¤«¤é %d ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿ (%s Æâ)" + +#: mmo.c:3032 +#, fuzzy, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: ihex_read_section Æâ¤ÇÆâÉô¥¨¥é¡¼" + +#: mmo.c:3084 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "" + +#: mmo.c:3090 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "" + +#: mmo.c:3095 +#, c-format +msgid "" +"%s: invalid start address for initialized registers of length %ld: 0x%lx%" +"08lx\n" +msgstr "" + +#: oasys.c:1036 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: oasys ¤Ç¤Ï¥»¥¯¥·¥ç¥ó `%s' ¤òɽ¸½¤Ç¤­¤Þ¤»¤ó" + +#: osf-core.c:132 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "OSF/1 ¥³¥¢¥Õ¥¡¥¤¥ë¥»¥¯¥·¥ç¥ó¥¿¥¤¥× %d ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿\n" + +#: pe-mips.c:658 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "%s: `ld -r' ¤ò PE MIPS objects ¤È¶¦¤Ë»È¤¦»ö¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:794 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "%s: ̤¼ÂÁõ¤Î %s ¤Ç¤¹\n" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "%s: ¥¸¥ã¥ó¥×À褬±ó¤¹¤®¤Þ¤¹\n" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "%s: ÉÔÀµ¤Ê pair/reflo ¤¬ refhi ¤Î¸å¤í¤Ë¤¢¤ê¤Þ¤¹\n" + +#. XXX code yet to be written. +#: peicode.h:785 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: import ¥¿¥¤¥× %x ¤Ï¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" + +#: peicode.h:790 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: import ¥¿¥¤¥×¤òǧ¼±¤Ç¤­¤Þ¤»¤ó -- %x" + +#: peicode.h:804 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: import ̾Á°¥¿¥¤¥×¤òǧ¼±¤Ç¤­¤Þ¤»¤ó -- %x" + +#: peicode.h:1162 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%s: Import Library Format ½ñ¸ËÆâ¤Î¥Þ¥·¥ó¥¿¥¤¥× (0x%x) ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: peicode.h:1174 +#, c-format +msgid "" +"%s: Recognised but unhandled machine type (0x%x) in Import Library Format " +"archive" +msgstr "" +"%s: Import Library Format ½ñ¸ËÆâ¤Î¥Þ¥·¥ó¥¿¥¤¥× (0x%x) ¤Ïǧ¼±¤Ç¤­¤Þ¤·¤¿¤¬¼è¤ê" +"°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" + +#: peicode.h:1191 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "%s: Import Library Format ¥Ø¥Ã¥ÀÆâ¤Î¥µ¥¤¥º¥Õ¥£¡¼¥ë¥É¤¬¥¼¥í¤Ç¤¹" + +#: peicode.h:1219 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: ILF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ëÆâ¤Îʸ»úÎó¤¬ null ½ªÃ¼¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£" + +#: ppcboot.c:416 +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"ppcboot ¥Ø¥Ã¥À:\n" + +#: ppcboot.c:417 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "¥¨¥ó¥È¥ê¥ª¥Õ¥»¥Ã¥È = 0x%.8lx (%ld)\n" + +#: ppcboot.c:418 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Ťµ = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "¥Õ¥é¥°¥Õ¥£¡¼¥ë¥É = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Îΰè̾ = \"%s\"\n" + +#: ppcboot.c:446 +#, c-format +msgid "" +"\n" +"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "" +"\n" +"Îΰè[%d] ¤Î³«»Ï = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:452 +#, c-format +msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "Îΰè[%d] ¤ÎËöÈø = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Îΰè[%d] ¥»¥¯¥¿ = 0x%.8lx (%ld)\n" + +#: ppcboot.c:459 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Îΰè[%d] Ťµ = 0x%.8lx (%ld)\n" + +#: som.c:5402 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers ¤Ï̤¼ÂÁõ¤Ç¤¹" + +#: srec.c:301 +#, c-format +msgid "%s:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: `%s' ¤Ï S-record ¥Õ¥¡¥¤¥ëÆâ¤Ë¤Ï¤¢¤êÆÀ¤Ê¤¤Ê¸»ú¤Ç¤¹\n" + +#: syms.c:998 +msgid "Unsupported .stab relocation" +msgstr ".stab ºÆÇÛÃ֤ϥµ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-gsd.c:356 +#, c-format +msgid "bfd_make_section (%s) failed" +msgstr "bfd_make_section (%s) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: vms-gsd.c:371 +#, c-format +msgid "bfd_set_section_flags (%s, %x) failed" +msgstr "bfd_set_section_flags (%s, %x) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: vms-gsd.c:407 +#, c-format +msgid "Size mismatch section %s=%lx, %s=%lx" +msgstr "¥»¥¯¥·¥ç¥ó %s=%lx, %s=%lx ¤Ç¥µ¥¤¥º¤¬°ìÃפ·¤Þ¤»¤ó" + +#: vms-gsd.c:704 +#, c-format +msgid "unknown gsd/egsd subtype %d" +msgstr "ÉÔÌÀ¤Ê gsd/egsd ¥µ¥Ö¥¿¥¤¥× %d ¤Ç¤¹" + +#: vms-hdr.c:406 +msgid "Object module NOT error-free !\n" +msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥â¥¸¥å¡¼¥ë¤¬¥¨¥é¡¼¥Õ¥ê¡¼¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó!\n" + +#: vms-misc.c:543 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "_bfd_vms_push ¤Ç¥¹¥¿¥Ã¥¯¥ª¡¼¥Ð¡¼¥Õ¥í¡¼(%d)¤·¤Þ¤·¤¿" + +#: vms-misc.c:561 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "_bfd_vms_pop ¤Ç¥¹¥¿¥Ã¥¯¥¢¥ó¥À¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: vms-misc.c:919 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted ¤¬¥¼¥í¥Ð¥¤¥È¤Ç¸Æ¤Ó½Ð¤µ¤ì¤Þ¤·¤¿" + +#: vms-misc.c:924 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted ¸Æ¤Ó½Ð¤·»þ¤Î¥Ð¥¤¥È¿ô¤¬Â礭¤¹¤®¤Þ¤¹" + +#: vms-misc.c:1055 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "¥·¥ó¥Ü¥ë %s ¤Ï %s ¤ÇÃÖ¤­´¹¤¨¤é¤ì¤Þ¤·¤¿\n" + +#: vms-misc.c:1117 +#, c-format +msgid "failed to enter %s" +msgstr "%s ¤ØÆþ¤ì¤Þ¤»¤ó¤Ç¤·¤¿" + +#: vms-tir.c:81 +msgid "No Mem !" +msgstr "¥á¥â¥ê¤¬¤¢¤ê¤Þ¤»¤ó!" + +#: vms-tir.c:362 +#, fuzzy, c-format +msgid "bad section index in %s" +msgstr "ETIR_S_C_STA_PQ ¤Ë¤¢¤ë¥»¥¯¥·¥ç¥ó¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹" + +#: vms-tir.c:375 +#, fuzzy, c-format +msgid "unsupported STA cmd %s" +msgstr "STA cmd %d ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#: vms-tir.c:380 vms-tir.c:1240 +#, fuzzy, c-format +msgid "reserved STA cmd %d" +msgstr "STA cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" + +#: vms-tir.c:491 vms-tir.c:514 +#, fuzzy, c-format +msgid "%s: no symbol \"%s\"" +msgstr "%s: ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829 +#: vms-tir.c:838 vms-tir.c:1563 +#, fuzzy, c-format +msgid "%s: not supported" +msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:586 vms-tir.c:1418 +#, fuzzy, c-format +msgid "%s: not implemented" +msgstr "%s: ̤¼ÂÁõ¤Î %s ¤Ç¤¹\n" + +#: vms-tir.c:590 vms-tir.c:1422 +#, fuzzy, c-format +msgid "reserved STO cmd %d" +msgstr "STO cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" + +#: vms-tir.c:708 vms-tir.c:1568 +#, fuzzy, c-format +msgid "reserved OPR cmd %d" +msgstr "OPR cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" + +#: vms-tir.c:776 vms-tir.c:1632 +#, fuzzy, c-format +msgid "reserved CTL cmd %d" +msgstr "CTL cmd %d ¤ÏͽÌóºÑ¤Ç¤¹" + +#. stack byte from image +#. arg: none. +#: vms-tir.c:1148 +#, fuzzy +msgid "stack-from-image not implemented" +msgstr "Stack-from-image ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1166 +#, fuzzy +msgid "stack-entry-mask not fully implemented" +msgstr "Stack-entry-mask ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor +#. +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1180 +msgid "PASSMECH not fully implemented" +msgstr "PASSMECH ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1199 +#, fuzzy +msgid "stack-local-symbol not fully implemented" +msgstr "Stack-local-symbol ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1212 +#, fuzzy +msgid "stack-literal not fully implemented" +msgstr "Stack-literal ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1233 +#, fuzzy +msgid "stack-local-symbol-entry-point-mask not fully implemented" +msgstr "Stack-local-symbol-entry-point-mask ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611 +#: vms-tir.c:1619 vms-tir.c:1627 +#, fuzzy, c-format +msgid "%s: not fully implemented" +msgstr "PASSMECH ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: vms-tir.c:1684 +#, fuzzy, c-format +msgid "obj code %d not found" +msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥³¡¼¥É %d ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: vms-tir.c:2019 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC ¤¬¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹¤¬ºÆÇÛÃÖ¤¬¤¢¤ê¤Þ¤»¤ó" + +#: vms-tir.c:2307 +#, c-format +msgid "Unhandled relocation %s" +msgstr "ºÆÇÛÃÖ %s ¤¬¼è¤ê°·¤ï¤ì¤Þ¤»¤ó¤Ç¤·¤¿" + +#: xcofflink.c:1241 +#, c-format +msgid "%s: `%s' has line numbers but no enclosing section" +msgstr "%s: `%s' ¤Ï¹ÔÈÖ¹æ¤ò»ý¤Á¤Þ¤¹¤¬¡¢¥»¥¯¥·¥ç¥ó¤ò°Ï¤¤¹þ¤ó¤Ç¤¤¤Þ¤»¤ó" + +#: xcofflink.c:1294 +#, c-format +msgid "%s: class %d symbol `%s' has no aux entries" +msgstr "%s: ¥¯¥é¥¹ %d ¥·¥ó¥Ü¥ë `%s' ¤ËÊä½õ¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:1317 +#, c-format +msgid "%s: symbol `%s' has unrecognized csect type %d" +msgstr "%s: ¥·¥ó¥Ü¥ë `%s' ¤¬Ç§¼±¤Ç¤­¤Ê¤¤ csect ¥¿¥¤¥× %d ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹" + +#: xcofflink.c:1329 +#, c-format +msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: ÉÔÀµ XTY_ER ¥·¥ó¥Ü¥ë `%s': ¥¯¥é¥¹ %d scnum %d scnlen %d" + +#: xcofflink.c:1365 +#, c-format +msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: XMC_TC0 ¥·¥ó¥Ü¥ë `%s' ¤Ï class %d scnlen %d ¤Ç¤¹" + +#: xcofflink.c:1517 +#, c-format +msgid "%s: csect `%s' not in enclosing section" +msgstr "%s: csect `%s' ¤¬¥»¥¯¥·¥ç¥ó¤Î°Ï¤ß¤ÎÃæ¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:1624 +#, c-format +msgid "%s: misplaced XTY_LD `%s'" +msgstr "%s: XTY_LD `%s' ¤òÃÖ¤­°ã¤¨¤Æ¤¤¤Þ¤¹" + +#: xcofflink.c:1948 +#, c-format +msgid "%s: reloc %s:%d not in csect" +msgstr "%s: ºÆÇÛÃÖ %s:%d ¤¬ csect Æâ¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:2083 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF ¤¬ XCOFF ½ÐÎÏÀ¸À®»þ°Ê³°¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤ò¶¦Í­¤·¤Þ¤·¤¿" + +#: xcofflink.c:2104 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: ưŪ¥ª¥Ö¥¸¥§¥¯¥È¤Ë .loader ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:2749 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:2890 +msgid "error: undefined symbol __rtinit" +msgstr "" + +#: xcofflink.c:3458 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "·Ù¹ð: ̤ÄêµÁ¥·¥ó¥Ü¥ë `%s' ¤ò export ¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹" + +#: xcofflink.c:4452 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "" +"TOC ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼: 0x%lx > 0x10000 -- ¥³¥ó¥Ñ¥¤¥ë»þ¤Ë -mminimal-toc ¤ò»î¤·¤Þ" +"¤·¤ç¤¦" + +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 +#, c-format +msgid "%s: loader reloc in unrecognized section `%s'" +msgstr "%s: ¥í¡¼¥ÀºÆÇÛÃÖ¤¬Ç§¼±¤Ç¤­¤Ê¤¤¥»¥¯¥·¥ç¥ó `%s' ¤Ë¤¢¤ê¤Þ¤¹" + +#: xcofflink.c:5314 xcofflink.c:6128 +#, c-format +msgid "%s: `%s' in loader reloc but not loader sym" +msgstr "%s: `%s' ¤¬¥í¡¼¥ÀºÆÇÛÃ֤ˤ¢¤ê¤Þ¤¹¤¬¥í¡¼¥À¥·¥ó¥Ü¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: xcofflink.c:5329 +#, c-format +msgid "%s: loader reloc in read-only section %s" +msgstr "%s: ¥í¡¼¥ÀºÆÇÛÃÖ¤¬Æɹþ¤ßÀìÍÑ¥»¥¯¥·¥ç¥ó %s ¤Ë¤¢¤ê¤Þ¤¹" + +#: elf32-ia64.c:2189 elf64-ia64.c:2189 +#, fuzzy +msgid "@pltoff reloc against local symbol" +msgstr "%s: 0x%lx ¤Ç¤Î CALL16 ºÆÇÛÃÖ¤¬Âç°è¥·¥ó¥Ü¥ë¤òÂоݤȤ·¤Æ¤¤¤Þ¤»¤ó" + +#: elf32-ia64.c:3413 elf64-ia64.c:3413 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "" + +#: elf32-ia64.c:3424 elf64-ia64.c:3424 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "" + +#: elf32-ia64.c:3728 elf64-ia64.c:3728 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "" + +#: elf32-ia64.c:3761 elf64-ia64.c:3761 +#, fuzzy, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: ºÆÇÛÃÖ¥¿¥¤¥× %d (¥·¥ó¥Ü¥ë %s) ¤¬ÉÔÌÀ¤Ç¤¹" + +#: elf32-ia64.c:3900 elf64-ia64.c:3900 +#, fuzzy, c-format +msgid "%s: dynamic relocation against speculation fixup" +msgstr "%s: ưŪ¥ª¥Ö¥¸¥§¥¯¥È¤Ë .loader ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" + +#: elf32-ia64.c:3908 elf64-ia64.c:3908 +#, c-format +msgid "%s: speculation fixup against undefined weak symbol" +msgstr "" + +#: elf32-ia64.c:4092 elf64-ia64.c:4092 +#, fuzzy +msgid "unsupported reloc" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ºÆÇÛÃÖ¥¿¥¤¥×¤Ç¤¹" + +#: elf32-ia64.c:4372 elf64-ia64.c:4372 +#, fuzzy, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: elf32-ia64.c:4381 elf64-ia64.c:4381 +#, fuzzy, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "" +"%s: ¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó¤Î¥Õ¥¡¥¤¥ë¤È¤ò¥ê¥ó¥¯¤·¤è" +"¤¦¤È¤·¤Æ¤¤¤Þ¤¹" + +#: elf32-ia64.c:4390 elf64-ia64.c:4390 +#, fuzzy, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: elf32-ia64.c:4399 elf64-ia64.c:4399 +#, fuzzy, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: elf32-ia64.c:4409 elf64-ia64.c:4409 +#, fuzzy, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "%s: abicall ¥Õ¥¡¥¤¥ë¤ËÈó abicall ¥Õ¥¡¥¤¥ë¤ò¥ê¥ó¥¯¤·¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: peigen.c:962 pepigen.c:962 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: ¹ÔÈֹ椬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x%lx > 0xffff" + +#: peigen.c:979 pepigen.c:979 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: ºÆÇÛÃÖÎΰ褬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿ 1: 0x%lx > 0xffff" + +#: peigen.c:993 pepigen.c:993 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Export ¥Ç¥£¥ì¥¯¥È¥ê [.edata (°¿¤¤¤Ï¤³¤³¤Þ¤Ç¤Ë¸«¤Ä¤±¤¿¾ì½ê)]" + +#: peigen.c:994 pepigen.c:994 +msgid "Import Directory [parts of .idata]" +msgstr "Import ¥Ç¥£¥ì¥¯¥È¥ê [.idata ¤ÎÉôʬ]" + +#: peigen.c:995 pepigen.c:995 +msgid "Resource Directory [.rsrc]" +msgstr "¥ê¥½¡¼¥¹¥Ç¥£¥ì¥¯¥È¥ê [.rsrc]" + +#: peigen.c:996 pepigen.c:996 +msgid "Exception Directory [.pdata]" +msgstr "Îã³°¥Ç¥£¥ì¥¯¥È¥ê [.pdata]" + +#: peigen.c:997 pepigen.c:997 +msgid "Security Directory" +msgstr "¥»¥­¥å¥ê¥Æ¥£¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:998 pepigen.c:998 +msgid "Base Relocation Directory [.reloc]" +msgstr "´ðËܺÆÇÛÃ֥ǥ£¥ì¥¯¥È¥ê [.reloc]" + +#: peigen.c:999 pepigen.c:999 +msgid "Debug Directory" +msgstr "¥Ç¥Ð¥Ã¥°¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1000 pepigen.c:1000 +msgid "Description Directory" +msgstr "µ­½Ò»Ò¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1001 pepigen.c:1001 +msgid "Special Directory" +msgstr "¥¹¥Ú¥·¥ã¥ë¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1002 pepigen.c:1002 +msgid "Thread Storage Directory [.tls]" +msgstr "¥¹¥ì¥Ã¥Éµ­²±¥Ç¥£¥ì¥¯¥È¥ê [.tls]" + +#: peigen.c:1003 pepigen.c:1003 +msgid "Load Configuration Directory" +msgstr "¥í¡¼¥ÉÀßÄê¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1004 pepigen.c:1004 +msgid "Bound Import Directory" +msgstr "¶­³¦ Import ¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1005 pepigen.c:1005 +msgid "Import Address Table Directory" +msgstr "Import ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1006 pepigen.c:1006 +msgid "Delay Import Directory" +msgstr "ÃÙ±ä Import ¥Ç¥£¥ì¥¯¥È¥ê" + +#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +msgid "Reserved" +msgstr "ͽÌóºÑ" + +#: peigen.c:1071 pepigen.c:1071 +msgid "" +"\n" +"There is an import table, but the section containing it could not be found\n" +msgstr "" +"\n" +"import ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤ò´Þ¤ó¤Ç¤¤¤ë¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·" +"¤¿\n" + +#: peigen.c:1076 pepigen.c:1076 +#, c-format +msgid "" +"\n" +"There is an import table in %s at 0x%lx\n" +msgstr "" +"\n" +"%s Æâ¤Î 0x%lx ¤Ë¤¢¤ë import ¥Æ¡¼¥Ö¥ë¤Ç¤¹\n" + +#: peigen.c:1113 pepigen.c:1113 +#, c-format +msgid "" +"\n" +"Function descriptor located at the start address: %04lx\n" +msgstr "" +"\n" +"´Ø¿ôµ­½Ò»Ò¤Ï³«»Ï¥¢¥É¥ì¥¹¤Ë°ÌÃÖ¤·¤Æ¤¤¤Þ¤¹: %04lx\n" + +#: peigen.c:1116 pepigen.c:1116 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\t¥³¡¼¥É¥Ù¡¼¥¹ %08lx toc (loadable/actual) %08lx/%08lx\n" + +#: peigen.c:1122 pepigen.c:1122 +msgid "" +"\n" +"No reldata section! Function descriptor not decoded.\n" +msgstr "" +"\n" +"reldata ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó! ´Ø¿ôµ­½Ò»Ò¤¬¥Ç¥³¡¼¥É¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£\n" + +#: peigen.c:1127 pepigen.c:1127 +#, c-format +msgid "" +"\n" +"The Import Tables (interpreted %s section contents)\n" +msgstr "" +"\n" +"Import ¥Æ¡¼¥Ö¥ë (%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" + +#: peigen.c:1130 pepigen.c:1130 +#, fuzzy +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" +msgstr " Table Stamp Chain Name Thunk\n" + +#: peigen.c:1180 pepigen.c:1180 +#, c-format +msgid "" +"\n" +"\tDLL Name: %s\n" +msgstr "" +"\n" +"\tDLL ̾: %s\n" + +#: peigen.c:1184 peigen.c:1247 pepigen.c:1184 pepigen.c:1247 +msgid "\tvma: Hint/Ord Member-Name\n" +msgstr "\tvma: Hint/Ord ¥á¥ó¥Ð̾\n" + +#: peigen.c:1246 pepigen.c:1246 +msgid "\tThe Import Address Table (difference found)\n" +msgstr "\tImport ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë (º¹°Û¤òȯ¸«)\n" + +#: peigen.c:1253 pepigen.c:1253 +msgid "\t>>> Ran out of IAT members!\n" +msgstr "\t>>> IAT ¥á¥ó¥Ð¤òÄɤ¤½Ð¤·¤Þ¤·¤¿!\n" + +#: peigen.c:1271 pepigen.c:1271 +msgid "\tThe Import Address Table is identical\n" +msgstr "\tImport Address Table ¤¬Á´¤¯Æ±¤¸¤Ç¤¹\n" + +#: peigen.c:1343 pepigen.c:1343 +msgid "" +"\n" +"There is an export table, but the section containing it could not be found\n" +msgstr "" +"\n" +"export ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤ì¤ò´Þ¤ó¤Ç¤¤¤ë¥»¥¯¥·¥ç¥ó¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó¤Ç¤·" +"¤¿\n" + +#: peigen.c:1348 pepigen.c:1348 +#, c-format +msgid "" +"\n" +"There is an export table in %s at 0x%lx\n" +msgstr "" +"\n" +"%s ¤Î 0x%lx ¤Ë export ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤¹\n" + +#: peigen.c:1379 pepigen.c:1379 +#, c-format +msgid "" +"\n" +"The Export Tables (interpreted %s section contents)\n" +"\n" +msgstr "" +"\n" +"Export ¥Æ¡¼¥Ö¥ë (%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" +"\n" + +#: peigen.c:1383 pepigen.c:1383 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Export ¥Õ¥é¥° \t\t\t%lx\n" + +#: peigen.c:1386 pepigen.c:1386 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "»þ¹ï/ÆüÉÕ¥¹¥¿¥ó¥× \t\t%lx\n" + +#: peigen.c:1389 pepigen.c:1389 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Major/Minor \t\t\t%d/%d\n" + +#: peigen.c:1392 pepigen.c:1392 +msgid "Name \t\t\t\t" +msgstr "̾Á° \t\t\t\t" + +#: peigen.c:1398 pepigen.c:1398 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "½ø¿ô¥Ù¡¼¥¹ \t\t\t%ld\n" + +#: peigen.c:1401 pepigen.c:1401 +msgid "Number in:\n" +msgstr "³Æ¼ï¤Î¿ôÃÍ:\n" + +#: peigen.c:1404 pepigen.c:1404 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\tExport ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë\t\t%08lx\n" + +#: peigen.c:1408 pepigen.c:1408 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\t[̾Á°¥Ý¥¤¥ó¥¿/½ø¿ô] ¥Æ¡¼¥Ö¥ë\t%08lx\n" + +#: peigen.c:1411 pepigen.c:1411 +msgid "Table Addresses\n" +msgstr "¥Æ¡¼¥Ö¥ë¥¢¥É¥ì¥¹\n" + +#: peigen.c:1414 pepigen.c:1414 +msgid "\tExport Address Table \t\t" +msgstr "\tExport ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë\t\t" + +#: peigen.c:1419 pepigen.c:1419 +msgid "\tName Pointer Table \t\t" +msgstr "\t̾Á°¥Ý¥¤¥ó¥¿¥Æ¡¼¥Ö¥ë \t\t" + +#: peigen.c:1424 pepigen.c:1424 +msgid "\tOrdinal Table \t\t\t" +msgstr "\t½ø¿ô¥Æ¡¼¥Ö¥ë \t\t\t" + +#: peigen.c:1439 pepigen.c:1439 +#, c-format +msgid "" +"\n" +"Export Address Table -- Ordinal Base %ld\n" +msgstr "" +"\n" +"Export ¥¢¥É¥ì¥¹¥Æ¡¼¥Ö¥ë -- ½ø¿ô¥Ù¡¼¥¹ %ld\n" + +#: peigen.c:1458 pepigen.c:1458 +msgid "Forwarder RVA" +msgstr "Forwarder RVA" + +#: peigen.c:1469 pepigen.c:1469 +msgid "Export RVA" +msgstr "Export RVA" + +#: peigen.c:1476 pepigen.c:1476 +msgid "" +"\n" +"[Ordinal/Name Pointer] Table\n" +msgstr "" +"\n" +"[½ø¿ô/̾Á°¥Ý¥¤¥ó¥¿] ¥Æ¡¼¥Ö¥ë\n" + +#: peigen.c:1531 pepigen.c:1531 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "·Ù¹ð¡¢.pdata ¥»¥¯¥·¥ç¥ó¥µ¥¤¥º (%ld) ¤¬ %d ¤ÎÇÜ¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n" + +#: peigen.c:1535 pepigen.c:1535 +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"´Ø¿ô¥Æ¡¼¥Ö¥ë (.pdata ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" + +#: peigen.c:1538 pepigen.c:1538 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\t³«»Ï¥¢¥É¥ì¥¹ ½ªÎ»¥¢¥É¥ì¥¹ Unwind ¾ðÊó\n" + +#: peigen.c:1540 pepigen.c:1540 +#, fuzzy +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" +msgstr " vma:\t\t³«»Ï ½ªÎ» EH EH PrologEnd Îã³°\n" + +#: peigen.c:1610 pepigen.c:1610 +msgid " Register save millicode" +msgstr " ¥ì¥¸¥¹¥¿Êݸ¥ß¥ê¥³¡¼¥É" + +#: peigen.c:1613 pepigen.c:1613 +msgid " Register restore millicode" +msgstr " ¥ì¥¸¥¹¥¿Éü¸µ¥ß¥ê¥³¡¼¥É" + +#: peigen.c:1616 pepigen.c:1616 +msgid " Glue code sequence" +msgstr " ¥°¥ë¡¼¥³¡¼¥ÉÎó" + +#: peigen.c:1668 pepigen.c:1668 +msgid "" +"\n" +"\n" +"PE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "" +"\n" +"\n" +"PE ¥Õ¥¡¥¤¥ë¥Ù¡¼¥¹ºÆÇÛÃÖ (.reloc ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò²ò¼á)\n" + +#: peigen.c:1698 pepigen.c:1698 +#, c-format +msgid "" +"\n" +"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "" +"\n" +"²¾ÁÛ¥¢¥É¥ì¥¹: %08lx ¥Á¥ã¥ó¥¯¥µ¥¤¥º %ld (0x%lx) fixups ¤Î¸Ä¿ô %ld\n" + +#: peigen.c:1711 pepigen.c:1711 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\treloc %4d ¥ª¥Õ¥»¥Ã¥È %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1751 pepigen.c:1751 +#, c-format +msgid "" +"\n" +"Characteristics 0x%x\n" +msgstr "" +"\n" +"¸ÇÍ­ 0x%x\n" + +#~ msgid "GP relative relocation when GP not defined" +#~ msgstr "GP ¤¬Ì¤ÄêµÁ¤Î»þ¤Î GP ´ØÏ¢ºÆÇÛÃ֤Ǥ¹" + +#~ msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +#~ msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" + +#~ msgid "" +#~ "Warning: Not setting interwork flag of %s since it has already been " +#~ "specified as non-interworking" +#~ msgstr "" +#~ "·Ù¹ð: Èó interworking ¤È´û¤Ë»ØÄꤵ¤ì¤Æ¤¤¤ë¤¿¤á¡¢%s ¤Î interwork ¥Õ¥é¥°¤ò" +#~ "¥»¥Ã¥È¤·¤Þ¤»¤ó" + +#~ msgid "Warning: Clearing the interwork flag of %s due to outside request" +#~ msgstr "·Ù¹ð: Í׵ᳰ¤Î¤¿¤á %s ¤Î interwork ¥Õ¥é¥°¤ò¥¯¥ê¥¢¤·¤Þ¤¹" + +#~ msgid "float" +#~ msgstr "ÉâÆ°¾®¿ô" + +#~ msgid "integer" +#~ msgstr "À°¿ô" + +#~ msgid "soft" +#~ msgstr "¥½¥Õ¥È" + +#~ msgid "hard" +#~ msgstr "¥Ï¡¼¥É" + +#~ msgid "Warning: %s %s interworking, whereas %s %s" +#~ msgstr "·Ù¹ð: %s ¤Ï interworking ¤ò%s¤Ë¤â¤«¤«¤ï¤é¤º¡¢%s ¤¬%s" + +#~ msgid "supports" +#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë" + +#~ msgid "does not" +#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "does" +#~ msgstr "¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹" + +#~ msgid "%s(%s+0x%lx): cannot find stub entry %s" +#~ msgstr "%s(%s+0x%lx): ¥¹¥¿¥Ö¥¨¥ó¥È¥ê %s ¤ò¸«¤Ä¤±¤é¤ì¤Þ¤»¤ó" + +#~ msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections" +#~ msgstr "" +#~ "%s(%s+0x%lx): %s ¤òºÆÇÛÃ֤Ǥ­¤Þ¤»¤ó¡£-ffunction-sections ¤òÉÕ¤±¤ÆºÆ¥³¥ó¥Ñ" +#~ "¥¤¥ë¤·¤Þ¤·¤ç¤¦" + +#~ msgid "" +#~ "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section " +#~ "= 0x%.8lx\n" +#~ msgstr "" +#~ "¥»¥¯¥·¥ç¥ó¥·¥ó¥Ü¥ë¤òºîÀ®¤·¤Þ¤¹, ̾Á° = %s, ÃÍ = 0x%.8lx, º÷°ú = %d, ¥»¥¯" +#~ "¥·¥ç¥ó = 0x%.8lx\n" + +#~ msgid " whereas segment starts at 0x%x" +#~ msgstr " ¤Ë¤â¤«¤«¤ï¤é¤º¡¢¥»¥°¥á¥ó¥È¤¬ 0x%x ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Þ¤¹" + +#~ msgid "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x" +#~ "%.8lx%s\n" +#~ msgstr "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, ̾Á° = %s, ¥·¥ó¥Ü¥ëÈÖ¹æ = %d, ¥Õ¥é¥° " +#~ "= 0x%.8lx%s\n" + +#~ msgid " vma: Hint Time Forward DLL First\n" +#~ msgstr " vma: Hint Time Forward DLL First\n" + +#~ msgid " \t\tAddress Address Handler Data Address Mask\n" +#~ msgstr " \t\t¥¢¥É¥ì¥¹ ¥¢¥É¥ì¥¹ ¥Ï¥ó¥É¥é ¥Ç¡¼¥¿ ¥¢¥É¥ì¥¹ ¥Þ¥¹¥¯\n" + +#~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_GBL: ¥·¥ó¥Ü¥ë \"%s\" ¤¬¤¢¤ê¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_CA: ¥·¥ó¥Ü¥ë \"%s\" ¤¬¤¢¤ê¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STO_RB/AB: Not supported" +#~ msgstr "ETIR_S_C_STO_RB/AB: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STO_LP_PSB: Not supported" +#~ msgstr "ETIR_S_C_STO_LP_PSB: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STO_HINT_GBL: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_GBL: ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_PS: ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_OPR_INSV: Not supported" +#~ msgstr "ETIR_S_C_OPR_INSV: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_OPR_USH: Not supported" +#~ msgstr "ETIR_S_C_OPR_USH: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_OPR_ROT: Not supported" +#~ msgstr "ETIR_S_C_OPR_ROT: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_OPR_REDEF: Not supported" +#~ msgstr "ETIR_S_C_OPR_REDEF: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" +#~ msgstr "ETIR_S_C_OPR_DFLIT: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STC_LP: not supported" +#~ msgstr "ETIR_S_C_STC_LP: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STC_GBL: not supported" +#~ msgstr "ETIR_S_C_STC_GBL: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STC_GCA: not supported" +#~ msgstr "ETIR_S_C_STC_GCA: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "ETIR_S_C_STC_PS: not supported" +#~ msgstr "ETIR_S_C_STC_PS: ¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "Unimplemented STO cmd %d" +#~ msgstr "STO cmd %d ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "TIR_S_C_OPR_ASH incomplete" +#~ msgstr "TIR_S_C_OPR_ASH ¤ÏÉÔ´°Á´¤Ç¤¹" + +#~ msgid "TIR_S_C_OPR_USH incomplete" +#~ msgstr "TIR_S_C_OPR_USH ¤ÏÉÔ´°Á´¤Ç¤¹" + +#~ msgid "TIR_S_C_OPR_ROT incomplete" +#~ msgstr "TIR_S_C_OPR_ROT ¤ÏÉÔ´°Á´¤Ç¤¹" + +#~ msgid "TIR_S_C_OPR_REDEF not supported" +#~ msgstr "TIR_S_C_OPR_REDEF ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "TIR_S_C_OPR_DFLIT not supported" +#~ msgstr "TIR_S_C_OPR_DFLIT ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_DFLOC ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "TIR_S_C_CTL_STLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_STLOC ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#~ msgid "TIR_S_C_CTL_STKDL not fully implemented" +#~ msgstr "TIR_S_C_CTL_STKDL ¤Ï´°Á´¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" diff -uprN binutils-2.11.92.0.12.3/bfd/po/sv.po binutils-2.11.93.0.2/bfd/po/sv.po --- binutils-2.11.92.0.12.3/bfd/po/sv.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/po/sv.po Sun Feb 3 11:22:30 2002 @@ -0,0 +1,2931 @@ +# Swedish messages for bfd. +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Christian Rose , 2001, 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: bfd 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-31 17:07+0000\n" +"PO-Revision-Date: 2002-01-30 02:35+0100\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" + +#: aout-adobe.c:196 +#, c-format +msgid "%s: Unknown section type in a.out.adobe file: %x\n" +msgstr "%s: Okänd sektionstyp i a.out.adobe-fil: %x\n" + +#: aout-cris.c:208 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "%s: Ogiltig omlokaliseringstyp exporterad: %d" + +#: aout-cris.c:252 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "%s: Ogiltig omlokaliseringstyp importerad: %d" + +#: aout-cris.c:263 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "%s: Felaktig omlokaliseringstyp importerad: %d" + +#: aoutx.h:1282 aoutx.h:1699 +#, c-format +msgid "%s: can not represent section `%s' in a.out object file format" +msgstr "%s: kan inte representera sektionen \"%s\" i a.out-objektfilformat" + +#: aoutx.h:1669 +#, c-format +msgid "" +"%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "" +"%s: kan inte representera sektion för symbolen \"%s\" i a.out-objektfilformat" + +#: aoutx.h:1671 +msgid "*unknown*" +msgstr "*okänd*" + +#: aoutx.h:3735 +#, c-format +msgid "%s: relocateable link from %s to %s not supported" +msgstr "%s: omlokaliseringsbar länk från %s till %s stöds inte" + +#: archive.c:1826 +msgid "Warning: writing archive was slow: rewriting timestamp\n" +msgstr "Varning: arkivskrivning var långsam: skriver om tidsstämpel\n" + +#: archive.c:2093 +msgid "Reading archive file mod timestamp" +msgstr "Läser arkivfilens modifieringstidsstämpel" + +#. FIXME: bfd can't call perror. +#: archive.c:2120 +msgid "Writing updated armap timestamp" +msgstr "Skriver uppdaterad armap-tidsstämpel" + +#: bfd.c:274 +msgid "No error" +msgstr "Inget fel" + +#: bfd.c:275 +msgid "System call error" +msgstr "Systemanropsfel" + +#: bfd.c:276 +msgid "Invalid bfd target" +msgstr "Ogiltigt bfd-mål" + +#: bfd.c:277 +msgid "File in wrong format" +msgstr "Filen är i fel format" + +#: bfd.c:278 +msgid "Archive object file in wrong format" +msgstr "Arkivobjektfil är i fel format" + +#: bfd.c:279 +msgid "Invalid operation" +msgstr "Ogiltig åtgärd" + +#: bfd.c:280 +msgid "Memory exhausted" +msgstr "Minnet är slut" + +#: bfd.c:281 +msgid "No symbols" +msgstr "Inga symboler" + +#: bfd.c:282 +msgid "Archive has no index; run ranlib to add one" +msgstr "Arkivet har inget index; kör ranlib för att lägga till ett" + +#: bfd.c:283 +msgid "No more archived files" +msgstr "Inga fler arkiverade filer" + +#: bfd.c:284 +msgid "Malformed archive" +msgstr "Trasigt arkiv" + +#: bfd.c:285 +msgid "File format not recognized" +msgstr "Filformatet känns inte igen" + +#: bfd.c:286 +msgid "File format is ambiguous" +msgstr "Filformatet är tvetydigt" + +#: bfd.c:287 +msgid "Section has no contents" +msgstr "Sektionen har inget innehåll" + +#: bfd.c:288 +msgid "Nonrepresentable section on output" +msgstr "Ickerepresenterbar sektion i utdata" + +#: bfd.c:289 +msgid "Symbol needs debug section which does not exist" +msgstr "Symbolen kräver felsökningssektion som inte finns" + +#: bfd.c:290 +msgid "Bad value" +msgstr "Felaktigt värde" + +#: bfd.c:291 +msgid "File truncated" +msgstr "Filen trunkerad" + +#: bfd.c:292 +msgid "File too big" +msgstr "Filen är för stor" + +#: bfd.c:293 +msgid "#" +msgstr "#" + +#: bfd.c:700 +#, c-format +msgid "BFD %s assertion fail %s:%d" +msgstr "BFD %s-försäkran misslyckades %s:%d" + +#: bfd.c:719 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "Internt BFD %s-fel, avbryter vid %s rad %d i %s\n" + +#: bfd.c:723 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d\n" +msgstr "Internt BFD %s-fel, avbryter vid %s rad %d\n" + +#: bfd.c:725 +msgid "Please report this bug.\n" +msgstr "Rapportera gärna detta fel.\n" + +#: binary.c:306 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "" +"Varning: Skrivning av sektionen \"%s\" till enormt (dvs negativt) avlägsen " +"byte 0x%lx." + +# src/menus.c:341 +#: coff-a29k.c:119 +msgid "Missing IHCONST" +msgstr "IHCONST saknas" + +# src/menus.c:341 +#: coff-a29k.c:180 +msgid "Missing IHIHALF" +msgstr "IHIHALF saknas" + +#: coff-a29k.c:212 coff-or32.c:228 +msgid "Unrecognized reloc" +msgstr "Okänd omlokalisering" + +#: coff-a29k.c:408 +msgid "missing IHCONST reloc" +msgstr "IHCONST-omlokalisering saknas" + +#: coff-a29k.c:498 +msgid "missing IHIHALF reloc" +msgstr "IHIHALF-omlokalisering saknas" + +#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1433 +msgid "GP relative relocation used when GP not defined" +msgstr "GP-relativ omlokalisering användes då GP inte är definierad" + +#: coff-alpha.c:1485 +msgid "using multiple gp values" +msgstr "använder flera gp-värden" + +#: coff-arm.c:1051 elf32-arm.h:285 +#, c-format +msgid "%s: unable to find THUMB glue '%s' for `%s'" +msgstr "%s: kunde inte hitta THUMB-klistret \"%s\" till \"%s\"" + +#: coff-arm.c:1080 elf32-arm.h:320 +#, c-format +msgid "%s: unable to find ARM glue '%s' for `%s'" +msgstr "%s: kunde inte hitta ARM-klistret \"%s\" till \"%s\"" + +#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990 +#, c-format +msgid "%s(%s): warning: interworking not enabled." +msgstr "%s(%s): varning: samverkande är inte aktiverat." + +#: coff-arm.c:1379 elf32-arm.h:993 +#, c-format +msgid " first occurrence: %s: arm call to thumb" +msgstr " första förekomst: %s: arm-anrop till thumb" + +#: coff-arm.c:1474 elf32-arm.h:889 +#, c-format +msgid " first occurrence: %s: thumb call to arm" +msgstr " första förekomst: %s: thumb-anrop till arm" + +#: coff-arm.c:1477 +msgid " consider relinking with --support-old-code enabled" +msgstr " överväg omlänkning med --support-old-code aktiverat" + +#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 +#, c-format +msgid "%s: bad reloc address 0x%lx in section `%s'" +msgstr "%s: felaktig omlokaliseringsadress 0x%lx i sektionen \"%s\"" + +#: coff-arm.c:2107 +#, c-format +msgid "%s: illegal symbol index in reloc: %d" +msgstr "%s: otillåtet symbolindex i omlokalisering: %d" + +#: coff-arm.c:2235 +#, c-format +msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" +msgstr "%s: FEL: kompilerad för APCS-%d där målet %s använder APCS-%d" + +#: coff-arm.c:2250 +#, c-format +msgid "" +"%s: ERROR: passes floats in float registers whereas target %s uses integer " +"registers" +msgstr "" +"%s: FEL: skickar flyttal i flyttalsregister där målet %s istället använder " +"heltalsregister" + +#: coff-arm.c:2253 +#, c-format +msgid "" +"%s: ERROR: passes floats in integer registers whereas target %s uses float " +"registers" +msgstr "" +"%s: FEL: skickar flyttal i heltalsregister där målet %s istället använder " +"flyttalsregister" + +#: coff-arm.c:2268 +#, c-format +msgid "" +"%s: ERROR: compiled as position independent code, whereas target %s is " +"absolute position" +msgstr "" +"%s: FEL: kompilerad som positionsoberoende kod, där målet %s istället har " +"absolut position" + +#: coff-arm.c:2271 +#, c-format +msgid "" +"%s: ERROR: compiled as absolute position code, whereas target %s is position " +"independent" +msgstr "" +"%s: FEL: kompilerad som kod med absolut position, där målet %s istället är " +"positionsoberoende" + +#: coff-arm.c:2300 +#, fuzzy, c-format +msgid "Warning: %s supports interworking, whereas %s does not." +msgstr "Varning: %s stöder samverkande, medan %s däremot inte gör det" + +#: coff-arm.c:2303 +#, fuzzy, c-format +msgid "Warning: %s does not support interworking, whereas %s does." +msgstr "Varning: %s stöder inte samverkande, medan %s däremot gör det" + +#: coff-arm.c:2330 +#, c-format +msgid "private flags = %x:" +msgstr "privata flaggor = %x:" + +#: coff-arm.c:2338 elf32-arm.h:2408 +msgid " [floats passed in float registers]" +msgstr " [flyttal skickade i flyttalsregister]" + +#: coff-arm.c:2340 +msgid " [floats passed in integer registers]" +msgstr " [flyttal skickade i heltalsregister]" + +#: coff-arm.c:2343 elf32-arm.h:2411 +msgid " [position independent]" +msgstr " [positionsoberoende]" + +#: coff-arm.c:2345 +msgid " [absolute position]" +msgstr " [absolut position]" + +#: coff-arm.c:2349 +msgid " [interworking flag not initialised]" +msgstr " [samverkandeflagga är inte initierad]" + +#: coff-arm.c:2351 +msgid " [interworking supported]" +msgstr " [samverkan stöds]" + +#: coff-arm.c:2353 +msgid " [interworking not supported]" +msgstr " [samverkan stöds inte]" + +#: coff-arm.c:2401 elf32-arm.h:2114 +#, fuzzy, c-format +msgid "" +"Warning: Not setting interworking flag of %s since it has already been " +"specified as non-interworking" +msgstr "" +"Varning: Ställer inte in samverkansflaggan för %s, eftersom den redan har " +"angivits som inte samverkande" + +#: coff-arm.c:2405 elf32-arm.h:2118 +#, c-format +msgid "Warning: Clearing the interworking flag of %s due to outside request" +msgstr "" +"Varning: Stänger av samverkansflaggan för %s på grund av begäran utifrån" + +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "osäker anropskonvention för icke-COFF-symbol" + +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 elf32-mips.c:9954 +msgid "unsupported reloc type" +msgstr "omlokaliseringstypen stöds inte" + +#: coff-mips.c:875 elf32-mips.c:1997 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "GP-relativ omlokalisering då _gp inte var definierat" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "omlokalisering mot sektion som inte stöds" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" +msgstr "omlokalisering inte på jämn gräns" + +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: omlokaliseringstypen 0x%02x stöds inte" + +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "" +"%s: TOC-omlokalisering vid 0x%x till symbolen \"%s\" utan någon TOC-post" + +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: symbolen \"%s\" har okänd smclas %d" + +#: coff-tic54x.c:279 coff-tic80.c:449 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "Okänd omlokaliseringstyp 0x%x" + +#: coff-tic54x.c:390 coffcode.h:4868 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: varning: otillåtet symbolindex %ld i omlokaliseringarna" + +#: coff-w65.c:363 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "ignorerar omlokalisering %s\n" + +#: coffcode.h:1081 +#, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "%s (%s): Sektionsflaggan %s (0x%x) ignorerades" + +#: coffcode.h:2132 +#, c-format +msgid "Unrecognized TI COFF target id '0x%x'" +msgstr "Okänt TI COFF-målid \"0x%x\"" + +#: coffcode.h:4257 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" +msgstr "%s: varning: otillåtet symbolindex %ld i radnummer" + +#: coffcode.h:4271 +#, c-format +msgid "%s: warning: duplicate line number information for `%s'" +msgstr "%s: varning: dubbel radnummersinformation för \"%s\"" + +#: coffcode.h:4630 +#, c-format +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%s: Okänd lagringsklass %d för %s-symbolen \"%s\"" + +#: coffcode.h:4761 +#, c-format +msgid "warning: %s: local symbol `%s' has no section" +msgstr "varning: %s: lokala symbolen \"%s\" har ingen sektion" + +#: coffcode.h:4906 +#, c-format +msgid "%s: illegal relocation type %d at address 0x%lx" +msgstr "%s: otillåten omlokaliseringstyp %d på adress 0x%lx" + +#: coffgen.c:1661 +#, c-format +msgid "%s: bad string table size %lu" +msgstr "%s: felaktig strängtabellstorlek %lu" + +#: cofflink.c:536 elflink.h:1967 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgstr "Varning: typen på symbolen \"%s\" ändrades från %d till %d i %s" + +#: cofflink.c:2317 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" +msgstr "%s: omlokaliseringar i sektionen \"%s\", men den har inget innehåll" + +#: cofflink.c:2653 coffswap.h:889 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgstr "%s: %s: omlokalisering ger överspill: 0x%lx > 0xffff" + +#: cofflink.c:2662 coffswap.h:876 +#, c-format +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: varning: %s: radnummer ger överspill: 0x%lx > 0xffff" + +#: dwarf2.c:381 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Dwarf-fel: Kan inte hitta sektionen .debug_str." + +#: dwarf2.c:398 +#, c-format +msgid "" +"Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str " +"size (%u)." +msgstr "" +"Dwarf-fel: DW_FORM_strp-avståndet (%u) större än eller lika med storleken " +"på .debug_str (%u)." + +#: dwarf2.c:542 +msgid "Dwarf Error: Can't find .debug_abbrev section." +msgstr "Dwarf-fel: Kan inte hitta sektionen .debug_abbrev." + +#: dwarf2.c:559 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Abbrev offset (%u) greater than or equal to .debug_abbrev size " +"(%u)." +msgstr "" +"Dwarf-fel: Förkortningsavståndet (%u) större än eller lika med " +"förkortningsstorleken (%u)." + +#: dwarf2.c:756 +#, c-format +msgid "Dwarf Error: Invalid or unhandled FORM value: %d." +msgstr "Dwarf-fel: Ogiltig eller ohanterat FORM-värde: %d." + +#: dwarf2.c:843 +msgid "Dwarf Error: mangled line number section (bad file number)." +msgstr "Dwarf-fel: trasig radnummerssektion (felaktigt filnummer)." + +#: dwarf2.c:929 +msgid "Dwarf Error: Can't find .debug_line section." +msgstr "Dwarf-fel: Kan inte hitta sektionen .debug_line." + +#: dwarf2.c:952 +#, fuzzy, c-format +msgid "" +"Dwarf Error: Line offset (%u) greater than or equal to .debug_line size (%u)." +msgstr "" +"Dwarf-fel: Radavståndet (%u) större än eller lika med radstorleken (%u)." + +#: dwarf2.c:1143 +msgid "Dwarf Error: mangled line number section." +msgstr "Dwarf-fel: trasig radnummerssektion." + +#: dwarf2.c:1318 dwarf2.c:1529 +#, c-format +msgid "Dwarf Error: Could not find abbrev number %d." +msgstr "Dwarf-fel: Kunde inte hitta förkortningsnumret %d." + +#: dwarf2.c:1490 +#, c-format +msgid "" +"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 " +"information." +msgstr "" +"Dwarf-fel: hittade dwarf version \"%hu\", denna läsare hanterar endast " +"information från version 2." + +#: dwarf2.c:1497 +#, c-format +msgid "" +"Dwarf Error: found address size '%u', this reader can not handle sizes " +"greater than '%u'." +msgstr "" +"Dwarf-fel: hittade adresstorleken \"%u\", denna läsare kan inte hantera " +"storlekar större än \"%u\"." + +#: dwarf2.c:1520 +#, c-format +msgid "Dwarf Error: Bad abbrev number: %d." +msgstr "Dwarf-fel: Felaktigt förkortningsnummer: %d." + +#: ecoff.c:1328 +#, c-format +msgid "Unknown basic type %d" +msgstr "Okänd grundtyp %d" + +#: ecoff.c:1597 +#, c-format +msgid "" +"\n" +" End+1 symbol: %ld" +msgstr "" +"\n" +" Symbol slut+1: %ld" + +#: ecoff.c:1604 ecoff.c:1607 +#, c-format +msgid "" +"\n" +" First symbol: %ld" +msgstr "" +"\n" +" Första symbolen: %ld" + +#: ecoff.c:1619 +#, c-format +msgid "" +"\n" +" End+1 symbol: %-7ld Type: %s" +msgstr "" +"\n" +" Symbol slut+1: %-7ld Typ: %s" + +#: ecoff.c:1626 +#, c-format +msgid "" +"\n" +" Local symbol: %ld" +msgstr "" +"\n" +" Lokal symbol: %ld" + +#: ecoff.c:1634 +#, c-format +msgid "" +"\n" +" struct; End+1 symbol: %ld" +msgstr "" +"\n" +" struct; symbol slut+1: %ld" + +#: ecoff.c:1639 +#, c-format +msgid "" +"\n" +" union; End+1 symbol: %ld" +msgstr "" +"\n" +" union; symbol slut+1: %ld" + +#: ecoff.c:1644 +#, c-format +msgid "" +"\n" +" enum; End+1 symbol: %ld" +msgstr "" +"\n" +" enum; symbol slut+1: %ld" + +#: ecoff.c:1650 +#, c-format +msgid "" +"\n" +" Type: %s" +msgstr "" +"\n" +" Typ: %s" + +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 +#, c-format +msgid "" +"%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "" +"%s: varning: olöslig omlokalisering mot symbolen \"%s\" från sektionen %s" + +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1406 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1280 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf32-xstormy16.c:976 elf64-mmix.c:1164 +msgid "internal error: out of range error" +msgstr "internt fel: utanför intervallet" + +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1410 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1284 elf32-mips.c:7587 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf32-xstormy16.c:980 elf64-mips.c:4464 elf64-mmix.c:1168 +msgid "internal error: unsupported relocation error" +msgstr "internt fel: omlokaliseringen stöds inte" + +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1288 +msgid "internal error: dangerous error" +msgstr "internt fel: farligt fel" + +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1418 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1292 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf32-xstormy16.c:988 elf64-mmix.c:1176 +msgid "internal error: unknown error" +msgstr "internt fel: okänt fel" + +#: elf.c:343 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%s: ogiltigt strängavstånd %u >= %lu för sektionen \"%s\"" + +#: elf.c:448 +#, c-format +msgid "%s: invalid SHT_GROUP entry" +msgstr "%s: ogiltig SHT_GROUP-post" + +#: elf.c:529 +#, c-format +msgid "%s: no group info for section %s" +msgstr "%s: ingen gruppinformation för sektionen %s" + +#: elf.c:840 +msgid "" +"\n" +"Program Header:\n" +msgstr "" +"\n" +"Programhuvud:\n" + +#: elf.c:889 +msgid "" +"\n" +"Dynamic Section:\n" +msgstr "" +"\n" +"Dynamisk sektion:\n" + +#: elf.c:1018 +msgid "" +"\n" +"Version definitions:\n" +msgstr "" +"\n" +"Versionsdefinitioner:\n" + +#: elf.c:1041 +msgid "" +"\n" +"Version References:\n" +msgstr "" +"\n" +"Versionsreferenser:\n" + +#: elf.c:1046 +#, c-format +msgid " required from %s:\n" +msgstr " krävs från %s:\n" + +#: elf.c:1682 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "%s: ogiltig länk %lu för omlokaliseringssektion %s (index %u)" + +#: elf.c:3296 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "" +"%s: Inte tillräckligt med utrymme för programhuvuden (allokerade %u, behöver " +"%u)" + +#: elf.c:3400 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "" +"%s: Inte tillräckligt med utrymme för programhuvuden, försök att länka med -N" + +#: elf.c:3525 +#, c-format +msgid "" +"Error: First section in segment (%s) starts at 0x%x whereas the segment " +"starts at 0x%x" +msgstr "" +"Fel: Första sektionen i segmentet (%s) börjar vid 0x%x medan segmentet " +"börjar med 0x%x" + +#: elf.c:3811 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: varning: allokerad sektion \"%s\" inte i segment" + +#: elf.c:4142 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: symbolen \"%s\" krävs men finns inte med" + +#: elf.c:4395 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "%s: varning: Tomt inläsningsbart segment upptäckt\n" + +#: elf.c:5808 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "%s: omlokaliseringstypen %s stöds inte" + +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "" +"%s: Varning: Arm BLX-instruktion använder Arm-funktionen \"%s\" som mål." + +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "" +"%s: Varning: Thumb BLX-instruktionen använder thumb-funktionen \"%s\" som " +"mål." + +#: elf32-arm.h:1904 elf32-i386.c:1778 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%s(%s+0x%lx): %s omlokalisering mot SEC_MERGE-sektion" + +#: elf32-arm.h:1998 +#, c-format +msgid "" +"%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "" +"%s: varning: olöslig omlokalisering %d mot symbolen \"%s\" från sektionen %s" + +#: elf32-arm.h:2166 +#, fuzzy, c-format +msgid "" +"Warning: Clearing the interworking flag of %s because non-interworking code " +"in %s has been linked with it" +msgstr "" +"Varning: Stänger av samverkandeflaggan i %s eftersom icke-samverkande kod i %" +"s har länkats med det" + +#: elf32-arm.h:2261 +#, c-format +msgid "" +"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "" +"Fel: %s kompilerades för EABI version %d, medan %s kompilerades för version %" +"d" + +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "Fel: %s kompilerad för APCS-%d, medan %s är kompilerad för APCS-%d" + +#: elf32-arm.h:2287 +#, c-format +msgid "" +"Error: %s passes floats in FP registers, whereas %s passes them in integer " +"registers" +msgstr "" +"Fel: %s skickar flyttal i flyttalsregister, medan %s skickar dem i " +"heltalsregister" + +#: elf32-arm.h:2292 +#, c-format +msgid "" +"Error: %s passes floats in integer registers, whereas %s passes them in FP " +"registers" +msgstr "" +"Fel: %s skickar flyttal i heltalsregister, medan %s skickar dem i " +"flyttalsregister" + +# Tror det saknas "uses" här +#: elf32-arm.h:2303 +#, fuzzy, c-format +msgid "Error: %s uses VFP instructions, whereas %s uses FPA instructions" +msgstr "" +"Fel: %s använder VFP-instruktioner, medan %s använder FPA-instruktioner" + +# Tror det saknas "uses" här +#: elf32-arm.h:2308 +#, fuzzy, c-format +msgid "Error: %s uses FPA instructions, whereas %s uses VFP instructions" +msgstr "" +"Fel: %s använder FPA-instruktioner, medan %s använder VFP-instruktioner" + +#: elf32-arm.h:2328 +#, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" +msgstr "Fel: %s använder programvaruflyttal, medan %s använder hårdvaruflyttal" + +#: elf32-arm.h:2333 +#, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" +msgstr "Fel: %s använder hårdvaruflyttal, medan %s använder programvaruflyttal" + +#: elf32-arm.h:2348 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "Varning: %s stöder samverkande, medan %s däremot inte gör det" + +#: elf32-arm.h:2355 +#, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "Varning: %s stöder inte samverkande, medan %s däremot gör det" + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2386 elf32-cris.c:2991 elf32-m68k.c:410 elf32-mips.c:3242 +#, c-format +msgid "private flags = %lx:" +msgstr "privata flaggor = %lx:" + +#: elf32-arm.h:2395 +msgid " [interworking enabled]" +msgstr " [samverkande är aktiverat]" + +#: elf32-arm.h:2398 +msgid " [APCS-26]" +msgstr " [APCS-26]" + +#: elf32-arm.h:2400 +msgid " [APCS-32]" +msgstr " [APCS-32]" + +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr " [VFP-flyttalsformat]" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr " [FPA-flyttalsformat]" + +#: elf32-arm.h:2414 +msgid " [new ABI]" +msgstr " [nytt ABI]" + +#: elf32-arm.h:2417 +msgid " [old ABI]" +msgstr " [gammalt ABI]" + +#: elf32-arm.h:2420 +msgid " [software FP]" +msgstr " [programvaru-FP]" + +#: elf32-arm.h:2428 +msgid " [Version1 EABI]" +msgstr " [Version1 EABI]" + +#: elf32-arm.h:2431 elf32-arm.h:2442 +msgid " [sorted symbol table]" +msgstr " [sorterad symboltabell]" + +#: elf32-arm.h:2433 elf32-arm.h:2444 +msgid " [unsorted symbol table]" +msgstr " [osorterad symboltabell]" + +#: elf32-arm.h:2439 +msgid " [Version2 EABI]" +msgstr " [Version2 EABI]" + +#: elf32-arm.h:2447 +msgid " [dynamic symbols use segment index]" +msgstr " [dynamiska symboler använder segmentindex]" + +#: elf32-arm.h:2450 +msgid " [mapping symbols precede others]" +msgstr " [mappsymboler har företräde före andra]" + +#: elf32-arm.h:2457 +msgid " " +msgstr " " + +#: elf32-arm.h:2464 +msgid " [relocatable executable]" +msgstr " [omlokaliseringsbar körbar fil]" + +#: elf32-arm.h:2467 +msgid " [has entry point]" +msgstr " [har startpunkt]" + +#: elf32-arm.h:2472 +msgid "" +msgstr "" + +#: elf32-avr.c:843 elf32-cris.c:1414 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf32-xstormy16.c:984 +#: elf64-mmix.c:1172 +msgid "internal error: dangerous relocation" +msgstr "internt fel: farlig omlokalisering" + +#: elf32-cris.c:949 +#, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "%s: olöslig omlokalisering %s mot symbolen \"%s\" från sektionen %s" + +#: elf32-cris.c:1012 +#, c-format +msgid "" +"%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "" +"%s: Varken någon PLT eller GOT för omlokalisering %s mot symbolen \"%s\" " +"från sektionen %s" + +#: elf32-cris.c:1015 elf32-cris.c:1142 +msgid "[whose name is lost]" +msgstr "[vars namn tappats bort]" + +#: elf32-cris.c:1131 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against local symbol from %s " +"section" +msgstr "" +"%s: omlokalisering %s med icke-tomt addendum %d mot lokal symbol från " +"sektionen %s" + +#: elf32-cris.c:1138 +#, c-format +msgid "" +"%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "" +"%s: omlokalisering %s med icke-tomt addendum %d mot symbolen \"%s\" från " +"sektionen %s" + +#: elf32-cris.c:1156 +#, c-format +msgid "" +"%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "" +"%s: omlokaliseringen %s är inte tillåten för global symbol: \"%s\" från " +"sektionen %s" + +#: elf32-cris.c:1171 +#, fuzzy, c-format +msgid "%s: relocation %s in section %s with no GOT created" +msgstr "%s: omlokaliseringar i sektionen \"%s\", men den har inget innehåll" + +#: elf32-cris.c:1289 +#, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "%s: Intern inkonsistens; ingen omlokaliseringssektion %s" + +#: elf32-cris.c:2523 +#, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s, sektion %s:\n" +" omlokaliseringen %s bör inte användas i ett delat objekt; kompilera om med " +"-fPIC" + +#: elf32-cris.c:2994 +msgid " [symbols have a _ prefix]" +msgstr " [symboler har ett _-prefix]" + +#: elf32-cris.c:3033 +#, c-format +msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "" +"%s: använder symboler med _-prefix, men skriver fil med symboler utan prefix" + +#: elf32-cris.c:3034 +#, c-format +msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "" +"%s: använder symboler utan prefix, men skriver fil med symboler med _-prefix" + +#: elf32-gen.c:82 elf64-gen.c:82 +#, c-format +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "%s: Omlokalisering i allmän ELF (EM: %d)" + +#: elf32-hppa.c:646 +#, c-format +msgid "%s: cannot create stub entry %s" +msgstr "%s: kan inte skapa stubbstarten %s" + +#: elf32-hppa.c:937 elf32-hppa.c:3545 +#, c-format +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%s(%s+0x%lx): kan inte nå %s, kompilera om med -ffunction-sections" + +#: elf32-hppa.c:1312 +#, c-format +msgid "" +"%s: relocation %s can not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: omlokaliseringen %s kan inte användas då ett delat objekt skapas; " +"kompilera om med -fPIC" + +#: elf32-hppa.c:1332 +#, c-format +msgid "" +"%s: relocation %s should not be used when making a shared object; recompile " +"with -fPIC" +msgstr "" +"%s: omlokaliseringen %s bör inte användas då ett delat objekt skapas; " +"kompilera om med -fPIC" + +#: elf32-hppa.c:1525 +#, c-format +msgid "Could not find relocation section for %s" +msgstr "Kunde inte hitta omlokaliseringssektion för %s" + +#: elf32-hppa.c:2867 +#, c-format +msgid "%s: duplicate export stub %s" +msgstr "%s: dubbel exportstubb %s" + +#: elf32-hppa.c:3429 +#, c-format +msgid "%s(%s+0x%lx): fixing %s" +msgstr "%s(%s+0x%lx): fixar %s" + +#: elf32-hppa.c:4069 +#, c-format +msgid "%s(%s+0x%lx): cannot handle %s for %s" +msgstr "%s(%s+0x%lx): kan inte hantera %s för %s" + +#: elf32-hppa.c:4408 +msgid ".got section not immediately after .plt section" +msgstr ".got-sektionen följer inte omedelbart efter .plt-sektion" + +#: elf32-i386.c:298 +#, c-format +msgid "%s: invalid relocation type %d" +msgstr "%s: ogiltig omlokaliseringstyp %d" + +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 +#, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s: felaktigt symbolindex: %d" + +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2198 elf64-s390.c:759 +#, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: felaktig omlokaliseringssektionsnamn \"%s\"" + +#: elf32-i386.c:2069 elf32-s390.c:1951 elf64-ppc.c:4124 elf64-s390.c:1955 +#, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): olöslig omlokalisering mot symbolen \"%s\"" + +#: elf32-i386.c:2107 elf32-s390.c:1989 elf64-s390.c:1993 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): omlokalisering mot \"%s\": fel %d" + +#: elf32-m32r.c:923 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "SDA-omlokalisering då _SDA_BASE_ inte är definierat" + +#: elf32-ia64.c:3537 elf32-m32r.c:1007 elf32-ppc.c:2930 elf64-ia64.c:3537 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: okänd omlokaliseringstyp %d" + +#: elf32-m32r.c:1223 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%s: Målet (%s) för en %s-omlokalisering är i fel sektion (%s)" + +#: elf32-m32r.c:2000 +#, c-format +msgid "%s: Instruction set mismatch with previous modules" +msgstr "%s: Instruktionsuppsättning passar inte med tidigare moduler" + +#: elf32-m32r.c:2023 +#, c-format +msgid "private flags = %lx" +msgstr "privata flaggor = %lx" + +#: elf32-m32r.c:2028 +msgid ": m32r instructions" +msgstr ": m32r-instruktioner" + +#: elf32-m32r.c:2029 +msgid ": m32rx instructions" +msgstr ": m32rx-instruktioner" + +#: elf32-m68k.c:413 +msgid " [cpu32]" +msgstr " [cpu32]" + +#: elf32-mcore.c:353 elf32-mcore.c:479 +#, c-format +msgid "%s: Relocation %s (%d) is not currently supported.\n" +msgstr "%s: Omlokalisering %s (%d) stöds för närvarande inte.\n" + +#: elf32-mcore.c:438 +#, c-format +msgid "%s: Unknown relocation type %d\n" +msgstr "%s: Okänd omlokaliseringstyp %d\n" + +#: elf32-mips.c:2156 elf64-mips.c:1972 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "32-bitars gp-relativ omlokalisering förekom för en extern symbol" + +#: elf32-mips.c:2305 +#, c-format +msgid "Linking mips16 objects into %s format is not supported" +msgstr "Länkning av mips16-objekt till %s-format stöds inte" + +#: elf32-mips.c:3129 +#, c-format +msgid "%s: linking PIC files with non-PIC files" +msgstr "%s: länkar PIC-filer med icke-PIC-filer" + +#: elf32-mips.c:3139 +#, c-format +msgid "%s: linking abicalls files with non-abicalls files" +msgstr "%s: länkar abicalls-filer med icke-abicalls-filer" + +#: elf32-mips.c:3168 +#, c-format +msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +msgstr "%s: ISA (-mips%d) passar inte med tidigare moduler (-mips%d)" + +#: elf32-mips.c:3177 +#, c-format +msgid "%s: ISA mismatch (%d) with previous modules (%d)" +msgstr "%s: ISA (%d) passar inte med tidigare moduler (%d)" + +#: elf32-mips.c:3200 +#, c-format +msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgstr "%s: ABI passar inte: länkar %s-modul med tidigare %s-moduler" + +#: elf32-mips.c:3214 elf32-ppc.c:1470 elf64-ppc.c:1556 elf64-sparc.c:3027 +#, c-format +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%s: använder andra e_flags-fält (0x%lx) än tidigare moduler (0x%lx)" + +#: elf32-mips.c:3245 +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elf32-mips.c:3247 +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elf32-mips.c:3249 +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elf32-mips.c:3251 +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elf32-mips.c:3253 +msgid " [abi unknown]" +msgstr " [okänt abi]" + +#: elf32-mips.c:3255 +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elf32-mips.c:3257 +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elf32-mips.c:3259 +msgid " [no abi set]" +msgstr " [inget abi inställt]" + +#: elf32-mips.c:3262 +msgid " [mips1]" +msgstr " [mips1]" + +#: elf32-mips.c:3264 +msgid " [mips2]" +msgstr " [mips2]" + +#: elf32-mips.c:3266 +msgid " [mips3]" +msgstr " [mips3]" + +#: elf32-mips.c:3268 +msgid " [mips4]" +msgstr " [mips4]" + +#: elf32-mips.c:3270 +msgid " [mips5]" +msgstr " [mips5]" + +#: elf32-mips.c:3272 +msgid " [mips32]" +msgstr " [mips32]" + +#: elf32-mips.c:3274 +msgid " [mips64]" +msgstr " [mips64]" + +#: elf32-mips.c:3276 +msgid " [unknown ISA]" +msgstr " [okänd ISA]" + +#: elf32-mips.c:3279 +msgid " [32bitmode]" +msgstr " [32-bitarsläge]" + +#: elf32-mips.c:3281 +msgid " [not 32bitmode]" +msgstr " [inte 32-bitarsläge]" + +#: elf32-mips.c:4954 +msgid "static procedure (no name)" +msgstr "statisk procedur (inget namn)" + +#: elf32-mips.c:5572 elf64-mips.c:6694 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: ogiltigt sektionsnamn \"%s\"" + +#: elf32-mips.c:6139 elf64-mips.c:3150 +msgid "not enough GOT space for local GOT entries" +msgstr "inte tillräckligt med GOT-utrymme för lokala GOT-poster" + +#: elf32-mips.c:7250 elf64-mips.c:4203 +#, c-format +msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +msgstr "%s: %s+0x%lx: hoppa till stubbrutin som inte är jal" + +#: elf32-mips.c:8259 elf64-mips.c:5891 +#, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: Felaktig omlokalisering för sektion %s upptäckt" + +#: elf32-mips.c:8337 elf64-mips.c:5969 +#, c-format +msgid "%s: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: CALL16-omlokalisering vid 0x%lx är inte mot global symbol" + +#: elf32-ppc.c:1436 elf64-ppc.c:1521 +#, c-format +msgid "" +"%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "" +"%s: kompilerad med -mrelocatable och länkad med moduler som kompilerats " +"normalt" + +#: elf32-ppc.c:1444 elf64-ppc.c:1529 +#, c-format +msgid "" +"%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "" +"%s: kompilerad normalt och länkad med moduler som kompilerats med -" +"mrelocatable" + +#: elf32-ppc.c:1568 +#, c-format +msgid "%s: Unknown special linker type %d" +msgstr "%s: Okänd speciallänkartyp %d" + +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 +#, c-format +msgid "%s: relocation %s cannot be used when making a shared object" +msgstr "%s: omlokaliseringen %s kan inte användas då ett delat objekt skapas" + +#: elf32-ppc.c:3097 elf64-ppc.c:3716 +#, c-format +msgid "%s: unknown relocation type %d for symbol %s" +msgstr "%s: okänd omlokaliseringstyp %d för symbolen %s" + +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 +#, c-format +msgid "" +"%s: The target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%s: Målet (%s) för en %s-omlokalisering är i fel utdatasektion (%s)" + +#: elf32-ppc.c:3589 +#, c-format +msgid "%s: Relocation %s is not yet supported for symbol %s." +msgstr "%s: Omlokaliseringen %s stöds inte än för symbolen %s." + +#: elf32-sh.c:1101 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: varning: felaktigt R_SH_USES-avstånd" + +#: elf32-sh.c:1113 +#, c-format +msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: varning: R_SH_USES pekar till okänd instruktion 0x%x" + +#: elf32-sh.c:1130 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: varning: felaktigt R_SH_USES-inläsningsavstånd" + +#: elf32-sh.c:1145 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: varning: kunde inte hitta förväntad omlokalisering" + +#: elf32-sh.c:1202 +#, c-format +msgid "%s: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: varning: symbol i oväntad sektion" + +#: elf32-sh.c:1323 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: varning: kunde inte hitta förväntad COUNT-omlokalisering" + +#: elf32-sh.c:1332 +#, c-format +msgid "%s: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: varning: felaktigt antal" + +#: elf32-sh.c:1741 elf32-sh.c:2132 +#, c-format +msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: ödesdigert: omlokalisering ger överspill vid förenklingen" + +#: elf32-sh.c:3267 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "" +"%s: 0x%lx: ödesdigert: ojusterat grenmål för omlokalisering för " +"förenklingsstöd" + +#: elf32-sparc.c:1554 elf64-sparc.c:2280 +#, c-format +msgid "%s: probably compiled without -fPIC?" +msgstr "%s: troligen kompilerad utan -fPIC?" + +#: elf32-sparc.c:2007 +#, c-format +msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgstr "%s: kompilerat för ett 64-bitarssystem och målet är 32-bitars" + +#: elf32-sparc.c:2021 +#, c-format +msgid "%s: linking little endian files with big endian files" +msgstr "%s: länkar little endian-filer med big endian-filer" + +#: elf32-v850.c:682 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "Variabel \"%s\" kan inte befinna sig i flera små dataområden" + +#: elf32-v850.c:685 +#, c-format +msgid "" +"Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "" +"Variabel \"%s\" kan bara vara i ett av de små, tomma och pyttesmå " +"dataområdena" + +#: elf32-v850.c:688 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "" +"Variabel \"%s\" kan inte vara i både små och tomma dataområden samtidigt" + +#: elf32-v850.c:691 +#, c-format +msgid "" +"Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "" +"Variabel \"%s\" kan inte vara i både små och pyttesmå dataområden samtidigt" + +#: elf32-v850.c:694 +#, c-format +msgid "" +"Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "" +"Variabel \"%s\" kan inte vara i både tomma och pyttesmå dataområden samtidigt" + +#: elf32-v850.c:1072 +msgid "FAILED to find previous HI16 reloc\n" +msgstr "MISSLYCKADES med att hitta tidigare HI16-omlokalisering\n" + +#: elf32-v850.c:1703 +msgid "could not locate special linker symbol __gp" +msgstr "kunde inte lokalisera speciell länkarsymbol __gp" + +#: elf32-v850.c:1707 +msgid "could not locate special linker symbol __ep" +msgstr "kunde inte lokalisera speciell länkarsymbol __ep" + +#: elf32-v850.c:1711 +msgid "could not locate special linker symbol __ctbp" +msgstr "kunde inte lokalisera speciell länkarsymbol __ctbp" + +#: elf32-v850.c:1877 +#, c-format +msgid "%s: Architecture mismatch with previous modules" +msgstr "%s: Arkitekturen passar inte ihop med tidigare moduler" + +#: elf32-v850.c:1897 +#, c-format +msgid "private flags = %lx: " +msgstr "privata flaggor = %lx: " + +#: elf32-v850.c:1902 +msgid "v850 architecture" +msgstr "v850-arkitektur" + +#: elf32-v850.c:1903 +msgid "v850e architecture" +msgstr "v850e-arkitektur" + +#: elf32-v850.c:1904 +msgid "v850ea architecture" +msgstr "v850ea-arkitektur" + +#: elf32-ia64.c:2247 elf32-xstormy16.c:414 elf64-ia64.c:2247 +msgid "non-zero addend in @fptr reloc" +msgstr "icke-tomt addendum i @fptr-omlokalisering" + +#: elf64-alpha.c:858 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "GPDISP-omlokalisering hittade inga ldah- och lda-instruktioner" + +#: elf64-alpha.c:2934 +#, c-format +msgid "%s: .got subsegment exceeds 64K (size %d)" +msgstr "%s: .got-subsegment överskrider 64 kB (storlek %d)" + +#: elf64-alpha.c:3518 elf64-alpha.c:3530 +#, c-format +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "%s: gp-relativ omlokalisering mot dynamiska symbolen %s" + +#: elf64-hppa.c:2070 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "stubbpost för %s kan inte läsa in .plt, dp-avstånd = %ld" + +# Bör rapportera detta +# +# (_("%s: register relocation against non-register symbol: %s in %s"), +# bfd_get_filename (input_section->owner), +# symname == NULL || *symname == 0 ? _("(unknown)") : symname, +# bfd_get_section_name (symsec->owner, symsec)); +# +#: elf64-mmix.c:1271 +#, fuzzy, c-format +msgid "%s: register relocation against non-register symbol: (unknown) in %s" +msgstr "%s: registeromlokalisering mot icke-registersymbol: %s i %s" + +# Bör rapportera detta +# +# (_("%s: register relocation against non-register symbol: %s in %s"), +# bfd_get_filename (input_section->owner), +# symname == NULL || *symname == 0 ? _("(unknown)") : symname, +# bfd_get_section_name (symsec->owner, symsec)); +# +#: elf64-mmix.c:1276 +#, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%s: registeromlokalisering mot icke-registersymbol: %s i %s" + +#: elf64-mmix.c:1312 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "" +"%s: LOCAL-direktivet är endast giltigt med ett register eller absolutvärde" + +#: elf64-mmix.c:1340 +#, c-format +msgid "" +"%s: LOCAL directive: Register $%ld is not a local register. First global " +"register is $%ld." +msgstr "" +"%s: LOCAL-direktiv: Register $%ld är inte ett lokalt register. Första " +"globala registret är $%ld." + +#: elf64-mmix.c:1615 +#, c-format +msgid "" +"%s: Error: multiple definition of `%s'; start of %s is set in a earlier " +"linked file\n" +msgstr "" +"%s: Fel: flera definitioner av \"%s\"; början på %s är inställd i en " +"tidigare länkad fil\n" + +#: elf64-mmix.c:1674 +msgid "Register section has contents\n" +msgstr "Registersektion har innehåll\n" + +#: elf64-ppc.c:1484 libbfd.c:1436 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "%s: kompilerad för big endian-system och målet är little endian" + +#: elf64-ppc.c:1486 libbfd.c:1438 +#, c-format +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "%s: kompilerad för ett little endian-system och målet är big endian" + +#: elf64-ppc.c:3350 +#, fuzzy, c-format +msgid "linkage table error against `%s'" +msgstr "länktabell spiller över mot \"%s\"" + +#: elf64-ppc.c:3432 +msgid "stub section size doesn't match calculated size" +msgstr "stubbsektionsstorleken stämmer inte överens med beräknad storlek" + +#: elf64-ppc.c:4061 +#, c-format +msgid "%s: Relocation %s is not supported for symbol %s." +msgstr "%s: Omlokaliseringen %s stöds inte för symbolen %s." + +#: elf64-ppc.c:4105 +#, c-format +msgid "%s: error: relocation %s not a multiple of 4" +msgstr "%s: fel: omlokaliseringen %s är inte en multipel av 4" + +#: elf64-sparc.c:1277 +#, c-format +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: ohanterad omlokaliseringstyp %d" + +#: elf64-sparc.c:1314 +#, c-format +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%s: Endast register %%g[2367] kan deklareras med STT_REGISTER" + +#: elf64-sparc.c:1334 +#, fuzzy, c-format +msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s" +msgstr "Register %%g%d används inkompatibelt: %s i %s" + +#: elf64-sparc.c:1357 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s" +msgstr "Symbolen \"%s\" har olika typer: tidigare %s, REGISTER i %s" + +#: elf64-sparc.c:1404 +#, fuzzy, c-format +msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s" +msgstr "Symbolen \"%s\" har olika typer: tidigare %s, REGISTER i %s" + +#: elf64-sparc.c:3008 +#, c-format +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "%s: länkar UltraSPARC-specifik med HAL-specifik kod" + +#: elfcode.h:1218 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: versionsantal (%ld) stämmer inte med symbolantal (%ld)" + +#: elflink.c:434 +#, c-format +msgid "%s: Section %s is too large to add hole of %ld bytes" +msgstr "%s: Sektionen %s är för stor för att stoppa hål med %ld byte i" + +#: elflink.h:1113 +#, c-format +msgid "%s: warning: unexpected redefinition of `%s'" +msgstr "%s: varning: oväntad omdefinition av \"%s\"" + +#: elflink.h:1784 +#, c-format +msgid "%s: %s: invalid version %u (max %d)" +msgstr "%s: %s: ogiltig version %u (max %d)" + +#: elflink.h:1825 +#, c-format +msgid "%s: %s: invalid needed version %d" +msgstr "%s: %s: ogiltig krävd version %d" + +#: elflink.h:1945 +#, c-format +msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" +msgstr "Varning: storleken på symbolen \"%s\" ändrades från %lu till %lu i %s" + +#: elflink.h:4014 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "" +"varning: typen och storleken på dynamiska symbolen \"%s\" är inte definierade" + +#: elflink.h:4320 +#, c-format +msgid "%s: undefined versioned symbol name %s" +msgstr "%s: odefinierat symbolnamn med version %s" + +#: elflink.h:4544 elflink.h:4552 elflink.h:6203 elflink.h:7280 +msgid "Error: out of memory" +msgstr "Fel: slut på minne" + +#: elflink.h:4714 +msgid "Not enough memory to sort relocations" +msgstr "Inte tillräckligt med minne för att sortera omlokaliseringar" + +#: elflink.h:5980 +#, c-format +msgid "%s: could not find output section %s for input section %s" +msgstr "%s: kunde inte hitta utdatasektion %s för indatasektionen %s" + +#: elflink.h:6553 +msgid "warning: relocation against removed section; zeroing" +msgstr "varning: omlokalisering mot borttagen sektion; nollställer" + +#: elflink.h:6583 +msgid "warning: relocation against removed section" +msgstr "varning: omlokalisering mot borttagen sektion" + +#: elflink.h:6596 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "lokala symboler i bortkastade sektionen %s" + +#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "Utdatafilen kräver delade biblioteket \"%s\"\n" + +#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "Utdatafilen kräver delade biblioteket \"%s.so.%s\"\n" + +#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 +#: sparclinux.c:655 sparclinux.c:705 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "Symbolen %s är inte definierad för fixar\n" + +#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 +msgid "Warning: fixup count mismatch\n" +msgstr "Varning: antalet fixar stämmer inte\n" + +#: ieee.c:235 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: strängen är för lång (%d tecken, max 65535)" + +#: ieee.c:365 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: okänd symbol \"%s\" flaggor 0x%x" + +# Ett extra blanksteg i originalet här +#: ieee.c:877 +#, fuzzy, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" +msgstr "%s: inte implementerad ATI-post %u för symbolen %u" + +#: ieee.c:902 +#, c-format +msgid "%s: unexpected ATN type %d in external part" +msgstr "%s: oväntad ATN-typ %d i extern del" + +#: ieee.c:924 +#, c-format +msgid "%s: unexpected type after ATN" +msgstr "%s: oväntad typ efter ATN" + +#: ihex.c:258 +#, c-format +msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" +msgstr "%s:%d: oväntat tecken \"%s\" i hexadecimal Intel-fil\n" + +#: ihex.c:368 +#, c-format +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "" +"%s:%u: felaktig kontrollsumma i hexadecimal Intel-fil (förväntade %u, " +"hittade %u)" + +#: ihex.c:422 +#, c-format +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "" +"%s:%u: felaktig längd på post för utökad adress i hexadecimal Intel-fil" + +#: ihex.c:439 +#, c-format +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "%s:%u: felaktig längd på utökad startadress i hexadecimal Intel-fil" + +#: ihex.c:456 +#, c-format +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "" +"%s:%u: felaktig längd på post för utökad linjär adress i hexadecimal Intel-" +"fil" + +#: ihex.c:473 +#, c-format +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "" +"%s:%u: felaktig längd på post för utökad linjär startadress i hexadecimal " +"Intel-fil" + +#: ihex.c:490 +#, c-format +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s:%u: okänd ihex-typ %u i hexadecimal Intel-fil\n" + +#: ihex.c:610 +#, c-format +msgid "%s: internal error in ihex_read_section" +msgstr "%s: internt fel i ihex_read_section" + +#: ihex.c:645 +#, c-format +msgid "%s: bad section length in ihex_read_section" +msgstr "%s: felaktig sektionslängd i ihex_read_sektion" + +# Verkar vara stavfel i originalet här +#: ihex.c:863 +#, fuzzy, c-format +msgid "%s: address 0x%s out of range for Intel Hex file" +msgstr "%s: adressen 0x%s är utanför intervallet för hexadecimal Intel-fil" + +#: libbfd.c:492 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "mappar inte: data=%lx mappat=%d\n" + +#: libbfd.c:495 +msgid "not mapping: env var not set\n" +msgstr "mappar inte: miljövariabel är inte satt\n" + +#: libbfd.c:1467 +#, fuzzy, c-format +msgid "Deprecated %s called at %s line %d in %s\n" +msgstr " vid %s rad %d i %s\n" + +# Skumt! +#: libbfd.c:1470 +#, fuzzy, c-format +msgid "Deprecated %s called\n" +msgstr "Föråldrad %s anropad" + +#: linker.c:1849 +#, c-format +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "%s: indirekt symbol \"%s\" till \"%s\" är en slinga" + +#: linker.c:2745 +#, c-format +msgid "Attempt to do relocateable link with %s input and %s output" +msgstr "Försök att göra en omlokaliseringsbar länk med %s-indata och %s-utdata" + +#: merge.c:897 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "%s: åtkomst bortom slut på sammanslagen sektion (%ld + %ld)" + +#: mmo.c:460 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: Ingen kärna för att allokera sektionsnamn %s\n" + +#: mmo.c:537 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: Ingen kärna för att allokera en %d byte lång symbol\n" + +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "%s: ogiltig mmo-fil: initieringsvärde för $255 är inte \"Main\"\n" + +#: mmo.c:1336 +#, c-format +msgid "" +"%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name " +"starting with `%s'\n" +msgstr "" +"%s: bred teckensekvens som inte stöds 0x%02X 0x%02X efter symbolnamnet som " +"börjar med \"%s\"\n" + +#: mmo.c:1571 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: ogiltig mmo-fil: lopkod \"%d\" stöds inte\n" + +#: mmo.c:1581 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "%s: ogiltig mmo-fil: förväntade YZ = 1 fick YZ = %d för lop_quote\n" + +#: mmo.c:1617 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" +"%s: ogiltig mmo-fil: förväntade z = 1 eller z = 2, fick z = %d för lop_loc\n" + +#: mmo.c:1663 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "" +"%s: ogiltig mmo-fil: förväntade z = 1 eller z = 2, fick z = %d för lop_fixo\n" + +#: mmo.c:1702 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "%s: ogiltig mmo-fil: förväntade y = 0, fick y = %d för lop_fixrx\n" + +#: mmo.c:1711 +#, c-format +msgid "" +"%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" +"%s: ogiltig mmo-fil: förväntade z = 16 eller z = 24, fick z = %d för " +"lop_fixr\n" + +#: mmo.c:1734 +#, c-format +msgid "" +"%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d " +"for lop_fixrx\n" +msgstr "" +"%s: ogiltig mmo-fil: inledande byte i operandord måste vara 0 eller 1, fick %" +"d för lop_fixrx\n" + +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "%s: kan inte allokera filnamn för fil nummer %d, %d byte\n" + +#: mmo.c:1777 +#, c-format +msgid "" +"%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "" +"%s: ogiltig mmo-fil: fil nummer %d \"%s\", var redan angiven som \"%s\"\n" + +#: mmo.c:1790 +#, c-format +msgid "" +"%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" +"%s: ogiltig mmo-fil: filnamnet för nummer %d angavs inte innan användning\n" + +#: mmo.c:1896 +#, c-format +msgid "" +"%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" +"%s: ogiltig mmo-fil: fälten y och z i lop_stab är icke-tomma, y: %d, z: %d\n" + +#: mmo.c:1932 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "%s: ogiltig mmo-fil: lop_end är inte sista objektet i fil\n" + +#: mmo.c:1945 +#, c-format +msgid "" +"%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras " +"to the preceding lop_stab (%ld)\n" +msgstr "" +"%s: ogiltig mmo-fil: YZ i lop_end (%ld) är inte lika med antalet tetra till " +"den föregående lop_stab (%ld)\n" + +#: mmo.c:2610 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: ogiltig symboltabell: dublettsymbol \"%s\"\n" + +#: mmo.c:2898 +#, c-format +msgid "" +"%s: Bad symbol definition: `Main' set to %s rather than the start address %" +"s\n" +msgstr "" +"%s: Felaktig symboldefinition: \"Main\" är inställd till %s istället för " +"startadressen %s\n" + +#: mmo.c:2932 +#, c-format +msgid "" +"%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: " +"%d. Only `Main' will be emitted.\n" +msgstr "" +"%s: varning: symboltabellen är för stor för mmo, större än 65535 32-bitars " +"ord: %d. Endast \"Main\" kommer att skickas.\n" + +#: mmo.c:2977 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "%s: internt fel, symboltabellen ändrade storlek från %d till %d ord\n" + +#: mmo.c:3032 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: internt fel, interna registersektionen %s hade innehåll\n" + +#: mmo.c:3084 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: inga initierade register; sektionslängd 0\n" + +#: mmo.c:3090 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: för många initierade register; sektionslängd %ld\n" + +#: mmo.c:3095 +#, c-format +msgid "" +"%s: invalid start address for initialized registers of length %ld: 0x%lx%" +"08lx\n" +msgstr "" +"%s: ogiltig startadress för initierade register med längden %ld: 0x%lx%08lx\n" + +#: oasys.c:1036 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: kan inte representera sektionen \"%s\" i oasys" + +#: osf-core.c:132 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Ohanterad sektionstyp %d för OSF/1-minnesfil\n" + +#: pe-mips.c:658 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "%s: \"ld -r\" stöds inte med PE MIPS-objekt\n" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:794 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "%s: oimplementerat %s\n" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "%s: hopp för långt bort\n" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "%s: felaktigt par/reflo efter refhi\n" + +#. XXX code yet to be written. +#: peicode.h:785 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: Ohanterad importtyp; %x" + +#: peicode.h:790 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: Okänd importtyp; %x" + +#: peicode.h:804 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: Okänd importnamnstyp; %x" + +#: peicode.h:1162 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%s: Okänd maskintyp (0x%x) i Import Library Format-arkiv" + +#: peicode.h:1174 +#, c-format +msgid "" +"%s: Recognised but unhandled machine type (0x%x) in Import Library Format " +"archive" +msgstr "%s: Känd men ohanterad maskintyp (0x%x) i Import Library Format-arkiv" + +#: peicode.h:1191 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "%s: storleksfältet är noll i Import Library Format-huvud" + +#: peicode.h:1219 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: sträng inte nollterminerad i ILF-objektfil." + +#: ppcboot.c:416 +msgid "" +"\n" +"ppcboot header:\n" +msgstr "" +"\n" +"ppcboot-huvud:\n" + +#: ppcboot.c:417 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Startavstånd = 0x%.8lx (%ld)\n" + +#: ppcboot.c:418 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Längd = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Flaggfält = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Partitionsnamn = \"%s\"\n" + +#: ppcboot.c:446 +#, c-format +msgid "" +"\n" +"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "" +"\n" +"Start på partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:452 +#, c-format +msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "Slut på partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Sektor för partition[%d] = 0x%.8lx (%ld)\n" + +#: ppcboot.c:459 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Längd på partition[%d] = 0x%.8lx (%ld)\n" + +#: som.c:5402 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers är inte implementerat" + +#: srec.c:301 +#, c-format +msgid "%s:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: Oväntat tecken \"%s\" i S-postfil\n" + +#: syms.c:998 +msgid "Unsupported .stab relocation" +msgstr ".stab-omlokalisering som inte stöds" + +#: vms-gsd.c:356 +#, c-format +msgid "bfd_make_section (%s) failed" +msgstr "bfd_make_section (%s) misslyckades" + +#: vms-gsd.c:371 +#, c-format +msgid "bfd_set_section_flags (%s, %x) failed" +msgstr "bfd_set_section_flags (%s, %x) misslyckades" + +#: vms-gsd.c:407 +#, c-format +msgid "Size mismatch section %s=%lx, %s=%lx" +msgstr "Storleken passar inte på sektion %s=%lx, %s=%lx" + +#: vms-gsd.c:704 +#, c-format +msgid "unknown gsd/egsd subtype %d" +msgstr "okänd gsd/egsd-undertyp %d" + +#: vms-hdr.c:406 +msgid "Object module NOT error-free !\n" +msgstr "Objektmodulen INTE felfri!\n" + +#: vms-misc.c:543 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "Stacken ger överspill (%d) i _bfd_vms_push" + +#: vms-misc.c:561 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "Stacken ger underspill i _bfd_vms_pop" + +#: vms-misc.c:919 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted anropad med noll byte" + +#: vms-misc.c:924 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted called anropad med för många byte" + +#: vms-misc.c:1055 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "Symbolen %s ersatt med %s\n" + +#: vms-misc.c:1117 +#, c-format +msgid "failed to enter %s" +msgstr "misslyckades med att gå in i %s" + +#: vms-tir.c:81 +msgid "No Mem !" +msgstr "Inget minne!" + +#: vms-tir.c:362 +#, fuzzy, c-format +msgid "bad section index in %s" +msgstr "Felaktigt sektionsindex i ETIR_S_C_STA_PQ" + +#: vms-tir.c:375 +#, fuzzy, c-format +msgid "unsupported STA cmd %s" +msgstr "STA-kommando %d stöds inte" + +#: vms-tir.c:380 vms-tir.c:1240 +#, fuzzy, c-format +msgid "reserved STA cmd %d" +msgstr "Reserverat STA-kommando %d" + +#: vms-tir.c:491 vms-tir.c:514 +#, fuzzy, c-format +msgid "%s: no symbol \"%s\"" +msgstr "%s: ingen sådan symbol" + +#. unsigned shift +#. rotate +#. Redefine symbol to current location. +#. Define a literal. +#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829 +#: vms-tir.c:838 vms-tir.c:1563 +#, fuzzy, c-format +msgid "%s: not supported" +msgstr "stöder inte" + +#: vms-tir.c:586 vms-tir.c:1418 +#, fuzzy, c-format +msgid "%s: not implemented" +msgstr "%s: oimplementerat %s\n" + +#: vms-tir.c:590 vms-tir.c:1422 +#, fuzzy, c-format +msgid "reserved STO cmd %d" +msgstr "Reserverat STO-kommando %d" + +#: vms-tir.c:708 vms-tir.c:1568 +#, fuzzy, c-format +msgid "reserved OPR cmd %d" +msgstr "Reserverat OPR-kommando %d" + +#: vms-tir.c:776 vms-tir.c:1632 +#, fuzzy, c-format +msgid "reserved CTL cmd %d" +msgstr "Reserverat CTL-kommando %d" + +#. stack byte from image +#. arg: none. +#: vms-tir.c:1148 +#, fuzzy +msgid "stack-from-image not implemented" +msgstr "Stac-from-image är inte implementerat" + +#: vms-tir.c:1166 +#, fuzzy +msgid "stack-entry-mask not fully implemented" +msgstr "Stack-entry-mask är inte helt implementerat" + +#. compare procedure argument +#. arg: cs symbol name +#. by argument index +#. da argument descriptor +#. +#. compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. and stack TRUE (args match) or FALSE (args dont match) value. +#: vms-tir.c:1180 +msgid "PASSMECH not fully implemented" +msgstr "PASSMECH är inte helt implementerat" + +#: vms-tir.c:1199 +#, fuzzy +msgid "stack-local-symbol not fully implemented" +msgstr "Stack-local-symbol är inte helt implementerat" + +#: vms-tir.c:1212 +#, fuzzy +msgid "stack-literal not fully implemented" +msgstr "Stack-literal är inte helt implementerat" + +#: vms-tir.c:1233 +#, fuzzy +msgid "stack-local-symbol-entry-point-mask not fully implemented" +msgstr "Stack-local-symbol-entry-point-mask är inte helt implementerat" + +#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611 +#: vms-tir.c:1619 vms-tir.c:1627 +#, fuzzy, c-format +msgid "%s: not fully implemented" +msgstr "PASSMECH är inte helt implementerat" + +#: vms-tir.c:1684 +#, fuzzy, c-format +msgid "obj code %d not found" +msgstr "Objektkod %d kunde inte hittas" + +#: vms-tir.c:2019 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "SEC_RELOC utan omlokaliseringar i sektion %s" + +#: vms-tir.c:2307 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Ohanterad omlokalisering %s" + +#: xcofflink.c:1241 +#, c-format +msgid "%s: `%s' has line numbers but no enclosing section" +msgstr "%s: \"%s\" har radnummer men ingen inneslutande sektion" + +#: xcofflink.c:1294 +#, c-format +msgid "%s: class %d symbol `%s' has no aux entries" +msgstr "%s: klass %d-symbolen \"%s\" har inga yttre poster" + +#: xcofflink.c:1317 +#, c-format +msgid "%s: symbol `%s' has unrecognized csect type %d" +msgstr "%s: symbolen \"%s\" har okänd csect-typ %d" + +#: xcofflink.c:1329 +#, c-format +msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: felaktig XTY_ER-symbol \"%s\": klass %d scnum %d scnlen %d" + +#: xcofflink.c:1365 +#, c-format +msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: XMC_TC0-symbolen \"%s\" är klass %d scnlen %d" + +#: xcofflink.c:1517 +#, c-format +msgid "%s: csect `%s' not in enclosing section" +msgstr "%s: csect \"%s\" är inte i inneslutande sektion" + +#: xcofflink.c:1624 +#, c-format +msgid "%s: misplaced XTY_LD `%s'" +msgstr "%s: felaktigt placerat XTY_LD \"%s\"" + +#: xcofflink.c:1948 +#, c-format +msgid "%s: reloc %s:%d not in csect" +msgstr "%s: omlokaliseringen %s:%d är inte i csect" + +#: xcofflink.c:2083 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF delade objekt när inte XCOFF-utdata produceras" + +#: xcofflink.c:2104 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: dynamiskt objekt utan någon .loader-sektion" + +#: xcofflink.c:2749 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: ingen sådan symbol" + +#: xcofflink.c:2890 +msgid "error: undefined symbol __rtinit" +msgstr "fel: odefinierad symbol __rtinit" + +#: xcofflink.c:3458 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "varning: försök att exportera odefinierade symbolen \"%s\"" + +#: xcofflink.c:4452 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "" +"TOC ger överspill: 0x%lx > 0x10000; prova -mminimal-toc vid kompilering" + +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 +#, c-format +msgid "%s: loader reloc in unrecognized section `%s'" +msgstr "%s: inläsaromlokalisering i okända sektionen \"%s\"" + +#: xcofflink.c:5314 xcofflink.c:6128 +#, c-format +msgid "%s: `%s' in loader reloc but not loader sym" +msgstr "%s: \"%s\" i inläsaromlokalisering men inte inläsarsym" + +#: xcofflink.c:5329 +#, c-format +msgid "%s: loader reloc in read-only section %s" +msgstr "%s: inläsaromlokalisering i skrivskyddade sektionen %s" + +#: elf32-ia64.c:2189 elf64-ia64.c:2189 +msgid "@pltoff reloc against local symbol" +msgstr "@pltoff-omlokalisering mot lokal symbol" + +#: elf32-ia64.c:3413 elf64-ia64.c:3413 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: kort datasegment spillde över (0x%lx >= 0x400000)" + +#: elf32-ia64.c:3424 elf64-ia64.c:3424 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp täcker inte kort datasegment" + +#: elf32-ia64.c:3728 elf64-ia64.c:3728 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "%s: länkar icke-pic-kod i delat bibliotek" + +#: elf32-ia64.c:3761 elf64-ia64.c:3761 +#, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: @gprel-omlokalisering mot dynamiska symbolen %s" + +#: elf32-ia64.c:3900 elf64-ia64.c:3900 +#, c-format +msgid "%s: dynamic relocation against speculation fixup" +msgstr "%s: dynamisk omlokalisering utan spekulationsfixar" + +#: elf32-ia64.c:3908 elf64-ia64.c:3908 +#, c-format +msgid "%s: speculation fixup against undefined weak symbol" +msgstr "%s: spekulationsfix mot odefinierad svag symbol" + +#: elf32-ia64.c:4092 elf64-ia64.c:4092 +msgid "unsupported reloc" +msgstr "omlokaliseringen stöds inte" + +#: elf32-ia64.c:4372 elf64-ia64.c:4372 +#, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%s: länkar fånga-vid-NULL-dereferens med ickefångande filer" + +#: elf32-ia64.c:4381 elf64-ia64.c:4381 +#, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "%s: länkar big endian-filer med little endian-filer" + +#: elf32-ia64.c:4390 elf64-ia64.c:4390 +#, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "%s: länkar 64-bitarsfiler med 32-bitarsfiler" + +#: elf32-ia64.c:4399 elf64-ia64.c:4399 +#, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "%s: länkar konstant-gp-filer med icke-konstant-gp-filer" + +#: elf32-ia64.c:4409 elf64-ia64.c:4409 +#, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "%s: länkar auto-pic-filer med icke-auto-pic-filer" + +#: peigen.c:962 pepigen.c:962 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: radnummer ger överspill: 0x%lx > 0xffff" + +#: peigen.c:979 pepigen.c:979 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: omlokalisering ger överspill 1: 0x%lx > 0xffff" + +#: peigen.c:993 pepigen.c:993 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Exportkatalog [.edata (eller där vi hittade det)]" + +#: peigen.c:994 pepigen.c:994 +msgid "Import Directory [parts of .idata]" +msgstr "Importkatalog [delar av .idata]" + +#: peigen.c:995 pepigen.c:995 +msgid "Resource Directory [.rsrc]" +msgstr "Resurskatalog [.rsrc]" + +#: peigen.c:996 pepigen.c:996 +msgid "Exception Directory [.pdata]" +msgstr "Undantagskatalog [.pdata]" + +#: peigen.c:997 pepigen.c:997 +msgid "Security Directory" +msgstr "Säkerhetskatalog" + +#: peigen.c:998 pepigen.c:998 +msgid "Base Relocation Directory [.reloc]" +msgstr "Basomlokaliseringskatalog [.reloc]" + +#: peigen.c:999 pepigen.c:999 +msgid "Debug Directory" +msgstr "Felsökningskatalog" + +#: peigen.c:1000 pepigen.c:1000 +msgid "Description Directory" +msgstr "Beskrivningskatalog" + +#: peigen.c:1001 pepigen.c:1001 +msgid "Special Directory" +msgstr "Specialkatalog" + +#: peigen.c:1002 pepigen.c:1002 +msgid "Thread Storage Directory [.tls]" +msgstr "Trådlagringskatalog [.tls]" + +#: peigen.c:1003 pepigen.c:1003 +msgid "Load Configuration Directory" +msgstr "Inläsningskonfigurationskatalog" + +#: peigen.c:1004 pepigen.c:1004 +msgid "Bound Import Directory" +msgstr "Katalog över bundna importer" + +#: peigen.c:1005 pepigen.c:1005 +msgid "Import Address Table Directory" +msgstr "Importadresstabellkatalog" + +#: peigen.c:1006 pepigen.c:1006 +msgid "Delay Import Directory" +msgstr "Katalog över fördröjda importer" + +#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008 +msgid "Reserved" +msgstr "Reserverad" + +#: peigen.c:1071 pepigen.c:1071 +msgid "" +"\n" +"There is an import table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Det finns en importtabell, men sektionen som innehåller den kunde inte " +"hittas\n" + +#: peigen.c:1076 pepigen.c:1076 +#, c-format +msgid "" +"\n" +"There is an import table in %s at 0x%lx\n" +msgstr "" +"\n" +"Det finns en importtabell i %s på 0x%lx\n" + +#: peigen.c:1113 pepigen.c:1113 +#, c-format +msgid "" +"\n" +"Function descriptor located at the start address: %04lx\n" +msgstr "" +"\n" +"Funktionsidentifierare hittad på startadressen: %04lx\n" + +#: peigen.c:1116 pepigen.c:1116 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\tkodbas %08lx toc (inläsningsbar/verklig) %08lx/%08lx\n" + +#: peigen.c:1122 pepigen.c:1122 +msgid "" +"\n" +"No reldata section! Function descriptor not decoded.\n" +msgstr "" +"\n" +"Ingen reldata-sektion! Funktionsidentifierare avkodades inte.\n" + +#: peigen.c:1127 pepigen.c:1127 +#, c-format +msgid "" +"\n" +"The Import Tables (interpreted %s section contents)\n" +msgstr "" +"\n" +"Importtabellerna (tolkade innehåll i %s-sektion)\n" + +# Vad är thunk? +#: peigen.c:1130 pepigen.c:1130 +#, fuzzy +msgid "" +" vma: Hint Time Forward DLL First\n" +" Table Stamp Chain Name Thunk\n" +msgstr " tabell stämpel kedja namn thunk\n" + +#: peigen.c:1180 pepigen.c:1180 +#, c-format +msgid "" +"\n" +"\tDLL Name: %s\n" +msgstr "" +"\n" +"\tDLL-namn: %s\n" + +#: peigen.c:1184 peigen.c:1247 pepigen.c:1184 pepigen.c:1247 +msgid "\tvma: Hint/Ord Member-Name\n" +msgstr "\tvma: Tips/Vanligt medlemsnamn\n" + +#: peigen.c:1246 pepigen.c:1246 +msgid "\tThe Import Address Table (difference found)\n" +msgstr "\tImportadresstabellen (skillnad hittad)\n" + +#: peigen.c:1253 pepigen.c:1253 +msgid "\t>>> Ran out of IAT members!\n" +msgstr "\t>>> Slut på IAT-medlemmar!\n" + +#: peigen.c:1271 pepigen.c:1271 +msgid "\tThe Import Address Table is identical\n" +msgstr "\tImportadresstabellen är identisk\n" + +#: peigen.c:1343 pepigen.c:1343 +msgid "" +"\n" +"There is an export table, but the section containing it could not be found\n" +msgstr "" +"\n" +"Det finns en exporttabell, men sektionen som innehåller den kunde inte " +"hittas\n" + +#: peigen.c:1348 pepigen.c:1348 +#, c-format +msgid "" +"\n" +"There is an export table in %s at 0x%lx\n" +msgstr "" +"\n" +"Det finns en exporttabell i %s vid 0x%lx\n" + +#: peigen.c:1379 pepigen.c:1379 +#, c-format +msgid "" +"\n" +"The Export Tables (interpreted %s section contents)\n" +"\n" +msgstr "" +"\n" +"Exporttabellerna (tolkade innehåll i %s-sektion)\n" + +#: peigen.c:1383 pepigen.c:1383 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Exportflaggor \t\t\t%lx\n" + +#: peigen.c:1386 pepigen.c:1386 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "Tid-/Datumstämpel \t\t%lx\n" + +#: peigen.c:1389 pepigen.c:1389 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Övre/Undre \t\t\t%d/%d\n" + +#: peigen.c:1392 pepigen.c:1392 +msgid "Name \t\t\t\t" +msgstr "Namn \t\t\t\t" + +#: peigen.c:1398 pepigen.c:1398 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "Ordningsbas \t\t\t%ld\n" + +#: peigen.c:1401 pepigen.c:1401 +msgid "Number in:\n" +msgstr "Tal i:\n" + +#: peigen.c:1404 pepigen.c:1404 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\tExportadresstabell \t\t%08lx\n" + +#: peigen.c:1408 pepigen.c:1408 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\t[Namnpekare/Ordningstal]-tabell\t%08lx\n" + +#: peigen.c:1411 pepigen.c:1411 +msgid "Table Addresses\n" +msgstr "Tabelladresser\n" + +#: peigen.c:1414 pepigen.c:1414 +msgid "\tExport Address Table \t\t" +msgstr "\tExportadresstabell \t\t" + +#: peigen.c:1419 pepigen.c:1419 +msgid "\tName Pointer Table \t\t" +msgstr "\tNamnpekartabell \t\t" + +#: peigen.c:1424 pepigen.c:1424 +msgid "\tOrdinal Table \t\t\t" +msgstr "\tOrdningstalstabell \t\t\t" + +#: peigen.c:1439 pepigen.c:1439 +#, c-format +msgid "" +"\n" +"Export Address Table -- Ordinal Base %ld\n" +msgstr "" +"\n" +"Exportadresstabell -- Orningsbas %ld\n" + +#: peigen.c:1458 pepigen.c:1458 +msgid "Forwarder RVA" +msgstr "Vidarebefordrar-RVA" + +#: peigen.c:1469 pepigen.c:1469 +msgid "Export RVA" +msgstr "Export-RVA" + +#: peigen.c:1476 pepigen.c:1476 +msgid "" +"\n" +"[Ordinal/Name Pointer] Table\n" +msgstr "" +"\n" +"[Ordningstals-/Namnpekar-]tabell\n" + +#: peigen.c:1531 pepigen.c:1531 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "" +"Varning, storleken på .pdata-sektionen (%ld) är inte en multipel av %d\n" + +#: peigen.c:1535 pepigen.c:1535 +msgid "" +"\n" +"The Function Table (interpreted .pdata section contents)\n" +msgstr "" +"\n" +"Funktionstabellen (tolkade innehåll från .pdata-sektionen)\n" + +#: peigen.c:1538 pepigen.c:1538 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\tStartadress Slutadress Ospola information\n" + +# This is broken +# +# #ifdef COFF_WITH_pep +# fprintf (file, +# _(" vma:\t\t\tBegin Address End Address Unwind Info\n")); +# #else +# fprintf (file, +# _(" vma:\t\tBegin End EH EH PrologEnd Exception\n")); +# fprintf (file, +# _(" \t\tAddress Address Handler Data Address Mask\n")); +# +#: peigen.c:1540 pepigen.c:1540 +#, fuzzy +msgid "" +" vma:\t\tBegin End EH EH PrologEnd Exception\n" +" \t\tAddress Address Handler Data Address Mask\n" +msgstr " vma:\t\tStart- Slut- EH- EH- Prologslut- Undantags-\n" + +#: peigen.c:1610 pepigen.c:1610 +msgid " Register save millicode" +msgstr " Registerspara millikod" + +#: peigen.c:1613 pepigen.c:1613 +msgid " Register restore millicode" +msgstr " Registeråterställ millikod" + +#: peigen.c:1616 pepigen.c:1616 +msgid " Glue code sequence" +msgstr " Klisterkodsekvens" + +#: peigen.c:1668 pepigen.c:1668 +msgid "" +"\n" +"\n" +"PE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "" +"\n" +"\n" +"PE-filbasomlokaliseringar (tolkat innehåll i .reloc-sektionen)\n" + +#: peigen.c:1698 pepigen.c:1698 +#, c-format +msgid "" +"\n" +"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "" +"\n" +"Virtuell adress: %08lx Områdesstorlek %ld (0x%lx) Antal fixar %ld\n" + +#: peigen.c:1711 pepigen.c:1711 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\tomlokalisering %4d avstånd %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1751 pepigen.c:1751 +#, c-format +msgid "" +"\n" +"Characteristics 0x%x\n" +msgstr "" +"\n" +"Karakteristik 0x%x\n" + +# Ska vara blanksteg här tror jag +#~ msgid "BFD %sinternal error, aborting at %s line %d\n" +#~ msgstr "Internt BFD %s-fel, avbryter vid %s rad %d\n" + +#~ msgid "GP relative relocation when GP not defined" +#~ msgstr "GP-relativ omlokalisering då GP inte är definierad" + +#~ msgid "Warning: input file %s supports interworking, whereas %s does not." +#~ msgstr "" +#~ "Varning: indatafilen %s stöder samverkande, medan %s däremot inte gör det." + +#~ msgid "" +#~ "Warning: input file %s does not support interworking, whereas %s does." +#~ msgstr "" +#~ "Varning: indatafilen %s stöder inte samverkande, medan %s däremot gör det." + +#~ msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +#~ msgstr "AUX tagndx %ld ttlsiz 0x%lx radnummer %ld nästa %ld" + +#~ msgid "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x" +#~ "%.8lx%s\n" +#~ msgstr "" +#~ "elf_symbol_from_bfd_symbol 0x%.8lx, namn = %s, symbolnr = %d, flaggor = 0x" +#~ "%.8lx%s\n" + +#~ msgid "" +#~ "Warning: Not setting interwork flag of %s since it has already been " +#~ "specified as non-interworking" +#~ msgstr "" +#~ "Varning: Ställer inte in samverkandeflaggan för %s eftersom den redan har " +#~ "angivits som inte samverkande" + +#~ msgid "Warning: Clearing the interwork flag of %s due to outside request" +#~ msgstr "" +#~ "Varning: Stänger av samverkandeflaggan för %s på grund av utomstående " +#~ "begäran" + +#~ msgid "(unknown)" +#~ msgstr "(okänd)" + +# Skumt! +#~ msgid " previously %s in %s" +#~ msgstr " tidigare %s i %s" + +#~ msgid "Symbol `%s' has differing types: %s in %s" +#~ msgstr "Symbolen \"%s\" har olika typer: %s i %s" + +# Alla dessa känns onödiga, borde rapporteras +#~ msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_GBL: ingen symbol \"%s\"" + +#~ msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" +#~ msgstr "ETIR_S_C_STO_CA: ingen symbol \"%s\"" + +#~ msgid "ETIR_S_C_STO_RB/AB: Not supported" +#~ msgstr "ETIR_S_C_STO_RB/AB: Stöds inte" + +#~ msgid "ETIR_S_C_STO_LP_PSB: Not supported" +#~ msgstr "ETIR_S_C_STO_LP_PSB: Stöds inte" + +#~ msgid "ETIR_S_C_STO_HINT_GBL: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_GBL: inte implementerat" + +#~ msgid "ETIR_S_C_STO_HINT_PS: not implemented" +#~ msgstr "ETIR_S_C_STO_HINT_PS: inte implementerat" + +#~ msgid "ETIR_S_C_OPR_INSV: Not supported" +#~ msgstr "ETIR_S_C_OPR_INSV: Stöds inte" + +#~ msgid "ETIR_S_C_OPR_USH: Not supported" +#~ msgstr "ETIR_S_C_OPR_USH: Stöds inte" + +#~ msgid "ETIR_S_C_OPR_ROT: Not supported" +#~ msgstr "ETIR_S_C_OPR_ROT: Stöds inte" + +#~ msgid "ETIR_S_C_OPR_REDEF: Not supported" +#~ msgstr "ETIR_S_C_OPR_REDEF: Stöds inte" + +#~ msgid "ETIR_S_C_OPR_DFLIT: Not supported" +#~ msgstr "ETIR_S_C_OPR_DFLIT: Stöds inte" + +#~ msgid "ETIR_S_C_STC_LP: not supported" +#~ msgstr "ETIR_S_C_STC_LP: stöds inte" + +#~ msgid "ETIR_S_C_STC_GBL: not supported" +#~ msgstr "ETIR_S_C_STC_GBL: stöds inte" + +#~ msgid "ETIR_S_C_STC_GCA: not supported" +#~ msgstr "ETIR_S_C_STC_GCA: stöds inte" + +#~ msgid "ETIR_S_C_STC_PS: not supported" +#~ msgstr "ETIR_S_C_STC_PS: stöds inte" + +#~ msgid "Unimplemented STO cmd %d" +#~ msgstr "Oimplementerat STO-kommando %d" + +#~ msgid "TIR_S_C_OPR_ASH incomplete" +#~ msgstr "TIR_S_C_OPR_ASH ofullständigt" + +#~ msgid "TIR_S_C_OPR_USH incomplete" +#~ msgstr "TIR_S_C_OPR_USH ofullständigt" + +#~ msgid "TIR_S_C_OPR_ROT incomplete" +#~ msgstr "TIR_S_C_OPR_ROT ofullständigt" + +#~ msgid "TIR_S_C_OPR_REDEF not supported" +#~ msgstr "TIR_S_C_OPR_REDEF stöds inte" + +#~ msgid "TIR_S_C_OPR_DFLIT not supported" +#~ msgstr "TIR_S_C_OPR_DFLIT stöds inte" + +#~ msgid "TIR_S_C_CTL_DFLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_DFLOC är inte fullständigt implementerat" + +#~ msgid "TIR_S_C_CTL_STLOC not fully implemented" +#~ msgstr "TIR_S_C_CTL_STLOC är inte fullständigt implementerat" + +#~ msgid "TIR_S_C_CTL_STKDL not fully implemented" +#~ msgstr "TIR_S_C_CTL_STKDL är inte fulständigt implementerat" + +# This is broken +# +# fprintf (file, +# _("\nThe Import Tables (interpreted %s section contents)\n"), +# section->name); +# fprintf (file, +# _(" vma: Hint Time Forward DLL First\n")); +# fprintf (file, +# _(" Table Stamp Chain Name Thunk\n")); +# +#~ msgid " vma: Hint Time Forward DLL First\n" +#~ msgstr " vma: Tips- Tids- V.bef.- DLL- Första\n" + +#~ msgid " \t\tAddress Address Handler Data Address Mask\n" +#~ msgstr " \t\tadress adress hanterare data adress mask\n" + +#~ msgid "float" +#~ msgstr "flyttal" + +#~ msgid "integer" +#~ msgstr "heltal" + +#~ msgid "soft" +#~ msgstr "mjuk" + +#~ msgid "hard" +#~ msgstr "hård" + +# _bfd_error_handler (_("# Warning: %s %s interworking, whereas %s %s"), +# bfd_get_filename (ibfd), +# in_flags & EF_INTERWORK ? _("supports") : _("does not support"), +# bfd_get_filename (obfd), +# out_flags & EF_INTERWORK ? _("does not") : _("does")); +# +# This is broken +# +# Don't split a sentence like this, use multiple full messages instead +# +#~ msgid "Warning: %s %s interworking, whereas %s %s" +#~ msgstr "Varning: %s %s samverkande, medan %s %s" + +#~ msgid "supports" +#~ msgstr "stöder" + +#~ msgid "does not" +#~ msgstr "inte gör det" + +#~ msgid "does" +#~ msgstr "gör det" + +#~ msgid "%s(%s+0x%lx): cannot find stub entry %s" +#~ msgstr "%s(%s+0x%lx): kan inte hitta stubbstarten %s" + +#~ msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections" +#~ msgstr "" +#~ "%s(%s+0x%lx): kan inte omlokalisera %s, kompilera om med -ffunction-" +#~ "sections" + +#~ msgid "" +#~ "creating section symbol, name = %s, value = 0x%.8lx, index = %d, section " +#~ "= 0x%.8lx\n" +#~ msgstr "" +#~ "skapar sektionssymbol, namn = %s, värde = 0x%.8lx, index = %d, sektion = " +#~ "0x%.8lx\n" + +# Hmm +#~ msgid " whereas segment starts at 0x%x" +#~ msgstr " där segmentet börjar vid 0x%x" diff -uprN binutils-2.11.92.0.12.3/bfd/po/tr.po binutils-2.11.93.0.2/bfd/po/tr.po --- binutils-2.11.92.0.12.3/bfd/po/tr.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/bfd/po/tr.po Thu Feb 7 10:21:03 2002 @@ -0,0 +1,2553 @@ +# BFD Turkish Translation. +# Copyright (C) 2001 Free Software Foundation, Inc. +# Deniz Akkus Kanca , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: bfd 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 12:55+0000\n" +"PO-Revision-Date: 2002-01-24 13:11EET\n" +"Last-Translator: Deniz Akkus Kanca \n" +"Language-Team: Turkish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-9\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 0.9.5\n" + +#: aout-adobe.c:196 +#, c-format +msgid "%s: Unknown section type in a.out.adobe file: %x\n" +msgstr "%s: a.out.adobe dosyasýnda bilinmeyen bölüm türü: %x\n" + +#: aout-cris.c:208 +#, c-format +msgid "%s: Invalid relocation type exported: %d" +msgstr "%s: Geçersiz yer deðiþtirme türü ihraç edilmiþ: %d" + +#: aout-cris.c:252 +#, c-format +msgid "%s: Invalid relocation type imported: %d" +msgstr "%s: Geçersiz yer deðiþtirme türü ithal edilmiþ: %d" + +#: aout-cris.c:263 +#, c-format +msgid "%s: Bad relocation record imported: %d" +msgstr "%s: Geçersiz yer deðiþtirme kaydý ithal edilmiþ: %d" + +#: aoutx.h:1282 aoutx.h:1699 +#, c-format +msgid "%s: can not represent section `%s' in a.out object file format" +msgstr "%s: `%s' bölümü a.out nesne dosya biçeminde gösterilemez" + +#: aoutx.h:1669 +#, c-format +msgid "%s: can not represent section for symbol `%s' in a.out object file format" +msgstr "%s: `%s' sembol bölümü a.out nesne dosyasýnda gösterilemez" + +#: aoutx.h:1671 +msgid "*unknown*" +msgstr "*bilinmeyen*" + +#: aoutx.h:3735 +#, c-format +msgid "%s: relocateable link from %s to %s not supported" +msgstr "%s: %s'dan %s'ya yeri deðiþtirilebilen bað desteklenmiyor" + +#: archive.c:1826 +msgid "Warning: writing archive was slow: rewriting timestamp\n" +msgstr "Uyarý: arþiv yazma iþlemi yavaþ: zaman damgasý yeniden yazýlýyor\n" + +#: archive.c:2093 +msgid "Reading archive file mod timestamp" +msgstr "Arþiv dosyasý deðiþim zaman damgasý okunuyor" + +#. FIXME: bfd can't call perror. +#: archive.c:2120 +msgid "Writing updated armap timestamp" +msgstr "Güncellenmiþ armap zaman damgasý yazýlýyor" + +#: bfd.c:281 +msgid "No error" +msgstr "Hata yok" + +#: bfd.c:282 +msgid "System call error" +msgstr "Sistem çaðrý hatasý" + +#: bfd.c:283 +msgid "Invalid bfd target" +msgstr "Geçersiz bfd hedefi" + +#: bfd.c:284 +msgid "File in wrong format" +msgstr "Dosya yanlýþ biçemde" + +#: bfd.c:285 +msgid "Archive object file in wrong format" +msgstr "Arþiv nesne dosyasý yanlýþ biçemde" + +#: bfd.c:286 +msgid "Invalid operation" +msgstr "Geçersiz iþlem" + +#: bfd.c:287 +msgid "Memory exhausted" +msgstr "Bellek tükendi" + +#: bfd.c:288 +msgid "No symbols" +msgstr "Sembol yok" + +#: bfd.c:289 +msgid "Archive has no index; run ranlib to add one" +msgstr "Arþivin indeksi yok; ranlib çalýþtýrarak indeks ekleyin" + +#: bfd.c:290 +msgid "No more archived files" +msgstr "Baþka arþivlenmiþ dosya yok" + +#: bfd.c:291 +msgid "Malformed archive" +msgstr "Bozuk arþiv" + +#: bfd.c:292 +msgid "File format not recognized" +msgstr "Dosya biçemi tanýnmýyor" + +#: bfd.c:293 +msgid "File format is ambiguous" +msgstr "Dosya biçemi belirsiz" + +#: bfd.c:294 +msgid "Section has no contents" +msgstr "Bölümde içerik yok" + +#: bfd.c:295 +msgid "Nonrepresentable section on output" +msgstr "Çýktýda gösterilemeyen bölüm" + +#: bfd.c:296 +msgid "Symbol needs debug section which does not exist" +msgstr "Sembol, olmayan hata ayýklama bölümünü istiyor" + +#: bfd.c:297 +msgid "Bad value" +msgstr "Geçersiz deðer" + +#: bfd.c:298 +msgid "File truncated" +msgstr "Dosya budandý" + +#: bfd.c:299 +msgid "File too big" +msgstr "Dosya fazla büyük" + +#: bfd.c:300 +msgid "#" +msgstr "#" + +#: bfd.c:707 +#, c-format +msgid "BFD %s assertion fail %s:%d" +msgstr "BFD %s, olumlama baþarýsýz %s:%d" + +#: bfd.c:726 +#, c-format +msgid "BFD %s internal error, aborting at %s line %d in %s\n" +msgstr "BFD %s iç hatasý, %s'da, %d satýrý, %s içerisinde iþlem durduruldu\n" + +#: bfd.c:730 +#, c-format +msgid "BFD %sinternal error, aborting at %s line %d\n" +msgstr "BFD %s iç hatasý, %s, %d satýrýnda iþlem durduruldu\n" + +#: bfd.c:732 +msgid "Please report this bug.\n" +msgstr "Lütfen bu hatayý bildirin.\n" + +#: binary.c:306 +#, c-format +msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx." +msgstr "Uyarý: `%s' bölümü çok büyük (negatif) dosya göreli konumu 0x%lx'e yazýlýyor." + +#: coff-a29k.c:119 +msgid "Missing IHCONST" +msgstr "IHCONST yok" + +#: coff-a29k.c:180 +msgid "Missing IHIHALF" +msgstr "IHIHALF yok" + +#: coff-a29k.c:212 +msgid "Unrecognized reloc" +msgstr "Tanýnmayan yer deðiþtirme" + +#: coff-a29k.c:408 +msgid "missing IHCONST reloc" +msgstr "eksik IHCONST yer deðiþtirmesi" + +#: coff-a29k.c:498 +msgid "missing IHIHALF reloc" +msgstr "eksik IHIHALF yer deðiþtirmesi" + +#: coff-alpha.c:881 coff-alpha.c:918 +msgid "GP relative relocation used when GP not defined" +msgstr "GP tanýmlanmamýþken GP göreli yer deðiþtirmesi kullanýlmýþ" + +#: coff-alpha.c:1485 +msgid "using multiple gp values" +msgstr "birden fazla gp deðeri kullanýlýyor" + +#: coff-alpha.c:1989 coff-mips.c:1433 +msgid "GP relative relocation when GP not defined" +msgstr "GP tanýmlanmamýþken GP göreli yer deðiþtirmesi" + +#: coff-arm.c:1051 elf32-arm.h:285 +#, c-format +msgid "%s: unable to find THUMB glue '%s' for `%s'" +msgstr "%1$s: `%3$s' için THUMB birleþtiricisi '%2$s' bulunamadý " + +#: coff-arm.c:1080 elf32-arm.h:320 +#, c-format +msgid "%s: unable to find ARM glue '%s' for `%s'" +msgstr "%1$s: `%3$s' için ARM birleþtiricisi '%2$s' bulunamadý" + +#: coff-arm.c:1375 coff-arm.c:1470 elf32-arm.h:886 elf32-arm.h:990 +#, c-format +msgid "%s(%s): warning: interworking not enabled." +msgstr "%s(%s): uyarý: beraber çalýþma kipi etkin deðil." + +#: coff-arm.c:1379 elf32-arm.h:993 +#, c-format +msgid " first occurrence: %s: arm call to thumb" +msgstr " ilk ortaya çýkýþ: %s: thumb'a arm'dan çaðrý" + +#: coff-arm.c:1474 elf32-arm.h:889 +#, c-format +msgid " first occurrence: %s: thumb call to arm" +msgstr " ilk ortaya çýkýþ: %s: arm'a thumb'dan çaðrý" + +#: coff-arm.c:1477 +msgid " consider relinking with --support-old-code enabled" +msgstr " --support-old-code seçeneði ile yeniden baðlamayý deneyin" + +#: coff-arm.c:1767 coff-tic80.c:686 cofflink.c:3017 +#, c-format +msgid "%s: bad reloc address 0x%lx in section `%s'" +msgstr "%1$s: `%3$s' bölümünde geçersiz yer deðiþtirme adresi 0x%2$lx" + +#: coff-arm.c:2107 +#, c-format +msgid "%s: illegal symbol index in reloc: %d" +msgstr "%s: yer deðiþtirmede geçersiz sembol indeksi: %d" + +#: coff-arm.c:2235 +#, c-format +msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d" +msgstr "%s: HATA: APCS-%d için derlenmiþ fakat hedef %s APCS-%d kullanýyor" + +#: coff-arm.c:2250 +#, c-format +msgid "%s: ERROR: passes floats in float registers whereas target %s uses integer registers" +msgstr "%s: HATA: kayan sayýlarý kayan yazmaçlarda geçiriyor fakat hedef %s tamsayý yazmaç kullanýyor" + +#: coff-arm.c:2253 +#, c-format +msgid "%s: ERROR: passes floats in integer registers whereas target %s uses float registers" +msgstr "%s: HATA: kayan sayýlarý tamsayý yazmaçlarda geçiriyor fakat hedef %s kayan yazmaç kullanýyor" + +#: coff-arm.c:2268 +#, c-format +msgid "%s: ERROR: compiled as position independent code, whereas target %s is absolute position" +msgstr "%s: HATA: yerden baðýmsýz kod olarak derlendi, fakat hedef %s yere baðýmlý" + +#: coff-arm.c:2271 +#, c-format +msgid "%s: ERROR: compiled as absolute position code, whereas target %s is position independent" +msgstr "%s: HATA: yere baðýmlý kod olarak derlendi, fakat hedef %s yerden baðýmsýz" + +#: coff-arm.c:2300 +#, c-format +msgid "Warning: input file %s supports interworking, whereas %s does not." +msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý destekliyor, fakat %s desteklemiyor." + +#: coff-arm.c:2303 +#, c-format +msgid "Warning: input file %s does not support interworking, whereas %s does." +msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý desteklemiyor, fakat %s destekliyor." + +#: coff-arm.c:2330 +#, c-format +msgid "private flags = %x:" +msgstr "özel bayraklar = %x:" + +#: coff-arm.c:2338 elf32-arm.h:2408 +msgid " [floats passed in float registers]" +msgstr " [kayan sayýlar kayan yazmaçlarda geçirildi]" + +#: coff-arm.c:2340 +msgid " [floats passed in integer registers]" +msgstr " [kayan sayýlar tamsayý yazmaçlarda geçirildi]" + +#: coff-arm.c:2343 elf32-arm.h:2411 +msgid " [position independent]" +msgstr " [yerden baðýmsýz]" + +#: coff-arm.c:2345 +msgid " [absolute position]" +msgstr " [yere baðýmlý]" + +#: coff-arm.c:2349 +msgid " [interworking flag not initialised]" +msgstr " [beraber çalýþma bayraðýna öndeðer atanmamýþ]" + +#: coff-arm.c:2351 +msgid " [interworking supported]" +msgstr " [beraber çalýþma destekleniyor]" + +#: coff-arm.c:2353 +msgid " [interworking not supported]" +msgstr " [beraber çalýþma desteklenmiyor]" + +#: coff-arm.c:2401 +#, c-format +msgid "Warning: Not setting interworking flag of %s, since it has already been specified as non-interworking" +msgstr "Uyarý: %s beraber çalýþma bayraðý atanmadý, çünkü beraber çalýþma olmayacaðý önceden belirtilmiþ" + +#: coff-arm.c:2405 +#, c-format +msgid "Warning: Clearing the interworking flag of %s due to outside request" +msgstr "Uyarý: %s beraber çalýþma bayraðý dýþ istek üzerine temizlendi" + +#: coff-i960.c:136 coff-i960.c:485 +msgid "uncertain calling convention for non-COFF symbol" +msgstr "COFF olmayan sembol için belirsiz çaðrý davranýþý" + +#: coff-m68k.c:481 coff-mips.c:2431 elf32-m68k.c:2212 +msgid "unsupported reloc type" +msgstr "desteklenmeyen yer deðiþtirme türü" + +#: coff-mips.c:875 elf32-mips.c:1987 elf64-mips.c:1739 +msgid "GP relative relocation when _gp not defined" +msgstr "_gp tanýmsýz iken GP göreli yer deðiþtirmesi" + +#. No other sections should appear in -membedded-pic +#. code. +#: coff-mips.c:2468 +msgid "reloc against unsupported section" +msgstr "desteklenmeyen bölümde yer deðiþtirme" + +#: coff-mips.c:2476 +msgid "reloc not properly aligned" +msgstr "yer deðiþtirme doðru hizalanmamýþ" + +#: coff-rs6000.c:2710 coff64-rs6000.c:1164 +#, c-format +msgid "%s: unsupported relocation type 0x%02x" +msgstr "%s: desteklenmeyen yükleyici yerdeðiþimi 0x%02x" + +#: coff-rs6000.c:2756 coff64-rs6000.c:1210 +#, c-format +msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry" +msgstr "%s: 0x%x'da TOC girdisi olmayan `%s' sembolüne TOC yerdeðiþimi" + +#: coff-rs6000.c:3006 coff64-rs6000.c:2060 +#, c-format +msgid "%s: symbol `%s' has unrecognized smclas %d" +msgstr "%s: `%s' sembolünde bilinmeyen %d var" + +#: coff-tic54x.c:279 coff-tic80.c:449 +#, c-format +msgid "Unrecognized reloc type 0x%x" +msgstr "Bilinmeyen yer deðiþtirme türü 0x%x" + +#: coff-tic54x.c:390 coffcode.h:4847 +#, c-format +msgid "%s: warning: illegal symbol index %ld in relocs" +msgstr "%s: uyarý: yer deðiþtirmelerde geçersiz sembol indeksi %ld" + +#: coff-w65.c:363 +#, c-format +msgid "ignoring reloc %s\n" +msgstr "yer deðiþtirme %s yoksayýldý\n" + +#: coffcode.h:1081 +#, c-format +msgid "%s (%s): Section flag %s (0x%x) ignored" +msgstr "%s (%s): Bölüm bayraðý %s (0x%x) yoksayýldý" + +#: coffcode.h:2125 +#, c-format +msgid "Unrecognized TI COFF target id '0x%x'" +msgstr "Tanýnmayan TI COFF hedef kimliði '0x%x'" + +#: coffcode.h:4236 +#, c-format +msgid "%s: warning: illegal symbol index %ld in line numbers" +msgstr "%s: uyarý: satýr numaralarýnda geçersiz sembol indeksi %ld" + +#: coffcode.h:4250 +#, c-format +msgid "%s: warning: duplicate line number information for `%s'" +msgstr "%s: uyarý: `%s' için tekrarlanmýþ satýr numarasý bilgisi" + +#: coffcode.h:4609 +#, c-format +msgid "%s: Unrecognized storage class %d for %s symbol `%s'" +msgstr "%1$s: %3$s sembolü `%4$s' için bilinmeyen saklama sýnýfý %2$d" + +#: coffcode.h:4740 +#, c-format +msgid "warning: %s: local symbol `%s' has no section" +msgstr "uyarý: %s: `%s' yerel sembolünün bölümü yok" + +#: coffcode.h:4885 +#, c-format +msgid "%s: illegal relocation type %d at address 0x%lx" +msgstr "%1$s: 0x%3$lx adresinde geçersiz yer deðiþtirme türü %2$d" + +#: coffgen.c:1661 +#, c-format +msgid "%s: bad string table size %lu" +msgstr "%s: geçersiz dizge tablo boyu %lu" + +#: coffgen.c:2138 +#, c-format +msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld" +msgstr "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld sonraki %ld" + +#: cofflink.c:536 elflink.h:1967 +#, c-format +msgid "Warning: type of symbol `%s' changed from %d to %d in %s" +msgstr "Uyarý: %4$s içerisinde `%1$s' sembolünün türü %2$d'den %3$d'e deðiþtirildi" + +#: cofflink.c:2317 +#, c-format +msgid "%s: relocs in section `%s', but it has no contents" +msgstr "%s: `%s' bölümünde yer deðiþtirmeler mevcut, fakat içi boþ" + +#: cofflink.c:2653 coffswap.h:889 +#, c-format +msgid "%s: %s: reloc overflow: 0x%lx > 0xffff" +msgstr "%s: %s: yer deðiþtirme taþmasý: 0x%lx > 0xffff" + +#: cofflink.c:2662 coffswap.h:876 +#, c-format +msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: uyarý: %s: satýr numarasý taþmasý: 0x%lx > 0xffff" + +#: dwarf2.c:381 +msgid "Dwarf Error: Can't find .debug_str section." +msgstr "Dwarf Hatasý: .debug_str bölümü bulunamadý." + +#: dwarf2.c:398 +#, c-format +msgid "Dwarf Error: DW_FORM_strp offset (%u) greater than or equal to .debug_str size (%u)." +msgstr "" +"Dwarf Hatasý: DW_FORM_strp göreli konumu (%u) .debug_str boyutundan (%u) \n" +" daha büyük veya eþit." + +#: dwarf2.c:542 +msgid "Dwarf Error: Can't find .debug_abbrev section." +msgstr "Dwarf Hatasý: .debug_abbrev bölümü bulunamadý." + +#: dwarf2.c:559 +#, c-format +msgid "Dwarf Error: Abbrev offset (%u) greater than or equal to abbrev size (%u)." +msgstr "" +"Dwarf Hatasý: Kýsaltma göreli konumu (%u) kýsaltma boyutundan (%u) \n" +" daha büyük veya eþit." + +#: dwarf2.c:756 +#, c-format +msgid "Dwarf Error: Invalid or unhandled FORM value: %d." +msgstr "Dwarf Hatasý: Geçersiz veya desteklenmeyen FORM deðeri: %d." + +#: dwarf2.c:843 +msgid "Dwarf Error: mangled line number section (bad file number)." +msgstr "Dwarf Hatasý: bozulmuþ satýr numarasý bölümü (geçersiz dosya numarasý)." + +#: dwarf2.c:929 +msgid "Dwarf Error: Can't find .debug_line section." +msgstr "Dwarf Hatasý: .debug_line bölümü bulunamadý." + +#: dwarf2.c:952 +#, c-format +msgid "Dwarf Error: Line offset (%u) greater than or equal to line size (%u)." +msgstr "" +"Dwarf Hatasý: Satýr göreli konumu (%u) satýr boyutundan (%u)\n" +" daha büyük veya eþit." + +#: dwarf2.c:1143 +msgid "Dwarf Error: mangled line number section." +msgstr "Dwarf Hatasý: bozuk satýr numarasý bölümü." + +#: dwarf2.c:1318 dwarf2.c:1532 +#, c-format +msgid "Dwarf Error: Could not find abbrev number %d." +msgstr "Dwarf Hatasý: Kýsaltma numarasý %d bulunamadý." + +#: dwarf2.c:1493 +#, c-format +msgid "Dwarf Error: found dwarf version '%hu', this reader only handles version 2 information." +msgstr "Dwarf Hatasý: dwarf sürümü '%hu' bulundu, bu okuyucu yalnýzca sürüm 2 bilgisini anlayabiliyor." + +#: dwarf2.c:1500 +#, c-format +msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'." +msgstr "Dwarf Hatasý: adres boyu '%u' bulundu, bu okuyucu '%u'dan daha büyük boylarý okuyamýyor." + +#: dwarf2.c:1523 +#, c-format +msgid "Dwarf Error: Bad abbrev number: %d." +msgstr "Dwarf Hatasý: Geçersiz kýsaltma numarasý: %d." + +#: ecoff.c:1328 +#, c-format +msgid "Unknown basic type %d" +msgstr "Bilinmeyen temel tür %d" + +#: ecoff.c:1597 +#, c-format +msgid "\n End+1 symbol: %ld" +msgstr "\n Son+1 sembolü: %ld" + +#: ecoff.c:1604 ecoff.c:1607 +#, c-format +msgid "\n First symbol: %ld" +msgstr "\n Ýlk sembol: %ld" + +#: ecoff.c:1619 +#, c-format +msgid "\n End+1 symbol: %-7ld Type: %s" +msgstr "\n Son+1 sembolü: %-7ld Tür: %s" + +#: ecoff.c:1626 +#, c-format +msgid "\n Local symbol: %ld" +msgstr "\n Yerel sembol: %ld" + +#: ecoff.c:1634 +#, c-format +msgid "\n struct; End+1 symbol: %ld" +msgstr "\n yapý; Son+1 sembolü: %ld" + +#: ecoff.c:1639 +#, c-format +msgid "\n union; End+1 symbol: %ld" +msgstr "\n birleþim; Son+1 sembolü: %ld" + +#: ecoff.c:1644 +#, c-format +msgid "\n enum; End+1 symbol: %ld" +msgstr "\n enum; Son+1 sembolü: %ld" + +#: ecoff.c:1650 +#, c-format +msgid "\n Type: %s" +msgstr "\n Tür: %s" + +#: elf-hppa.h:1366 elf-hppa.h:1399 elf32-ppc.c:3062 elf32-sh.c:3201 +#: elf64-x86-64.c:1275 +#, c-format +msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section" +msgstr "%1$s: uyarý: %3$s bölümünden `%2$s' sembolüne çözümlenemeyen yer deðiþimi" + +#: elf-m10200.c:463 elf-m10300.c:673 elf32-arm.h:2074 elf32-avr.c:835 +#: elf32-cris.c:1392 elf32-d10v.c:482 elf32-fr30.c:653 elf32-h8300.c:547 +#: elf32-i860.c:1048 elf32-m32r.c:1281 elf32-openrisc.c:455 elf32-v850.c:1691 +#: elf64-mmix.c:1164 +msgid "internal error: out of range error" +msgstr "iç hata: kapsam dýþý hatasý" + +#: elf-m10200.c:467 elf-m10300.c:677 elf32-arm.h:2078 elf32-avr.c:839 +#: elf32-cris.c:1396 elf32-d10v.c:486 elf32-fr30.c:657 elf32-h8300.c:551 +#: elf32-i860.c:1052 elf32-m32r.c:1285 elf32-mips.c:7565 elf32-openrisc.c:459 +#: elf32-v850.c:1695 elf64-mips.c:4464 elf64-mmix.c:1168 +msgid "internal error: unsupported relocation error" +msgstr "iç hata: desteklenmeyen yer deðiþim hatasý" + +#: elf-m10200.c:471 elf-m10300.c:681 elf32-arm.h:2082 elf32-d10v.c:490 +#: elf32-h8300.c:555 elf32-m32r.c:1289 +msgid "internal error: dangerous error" +msgstr "iç hata: ölümcül hata" + +#: elf-m10200.c:475 elf-m10300.c:685 elf32-arm.h:2086 elf32-avr.c:847 +#: elf32-cris.c:1404 elf32-d10v.c:494 elf32-fr30.c:665 elf32-h8300.c:559 +#: elf32-i860.c:1060 elf32-m32r.c:1293 elf32-openrisc.c:467 elf32-v850.c:1715 +#: elf64-mmix.c:1176 +msgid "internal error: unknown error" +msgstr "iç hata: bilinmeyen hata" + +#: elf.c:345 +#, c-format +msgid "%s: invalid string offset %u >= %lu for section `%s'" +msgstr "%1$s: `%4$s' bölümünde geçersiz dizge göreli konumu %2$u >= %3$lu" + +#: elf.c:450 +#, c-format +msgid "%s: invalid SHT_GROUP entry" +msgstr "%s: geçersiz SHT_GROUP girdisi" + +#: elf.c:531 +#, c-format +msgid "%s: no group info for section %s" +msgstr "%s: %s bölümünde grup bilgisi yok" + +#: elf.c:842 +msgid "\nProgram Header:\n" +msgstr "\nYazýlým Baþlýðý:\n" + +#: elf.c:891 +msgid "\nDynamic Section:\n" +msgstr "\nDinamik Bölüm:\n" + +#: elf.c:1020 +msgid "\nVersion definitions:\n" +msgstr "\nSürüm tanýmlarý:\n" + +#: elf.c:1043 +msgid "\nVersion References:\n" +msgstr "\nSürüm Referanslarý:\n" + +#: elf.c:1048 +#, c-format +msgid " required from %s:\n" +msgstr " %s'den isteniyor:\n" + +#: elf.c:1675 +#, c-format +msgid "%s: invalid link %lu for reloc section %s (index %u)" +msgstr "%1$s: yerdeðiþim bölümü %3$s (indeks %4$u) için geçersiz bað %2$lu" + +#: elf.c:3289 +#, c-format +msgid "%s: Not enough room for program headers (allocated %u, need %u)" +msgstr "%s: Yazýlým baþlýklarý için yeterli yer yok (%u ayrýldý, %u gerekli)" + +#: elf.c:3393 +#, c-format +msgid "%s: Not enough room for program headers, try linking with -N" +msgstr "%s: yazýlým baþlýklarý için gerekli yer yok, -N ile baðlamayý deneyin" + +#: elf.c:3518 +#, c-format +msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x" +msgstr "Hata: Parçadaki (%s) ilk bölüm 0x%x'de, parça ise 0x%x'de baþlýyor" + +#: elf.c:3804 +#, c-format +msgid "%s: warning: allocated section `%s' not in segment" +msgstr "%s: uyarý: ayrýlmýþ `%s' bölümü parça içinde deðil" + +#: elf.c:4138 +#, c-format +msgid "%s: symbol `%s' required but not present" +msgstr "%s: `%s' sembolü gerekli fakat mevcut deðil" + +#: elf.c:4147 +#, c-format +msgid "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8lx%s\n" +msgstr "bfd sembolünden elf sembolü:0x%.8lx, isim= %s, sem num = %d, bayrak = 0x%.8lx%s\n" + +#: elf.c:4391 +#, c-format +msgid "%s: warning: Empty loadable segment detected\n" +msgstr "%s: uyarý: Boþ yüklenebilir parça bulundu\n" + +#: elf.c:5804 +#, c-format +msgid "%s: unsupported relocation type %s" +msgstr "%s: desteklenmeyen yerdeðiþim türü %s" + +#: elf32-arm.h:1224 +#, c-format +msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'." +msgstr "%s: Uyarý: Arm BLX iþlemi Arm iþlevi '%s' hedefliyor." + +#: elf32-arm.h:1420 +#, c-format +msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'." +msgstr "%s: Uyarý: Thumb BLX iþlemi thumb iþlevi '%s'ý hedefliyor." + +#: elf32-arm.h:1904 elf32-i386.c:1776 elf32-sh.c:3133 +#, c-format +msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section" +msgstr "%s(%s+0x%lx): SEC_MERGE bölümüne %s yerdeðiþimi" + +#: elf32-arm.h:1998 +#, c-format +msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section" +msgstr "%1$s: uyarý: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$d yer deðiþimi" + +#: elf32-arm.h:2114 +#, c-format +msgid "Warning: Not setting interwork flag of %s since it has already been specified as non-interworking" +msgstr "Uyarý: beraber çalýþmaz diye önceden belirtilmiþ olduðundan %s'nin beraber çalýþma bayraðý atanmadý" + +#: elf32-arm.h:2118 +#, c-format +msgid "Warning: Clearing the interwork flag of %s due to outside request" +msgstr "Uyarý: Dýþ isteðe uyularak %s'nin beraber çalýþma bayraðý temizlendi" + +#: elf32-arm.h:2166 +#, c-format +msgid "Warning: Clearing the interwork flag in %s because non-interworking code in %s has been linked with it" +msgstr "Uyarý: %2$s'deki beraber çalýþmaz kod ona baðlandýðý için %1$s'nin beraber çalýþma bayraðý temizlendi" + +#: elf32-arm.h:2261 +#, c-format +msgid "Error: %s compiled for EABI version %d, whereas %s is compiled for version %d" +msgstr "Hata: %s EABI sürüm %d için derlenmiþ, fakat %s %d sürümü için derlenmiþ" + +#: elf32-arm.h:2275 +#, c-format +msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d" +msgstr "Hata: %s APCS-%d için derlenmiþ, fakat %s APCS-%d için derlenmiþ" + +#: elf32-arm.h:2287 +#, c-format +msgid "Error: %s passes floats in FP registers, whereas %s passes them in integer registers" +msgstr "" +"Hata: %s kayan sayýlarý kayan sayý yazmaçlarýnda geçiriyor, \n" +" fakat %s tamsayý yazmaçlarýnda geçiriyor" + +#: elf32-arm.h:2292 +#, c-format +msgid "Error: %s passes floats in integer registers, whereas %s passes them in FP registers" +msgstr "" +"Hata: %s kayan sayýlarý tamsayý yazmaçlarýnda geçiriyor, \n" +" fakat %s kayan sayý yazmaçlarýnda geçiriyor" + +#: elf32-arm.h:2303 +#, c-format +msgid "Error: %s uses VFP instructions, whereas %s FPA instructions" +msgstr "Hata: %s VFP iþlemi kullanýyor, fakat %s FPA iþlemi kullanýyor" + +#: elf32-arm.h:2308 +#, c-format +msgid "Error: %s uses FPA instructions, whereas %s VFP instructions" +msgstr "Hata: %s FPA iþlemi kullanýyor, fakat %s VFP iþlemi kullanýyor" + +#: elf32-arm.h:2328 +#, c-format +msgid "Error: %s uses software FP, whereas %s uses hardware FP" +msgstr "" +"Hata: %s yazýlýmda kayan sayý kullanýyor,\n" +" fakat %s donanýmda kayan sayý kullanýyor" + +#: elf32-arm.h:2333 +#, c-format +msgid "Error: %s uses hardware FP, whereas %s uses software FP" +msgstr "" +"Hata: %s donanýmda kayan sayý kullanýyor,\n" +" fakat %s yazýlýmda kayan sayý kullanýyor" + +#: elf32-arm.h:2348 +#, c-format +msgid "Warning: %s supports interworking, whereas %s does not" +msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý destekliyor, fakat %s desteklemiyor." + +#: elf32-arm.h:2355 +#, c-format +msgid "Warning: %s does not support interworking, whereas %s does" +msgstr "Uyarý: %s girdi dosyasý beraber çalýþmayý desteklemiyor, fakat %s destekliyor." + +#. Ignore init flag - it may not be set, despite the flags field +#. containing valid data. +#: elf32-arm.h:2386 elf32-cris.c:2970 elf32-m68k.c:410 elf32-mips.c:3232 +#, c-format +msgid "private flags = %lx:" +msgstr "özel bayraklar = %lx:" + +#: elf32-arm.h:2395 +msgid " [interworking enabled]" +msgstr " [beraber çalýþma etkinleþtirilmiþ]" + +#: elf32-arm.h:2398 +msgid " [APCS-26]" +msgstr " [APCS-26]" + +#: elf32-arm.h:2400 +msgid " [APCS-32]" +msgstr " [APCS-32]" + +#: elf32-arm.h:2403 +msgid " [VFP float format]" +msgstr " [VFP kayan nokta biçemi]" + +#: elf32-arm.h:2405 +msgid " [FPA float format]" +msgstr " [FPA kayan nokta biçemi]" + +#: elf32-arm.h:2414 +msgid " [new ABI]" +msgstr " [yeni ABI]" + +#: elf32-arm.h:2417 +msgid " [old ABI]" +msgstr " [eski ABI]" + +#: elf32-arm.h:2420 +msgid " [software FP]" +msgstr " [yazýlým FP]" + +#: elf32-arm.h:2428 +msgid " [Version1 EABI]" +msgstr " [Sürüm1 EABI]" + +#: elf32-arm.h:2431 elf32-arm.h:2442 +msgid " [sorted symbol table]" +msgstr " [sýralanmýþ sembol tablosu]" + +#: elf32-arm.h:2433 elf32-arm.h:2444 +msgid " [unsorted symbol table]" +msgstr " [sýralanmamýþ sembol tablosu]" + +#: elf32-arm.h:2439 +msgid " [Version2 EABI]" +msgstr " [Sürüm2 EABI]" + +#: elf32-arm.h:2447 +msgid " [dynamic symbols use segment index]" +msgstr " [dinamik semboller bölüm indeksini kullanýyor]" + +#: elf32-arm.h:2450 +msgid " [mapping symbols precede others]" +msgstr " [eþleþme sembolleri diðerlerinden önceliklidir]" + +#: elf32-arm.h:2457 +msgid " " +msgstr " " + +#: elf32-arm.h:2464 +msgid " [relocatable executable]" +msgstr " [yer deðiþtirebilir uygulama]" + +#: elf32-arm.h:2467 +msgid " [has entry point]" +msgstr " [girdi noktasý var]" + +#: elf32-arm.h:2472 +msgid "" +msgstr "" + +#: elf32-avr.c:843 elf32-cris.c:1400 elf32-fr30.c:661 elf32-i860.c:1056 +#: elf32-openrisc.c:463 elf32-v850.c:1699 elf64-mmix.c:1172 +msgid "internal error: dangerous relocation" +msgstr "iç hata: tehlikeli yer deðiþim" + +#: elf32-cris.c:949 +#, c-format +msgid "%s: unresolvable relocation %s against symbol `%s' from %s section" +msgstr "%1$s: uyarý: %4$s bölümünden `%3$s' sembolüne çözümlenemeyen %2$s yer deðiþimi" + +#: elf32-cris.c:1012 +#, c-format +msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section" +msgstr "%1$s: %4$s bölümünden `%3$s' sembolüne %2$s yer deðiþimi için PLT veya GOT yok" + +#: elf32-cris.c:1015 elf32-cris.c:1142 +msgid "[whose name is lost]" +msgstr "[adý kaybolmuþ]" + +#: elf32-cris.c:1131 +#, c-format +msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section" +msgstr "" +"%1$s: %4$s bölümünden yerel sembol sýfýr olmayan %3$d eklemesi ile\n" +" %2$s yerdeðiþimi" + +#: elf32-cris.c:1138 +#, c-format +msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section" +msgstr "%1$s: %5$s bölümünden `%4$s' sembolüne sýfýr olmayan %3$d eklemesi ile %2$s yerdeðiþimi" + +#: elf32-cris.c:1156 +#, c-format +msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section" +msgstr "%1$s: %4$s bölümünden %3$s evrensel sembolü için %2$s yerdeðiþimi yapýlamaz" + +#: elf32-cris.c:1275 +#, c-format +msgid "%s: Internal inconsistency; no relocation section %s" +msgstr "%s: Ýç tutarsýzlýk; %s yerdeðiþim bölümü yok" + +#: elf32-cris.c:2508 +#, c-format +msgid "" +"%s, section %s:\n" +" relocation %s should not be used in a shared object; recompile with -fPIC" +msgstr "" +"%s, %s bölümü:\n" +" %s yer deðiþimi paylaþýmlý nesne oluþtururken kullanýlamaz;\n" +" -fPIC ile yeniden derleyin" + +#: elf32-cris.c:2973 +msgid " [symbols have a _ prefix]" +msgstr " [semboller _ önekine sahip]" + +#: elf32-cris.c:3012 +#, c-format +msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols" +msgstr "%s: _-önekli sembolleri kullanýyor, fakat dosyaya öneksiz sembolleri yazýyor" + +#: elf32-cris.c:3013 +#, c-format +msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols" +msgstr "%s: öneksiz sembolleri kullanýyor, fakat dosyaya _-önekli sembolleri yazýyor" + +#: elf32-gen.c:82 elf64-gen.c:82 +#, c-format +msgid "%s: Relocations in generic ELF (EM: %d)" +msgstr "%s: Normal ELF'de yerdeðiþimler (EM: %d)" + +#: elf32-hppa.c:646 +#, c-format +msgid "%s: cannot create stub entry %s" +msgstr "%s: koçan giriþi %s oluþturulamadý" + +#: elf32-hppa.c:937 elf32-hppa.c:3540 +#, c-format +msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections" +msgstr "%s(%s+0x%lx): %s'e ulaþýlamadý, -ffunction-sections ile derleyin" + +#: elf32-hppa.c:1312 +#, c-format +msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC" +msgstr "%s: %s yer deðiþimi paylaþýmlý nesne oluþturulurken kullanýlamaz; -fPIC ile yeniden derleyin" + +#: elf32-hppa.c:1332 +#, c-format +msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC" +msgstr "%s: %s yer deðiþimi paylaþýmlý nesne oluþtururken kullanýlamaz; -fPIC ile yeniden derleyin" + +#: elf32-hppa.c:1525 +#, c-format +msgid "Could not find relocation section for %s" +msgstr "%s için yer deðiþtirme bölümü bulunamadý" + +#: elf32-hppa.c:2862 +#, c-format +msgid "%s: duplicate export stub %s" +msgstr "%s: birden fazla ihraç koçaný %s" + +#: elf32-hppa.c:3424 +#, c-format +msgid "%s(%s+0x%lx): fixing %s" +msgstr "%s(%s+0x%lx): %s düzeltiliyor" + +#: elf32-hppa.c:4064 +#, c-format +msgid "%s(%s+0x%lx): cannot handle %s for %s" +msgstr "%1$s(%2$s+0x%3$lx): %5$s için %4$s iþlenemedi" + +#: elf32-hppa.c:4403 +msgid ".got section not immediately after .plt section" +msgstr ".got bölümü .plt bölümünün hemen arkasýnda deðil" + +#: elf32-i386.c:298 +#, c-format +msgid "%s: invalid relocation type %d" +msgstr "%s: geçersiz yer deðiþim türü %d" + +#: elf32-i386.c:718 elf32-s390.c:636 elf64-s390.c:595 +#, c-format +msgid "%s: bad symbol index: %d" +msgstr "%s: geçersiz sembol indeksi: %d" + +#: elf32-i386.c:863 elf32-s390.c:790 elf64-ppc.c:2085 elf64-s390.c:759 +#, c-format +msgid "%s: bad relocation section name `%s'" +msgstr "%s: geçersiz yerdeðiþim bölümü adý `%s'" + +#: elf32-i386.c:2067 elf32-s390.c:1949 elf64-ppc.c:3908 elf64-s390.c:1953 +#, c-format +msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'" +msgstr "%s(%s+0x%lx): `%s' sembolüne çözümlenemeyen yer deðiþimi" + +#: elf32-i386.c:2105 elf32-s390.c:1987 elf64-s390.c:1991 +#, c-format +msgid "%s(%s+0x%lx): reloc against `%s': error %d" +msgstr "%s(%s+0x%lx): %s'e yer deðiþimi: %d hatasý" + +#: elf32-m32r.c:924 +msgid "SDA relocation when _SDA_BASE_ not defined" +msgstr "_SDA_BASE_ tanýmlanmamýþ iken SDA yer deðiþimi" + +#: elf32-ia64.c:3538 elf32-m32r.c:1008 elf32-ppc.c:2930 elf64-ia64.c:3538 +#, c-format +msgid "%s: unknown relocation type %d" +msgstr "%s: bilinmeyen yer deðiþim türü %d" + +#: elf32-m32r.c:1224 +#, c-format +msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)" +msgstr "%1$s: Bir %3$s yer deðiþiminin hedefi (%2$s) yanlýþ bölümde (%4$s)" + +#: elf32-m32r.c:2001 +#, c-format +msgid "%s: Instruction set mismatch with previous modules" +msgstr "%s: Önceki modüllerle iþlem uyuþmazlýðý" + +#: elf32-m32r.c:2024 +#, c-format +msgid "private flags = %lx" +msgstr "özel bayraklar = %lx" + +#: elf32-m32r.c:2029 +msgid ": m32r instructions" +msgstr ": m32r iþlemleri" + +#: elf32-m32r.c:2030 +msgid ": m32rx instructions" +msgstr ": m32rx iþlemleri" + +#: elf32-m68k.c:413 +msgid " [cpu32]" +msgstr " [cpu32]" + +#: elf32-mcore.c:353 elf32-mcore.c:479 +#, c-format +msgid "%s: Relocation %s (%d) is not currently supported.\n" +msgstr "%s: %s (%d) yer deðiþimi henüz desteklenmiyor.\n" + +#: elf32-mcore.c:438 +#, c-format +msgid "%s: Unknown relocation type %d\n" +msgstr "%s: Bilinmeyen yer deðiþim türü %d\n" + +#: elf32-mips.c:2146 elf64-mips.c:1972 +msgid "32bits gp relative relocation occurs for an external symbol" +msgstr "32 bitlik gp göreceli yer deðiþim bir dýþ sembol için yapýlýyor" + +#: elf32-mips.c:2295 +#, c-format +msgid "Linking mips16 objects into %s format is not supported" +msgstr "mips16 nesnelerini %s biçemine baðlamak desteklenmiyor" + +#: elf32-mips.c:3119 +#, c-format +msgid "%s: linking PIC files with non-PIC files" +msgstr "%s: PIC dosyalarý PIC olmayan dosyalarla baðlanýyor" + +#: elf32-mips.c:3129 +#, c-format +msgid "%s: linking abicalls files with non-abicalls files" +msgstr "%s: abicalls dosyalarý abicalls olmayan dosyalarla baðlanýyor" + +#: elf32-mips.c:3158 +#, c-format +msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)" +msgstr "%1$s: Önceki modüllerle (-mips%3$d) ile ISA uyumsuzluðu (-mips%2$d)" + +#: elf32-mips.c:3167 +#, c-format +msgid "%s: ISA mismatch (%d) with previous modules (%d)" +msgstr "%1$s: Önceki modüllerle (%3$d) ile ISA uyumsuzluðu (%2$d)" + +#: elf32-mips.c:3190 +#, c-format +msgid "%s: ABI mismatch: linking %s module with previous %s modules" +msgstr "%s: ABI uyumsuzluðu: %s modülü önceki %s modülle baðlanýyor" + +#: elf32-mips.c:3204 elf32-ppc.c:1470 elf64-ppc.c:1538 elf64-sparc.c:3033 +#, c-format +msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)" +msgstr "%1$s: önceki modüllerden (0x%3$lx) farklý e_flags (0x%2$lx) alanlarý kullanýlýyor" + +#: elf32-mips.c:3235 +msgid " [abi=O32]" +msgstr " [abi=O32]" + +#: elf32-mips.c:3237 +msgid " [abi=O64]" +msgstr " [abi=O64]" + +#: elf32-mips.c:3239 +msgid " [abi=EABI32]" +msgstr " [abi=EABI32]" + +#: elf32-mips.c:3241 +msgid " [abi=EABI64]" +msgstr " [abi=EABI64]" + +#: elf32-mips.c:3243 +msgid " [abi unknown]" +msgstr " [abi bilinmiyor]" + +#: elf32-mips.c:3245 +msgid " [abi=N32]" +msgstr " [abi=N32]" + +#: elf32-mips.c:3247 +msgid " [abi=64]" +msgstr " [abi=64]" + +#: elf32-mips.c:3249 +msgid " [no abi set]" +msgstr " [abi atanmamýþ]" + +#: elf32-mips.c:3252 +msgid " [mips1]" +msgstr " [mips1]" + +#: elf32-mips.c:3254 +msgid " [mips2]" +msgstr " [mips2]" + +#: elf32-mips.c:3256 +msgid " [mips3]" +msgstr " [mips3]" + +#: elf32-mips.c:3258 +msgid " [mips4]" +msgstr " [mips4]" + +#: elf32-mips.c:3260 +msgid " [mips5]" +msgstr " [mips5]" + +#: elf32-mips.c:3262 +msgid " [mips32]" +msgstr " [mips32]" + +#: elf32-mips.c:3264 +msgid " [mips64]" +msgstr " [mips64]" + +#: elf32-mips.c:3266 +msgid " [unknown ISA]" +msgstr " [bilinmeyen ISA]" + +#: elf32-mips.c:3269 +msgid " [32bitmode]" +msgstr " [32bitkipi]" + +#: elf32-mips.c:3271 +msgid " [not 32bitmode]" +msgstr " [32bitkipi deðil]" + +#: elf32-mips.c:4947 +msgid "static procedure (no name)" +msgstr "statik altyordam (isimsiz)" + +#: elf32-mips.c:5565 elf64-mips.c:6694 +#, c-format +msgid "%s: illegal section name `%s'" +msgstr "%s: geçersiz bölüm adý `%s'" + +#: elf32-mips.c:6132 elf64-mips.c:3150 +msgid "not enough GOT space for local GOT entries" +msgstr "yerel GOT girdileri için yeterli GOT yeri yok" + +#: elf32-mips.c:7238 elf64-mips.c:4203 +#, c-format +msgid "%s: %s+0x%lx: jump to stub routine which is not jal" +msgstr "%s: %s+0x%lx: jal olmayan koçan yordamýna sýçrama" + +#: elf32-mips.c:8237 elf64-mips.c:5891 +#, c-format +msgid "%s: Malformed reloc detected for section %s" +msgstr "%s: %s bölümü için geçersiz yer deðiþim bulundu" + +#: elf32-mips.c:8315 elf64-mips.c:5969 +#, c-format +msgid "%s: CALL16 reloc at 0x%lx not against global symbol" +msgstr "%s: 0x%lx'deki CALL16 yerdeðiþimi evrensel sembole göre deðil" + +#: elf32-ppc.c:1436 elf64-ppc.c:1503 +#, c-format +msgid "%s: compiled with -mrelocatable and linked with modules compiled normally" +msgstr "%s: -mrelocatable ile derlendi ve normal derlenmiþ modüllerle baðlandý" + +#: elf32-ppc.c:1444 elf64-ppc.c:1511 +#, c-format +msgid "%s: compiled normally and linked with modules compiled with -mrelocatable" +msgstr "%s: normal derlendi ve -mrelocatable ile derlenmiþ modüllere baðlandý" + +#: elf32-ppc.c:1568 +#, c-format +msgid "%s: Unknown special linker type %d" +msgstr "%s: Bilinmeyen özel baðlayýcý türü %d" + +#: elf32-ppc.c:2218 elf32-ppc.c:2252 elf32-ppc.c:2287 +#, c-format +msgid "%s: relocation %s cannot be used when making a shared object" +msgstr "%s: %s yerdeðiþimi paylaþýmlý nesne oluþturulurken kullanýlamaz" + +#: elf32-ppc.c:3097 elf64-ppc.c:3500 +#, c-format +msgid "%s: unknown relocation type %d for symbol %s" +msgstr "%1$s: %3$s sembolü için bilinmeyen %2$d türünde yerdeðiþimi" + +#: elf32-ppc.c:3452 elf32-ppc.c:3473 elf32-ppc.c:3523 +#, c-format +msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)" +msgstr "%1$s: %3$s yerdeðiþiminin hedefi (%2$s) yanlýþ çýktý bölümünde (%4$s)" + +#: elf32-ppc.c:3589 +#, c-format +msgid "%s: Relocation %s is not yet supported for symbol %s." +msgstr "%s: %s yerdeðiþimi %s sembolü için henüz desteklenmiyor." + +#: elf32-sh.c:1101 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES offset" +msgstr "%s: 0x%lx: uyarý: hatalý R_SH_USES göreli konumu" + +#: elf32-sh.c:1113 +#, c-format +msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x" +msgstr "%s: 0x%lx: uyarý: R_SH_USES bilinmeyen insn 0x%x'ý imliyor" + +#: elf32-sh.c:1130 +#, c-format +msgid "%s: 0x%lx: warning: bad R_SH_USES load offset" +msgstr "%s: 0x%lx: uyarý: hatalý R_SH_USES yükleme göreli konumu" + +#: elf32-sh.c:1145 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected reloc" +msgstr "%s: 0x%lx: uyarý: beklenen yerdeðiþim bulunamadý" + +#: elf32-sh.c:1202 +#, c-format +msgid "%s: 0x%lx: warning: symbol in unexpected section" +msgstr "%s: 0x%lx: uyarý: beklenmeyen bölümde sembol" + +#: elf32-sh.c:1323 +#, c-format +msgid "%s: 0x%lx: warning: could not find expected COUNT reloc" +msgstr "%s: 0x%lx: uyarý: beklenen COUNT yerdeðiþimi bulunamadý" + +#: elf32-sh.c:1332 +#, c-format +msgid "%s: 0x%lx: warning: bad count" +msgstr "%s: 0x%lx: uyarý: hatalý sayým" + +#: elf32-sh.c:1741 elf32-sh.c:2132 +#, c-format +msgid "%s: 0x%lx: fatal: reloc overflow while relaxing" +msgstr "%s: 0x%lx: ölümcül: gevþetilirken yerdeðiþim taþmasý" + +#: elf32-sh.c:3267 +#, c-format +msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation" +msgstr "%s: 0x%lx: ölümcül: gevþetme destek yerdeðiþimi için hizalanmamýþ dal" + +#: elf32-sparc.c:1554 elf64-sparc.c:2286 +#, c-format +msgid "%s: probably compiled without -fPIC?" +msgstr "%s: acaba -fPIC olmaksýzýn mý derlenmiþ?" + +#: elf32-sparc.c:2007 +#, c-format +msgid "%s: compiled for a 64 bit system and target is 32 bit" +msgstr "%s: 64 bitlik sistem için derlenmiþ ve hedef 32 bit" + +#: elf32-sparc.c:2021 +#, c-format +msgid "%s: linking little endian files with big endian files" +msgstr "%s: küçük sonlu dosyalar büyük sonlu dosyalarla baðlanýyor" + +#: elf32-v850.c:682 +#, c-format +msgid "Variable `%s' cannot occupy in multiple small data regions" +msgstr "`%s' deðiþkeni birden fazla küçük veri sahasýný kapsayamaz" + +#: elf32-v850.c:685 +#, c-format +msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions" +msgstr "`%s' deðiþkeni küçük, sýfýr ve ufak veri sahalarýndan yalnýz birinde olabilir" + +#: elf32-v850.c:688 +#, c-format +msgid "Variable `%s' cannot be in both small and zero data regions simultaneously" +msgstr "`%s' deðiþkeni ayný anda hem küçük hem sýfýr veri sahalarýnda bulunamaz" + +#: elf32-v850.c:691 +#, c-format +msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously" +msgstr "`%s' deðiþkeni ayný anda hem küçük hem ufak veri sahalarýnda bulunamaz" + +#: elf32-v850.c:694 +#, c-format +msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously" +msgstr "`%s' deðiþkeni ayný anda hem sýfýr hem ufak veri sahalarýnda bulunamaz" + +#: elf32-v850.c:1072 +msgid "FAILED to find previous HI16 reloc\n" +msgstr "önceki HI16 yerdeðiþimi BULUNAMADI\n" + +#: elf32-v850.c:1703 +msgid "could not locate special linker symbol __gp" +msgstr "özel baðlayýcý sembolü __gp bulunamadý" + +#: elf32-v850.c:1707 +msgid "could not locate special linker symbol __ep" +msgstr "özel baðlayýcý sembolü __ep bulunamadý" + +#: elf32-v850.c:1711 +msgid "could not locate special linker symbol __ctbp" +msgstr "özel baðlayýcý sembolü __ctbp bulunamadý" + +#: elf32-v850.c:1877 +#, c-format +msgid "%s: Architecture mismatch with previous modules" +msgstr "%s: Önceki modüllerle platform uyumsuzluðu" + +#: elf32-v850.c:1897 +#, c-format +msgid "private flags = %lx: " +msgstr "özel bayraklar = %lx:" + +#: elf32-v850.c:1902 +msgid "v850 architecture" +msgstr "v850 platformu" + +#: elf32-v850.c:1903 +msgid "v850e architecture" +msgstr "v850e platformu" + +#: elf32-v850.c:1904 +msgid "v850ea architecture" +msgstr "v850ea platformu" + +#: elf64-alpha.c:858 +msgid "GPDISP relocation did not find ldah and lda instructions" +msgstr "GPDISP yerdeðiþimi ldah ve lda iþlemlerini bulamadý" + +#: elf64-alpha.c:2934 +#, c-format +msgid "%s: .got subsegment exceeds 64K (size %d)" +msgstr "%s: .got alt parçasý 64K'yý aþýyor (boy %d)" + +#: elf64-alpha.c:3518 elf64-alpha.c:3530 +#, c-format +msgid "%s: gp-relative relocation against dynamic symbol %s" +msgstr "%s: %s dinamik sembolüne gp göreceli yer deðiþimi" + +#: elf64-hppa.c:2070 +#, c-format +msgid "stub entry for %s cannot load .plt, dp offset = %ld" +msgstr "%s için koçan girdisi .plt'yi yükleyemedi, dp görecesi = %ld" + +#: elf64-mmix.c:1268 +#, c-format +msgid "%s: register relocation against non-register symbol: %s in %s" +msgstr "%1$s: yazmaç olmayan sembole yazmaç yerdeðiþimi: %3$s içinde %2$s" + +#: elf64-mmix.c:1270 +msgid "(unknown)" +msgstr "(bilinmeyen)" + +#: elf64-mmix.c:1305 +#, c-format +msgid "%s: directive LOCAL valid only with a register or absolute value" +msgstr "%s: YEREL (LOCAL) yönergesi yalnýz bir yazmaç veya kesin deðerle geçerlidir" + +#: elf64-mmix.c:1333 +#, c-format +msgid "%s: LOCAL directive: Register $%ld is not a local register. First global register is $%ld." +msgstr "" +"%s: YEREL (LOCAL) yönergesi: $%ld yazmacý yerel yazmaç deðil.\n" +" Ýlk evrensel yazmaç: $%ld." + +#: elf64-mmix.c:1609 +#, c-format +msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n" +msgstr "" +"%s: Hata: `%s' birden fazla defa tanýmlanmýþ; %s'nin baþlangýcý daha önce\n" +" baðlanan bir dosyada.\n" + +#: elf64-mmix.c:1668 +msgid "Register section has contents\n" +msgstr "Yazmaç bölümünde içerik yok\n" + +#: elf64-ppc.c:1466 libbfd.c:1436 +#, c-format +msgid "%s: compiled for a big endian system and target is little endian" +msgstr "%s: büyük sonlu sistem için derlenmiþ ve hedef küçük sonlu" + +#: elf64-ppc.c:1468 libbfd.c:1438 +#, c-format +msgid "%s: compiled for a little endian system and target is big endian" +msgstr "%s: küçük sonlu sistem için derlenmiþ ve hedef büyük sonlu" + +#: elf64-ppc.c:3166 +#, c-format +msgid "linkage table overflow against `%s'" +msgstr "`%s'ye baðlama tablosu taþmasý" + +#: elf64-ppc.c:3244 +msgid "stub section size doesn't match calculated size" +msgstr "koçan bölümü boyu hesaplanan boyla eþleþmiyor" + +#: elf64-ppc.c:3845 +#, c-format +msgid "%s: Relocation %s is not supported for symbol %s." +msgstr "%s: %s yerdeðiþimi %s sembolü için henüz desteklenmiyor." + +#: elf64-ppc.c:3889 +#, c-format +msgid "%s: error: relocation %s not a multiple of 4" +msgstr "%s: hata: %s yerdeðiþimi 4'ün katý deðil" + +#: elf64-sparc.c:1277 +#, c-format +msgid "%s: check_relocs: unhandled reloc type %d" +msgstr "%s: check_relocs: desteklenmeyen yerdeðiþim türü %d" + +#: elf64-sparc.c:1314 +#, c-format +msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER" +msgstr "%s: Yalnýz %%g[2367] yazmaçlarý STT_REGISTER ile bildirilebilir" + +#: elf64-sparc.c:1334 +#, c-format +msgid "Register %%g%d used incompatibly: %s in %s" +msgstr "%%g%1$d yazmacý uyumsuz kullanýlmýþ: %3$s içinde %2$s" + +#: elf64-sparc.c:1338 elf64-sparc.c:1362 elf64-sparc.c:1411 +#, c-format +msgid " previously %s in %s" +msgstr " daha önce %2$s içinde %1$s" + +#: elf64-sparc.c:1359 elf64-sparc.c:1408 +#, c-format +msgid "Symbol `%s' has differing types: %s in %s" +msgstr "`%1$s' sembolünün farklý türleri var: %3$s içinde %2$s" + +#: elf64-sparc.c:3014 +#, c-format +msgid "%s: linking UltraSPARC specific with HAL specific code" +msgstr "%s: UltraSPARC'a özel kod HAL'e özel kod ile baðlanýyor" + +#: elfcode.h:1218 +#, c-format +msgid "%s: version count (%ld) does not match symbol count (%ld)" +msgstr "%s: sürüm sayýsý (%ld) sembol sayýsý (%ld) ile eþleþmiyor" + +#: elflink.c:434 +#, c-format +msgid "%s: Section %s is too large to add hole of %ld bytes" +msgstr "%s: %s bölümü içine %ld baytlýk bir delik koymak için fazla büyük" + +#: elflink.h:1113 +#, c-format +msgid "%s: warning: unexpected redefinition of `%s'" +msgstr "%s: uyarý: `%s' için beklenmeyen yeniden tanýmlama" + +#: elflink.h:1784 +#, c-format +msgid "%s: %s: invalid version %u (max %d)" +msgstr "%s: %s: geçersiz sürüm %u (maksimum %d)" + +#: elflink.h:1825 +#, c-format +msgid "%s: %s: invalid needed version %d" +msgstr "%s: %s: geçersiz gerekli sürüm %d" + +#: elflink.h:1945 +#, c-format +msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s" +msgstr "Uyarý: `%s' sembolünün boyu %lu'dan %lu'ya %s içerisinde deðiþti" + +#: elflink.h:4020 +#, c-format +msgid "warning: type and size of dynamic symbol `%s' are not defined" +msgstr "uyarý: `%s' dinamik sembolünün türü ve boyu tanýmlý deðil" + +#: elflink.h:4329 +#, c-format +msgid "%s: undefined versioned symbol name %s" +msgstr "%s: sürümlü sembol ismi %s tanýmlý deðil" + +#: elflink.h:4559 elflink.h:4567 elflink.h:6218 elflink.h:7295 +msgid "Error: out of memory" +msgstr "Hata: bellek tükendi" + +#: elflink.h:4729 +msgid "Not enough memory to sort relocations" +msgstr "Yerdeðiþimleri sýralamak için gerekli bellek yok" + +#: elflink.h:5995 +#, c-format +msgid "%s: could not find output section %s for input section %s" +msgstr "%1$s: girdi bölümü %3$s için çýktý bölümü %2$s bulunamadý" + +#: elflink.h:6568 +msgid "warning: relocation against removed section; zeroing" +msgstr "uyarý: silinmiþ bölüme yer deðiþim; sýfýrlandý" + +#: elflink.h:6598 +msgid "warning: relocation against removed section" +msgstr "%1$s: silinmiþ bölüme yerdeðiþim" + +#: elflink.h:6611 +#, c-format +msgid "local symbols in discarded section %s" +msgstr "atýlmýþ %s bölümünde yerel semboller" + +#: i386linux.c:455 m68klinux.c:459 sparclinux.c:456 +#, c-format +msgid "Output file requires shared library `%s'\n" +msgstr "Çýktý dosyasý için paylaþýmlý kitaplýk `%s' gerekli\n" + +#: i386linux.c:463 m68klinux.c:467 sparclinux.c:464 +#, c-format +msgid "Output file requires shared library `%s.so.%s'\n" +msgstr "Çýktý dosyasý için paylaþýmlý kitaplýk `%s.so.%s' gerekli\n" + +#: i386linux.c:653 i386linux.c:703 m68klinux.c:660 m68klinux.c:708 +#: sparclinux.c:655 sparclinux.c:705 +#, c-format +msgid "Symbol %s not defined for fixups\n" +msgstr "%s sembolü düzeltmeler için tanýmlý deðil\n" + +#: i386linux.c:727 m68klinux.c:732 sparclinux.c:729 +msgid "Warning: fixup count mismatch\n" +msgstr "Uyarý: düzeltme sayý uyumsuzluðu\n" + +#: ieee.c:235 +#, c-format +msgid "%s: string too long (%d chars, max 65535)" +msgstr "%s: dizge fazla uzun (%d karakter, en fazla 65535)" + +#: ieee.c:365 +#, c-format +msgid "%s: unrecognized symbol `%s' flags 0x%x" +msgstr "%s: bilinmeyen `%s' sembol bayraklarý 0x%x" + +#: ieee.c:877 +#, c-format +msgid "%s: unimplemented ATI record %u for symbol %u" +msgstr "%1$s: %3$u için desteklenmeyen ATI kaydý %2$u" + +#: ieee.c:902 +#, c-format +msgid "%s: unexpected ATN type %d in external part" +msgstr "%s: dýþ parçada beklenmeyen ATN türü %d" + +#: ieee.c:924 +#, c-format +msgid "%s: unexpected type after ATN" +msgstr "%s: ATN'den sonra beklenmeyen tür" + +#: ihex.c:258 +#, c-format +msgid "%s:%d: unexpected character `%s' in Intel Hex file\n" +msgstr "%s:%d: Intel Onaltýlýk dosyasýnda beklenmeyen `%s' karakteri\n" + +#: ihex.c:368 +#, c-format +msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)" +msgstr "" +"%s:%u: Intel Onaltýlýk dosyasýnda hatalý saðlama toplamý\n" +" (%u beklendi, %u bulundu)" + +#: ihex.c:422 +#, c-format +msgid "%s:%u: bad extended address record length in Intel Hex file" +msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun adres kaydý uzunluðu" + +#: ihex.c:439 +#, c-format +msgid "%s:%u: bad extended start address length in Intel Hex file" +msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun baþlangýç adresi uzunluðu" + +#: ihex.c:456 +#, c-format +msgid "%s:%u: bad extended linear address record length in Intel Hex file" +msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun lineer adres kaydý uzunluðu" + +#: ihex.c:473 +#, c-format +msgid "%s:%u: bad extended linear start address length in Intel Hex file" +msgstr "%s:%u: Intel Onaltýlýk dosyasýnda hatalý uzun lineer baþlangýç adres uzunluðu" + +#: ihex.c:490 +#, c-format +msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n" +msgstr "%s:%u: Intel Onaltýlýk dosyasýnda bilinmeyen onaltýlýk türü %u\n" + +#: ihex.c:610 +#, c-format +msgid "%s: internal error in ihex_read_section" +msgstr "%s: ihex_read_section'da iç hata" + +#: ihex.c:645 +#, c-format +msgid "%s: bad section length in ihex_read_section" +msgstr "%s: ihex_read_section'da hatalý bölüm uzunluðu" + +#: ihex.c:863 +#, c-format +msgid "%s: address 0x%s out of range for Intex Hex file" +msgstr "%s: Intex Onaltýlýk dosyasý için 0x%s adresi kapsamdýþý" + +#: libbfd.c:492 +#, c-format +msgid "not mapping: data=%lx mapped=%d\n" +msgstr "eþlenmeyen: veri=%lx eþleþen=%d\n" + +#: libbfd.c:495 +msgid "not mapping: env var not set\n" +msgstr "eþlenmeyen: çevre deðiþkeni atanmamýþ\n" + +#: libbfd.c:1463 +#, c-format +msgid "Deprecated %s called" +msgstr "Geçerliliði kalkmýþ %s çaðrýldý" + +#: libbfd.c:1465 +#, c-format +msgid " at %s line %d in %s\n" +msgstr "%s, %d satýrý, %s içerisinde\n" + +#: linker.c:1849 +#, c-format +msgid "%s: indirect symbol `%s' to `%s' is a loop" +msgstr "%1$s: `%3$s'den endirekt sembol `%2$s'e çevrim" + +#: linker.c:2745 +#, c-format +msgid "Attempt to do relocateable link with %s input and %s output" +msgstr "%s girdi ve %s çýktýsý ile yerdeðiþimli bað deneniyor" + +#: merge.c:897 +#, c-format +msgid "%s: access beyond end of merged section (%ld + %ld)" +msgstr "%s: karýþtýrýlmýþ bölümün sonundan ileride eriþim (%ld + %ld)" + +#: mmo.c:460 +#, c-format +msgid "%s: No core to allocate section name %s\n" +msgstr "%s: %s bölüm adýný ayýracak `core' yok\n" + +#: mmo.c:537 +#, c-format +msgid "%s: No core to allocate a symbol %d bytes long\n" +msgstr "%s: %d bayt uzunluðunda bir sembole yer ayýrmak için `core' yok\n" + +#: mmo.c:1190 +#, c-format +msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n" +msgstr "%s: geçersiz mmo dosyasý: $255 için baþlangýç deðeri `Main' deðil\n" + +#: mmo.c:1336 +#, c-format +msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n" +msgstr "" +"%1$s: `%4$s' ile baþlayan sembol adýndan sonra desteklenmeyen\n" +" geniþ karakter dizisi 0x%2$02X 0x%3$02X\n" + +#: mmo.c:1571 +#, c-format +msgid "%s: invalid mmo file: unsupported lopcode `%d'\n" +msgstr "%s: geçersiz mmo dosyasý: desteklenmeyen lopkod `%d'\n" + +#: mmo.c:1581 +#, c-format +msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n" +msgstr "%s: geçersiz mmo dosyasý: YZ = 1 beklendi, lop_quote için YZ = %d bulundu\n" + +#: mmo.c:1617 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n" +msgstr "" +"%s: geçersiz mmo dosyasý: z = 1 veya z = 2 beklendi, \n" +" lop_loc için z = %d bulundu\n" + +#: mmo.c:1663 +#, c-format +msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n" +msgstr "%s: geçersiz mmo dosyasý: z = 1 veya z = 2 beklendi; lop_fixo için z = %d bulundu\n" + +#: mmo.c:1702 +#, c-format +msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n" +msgstr "%s: geçersiz mmo dosyasý: y = 0 beklendi; lop_fixrx için y = %d bulundu\n" + +#: mmo.c:1711 +#, c-format +msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n" +msgstr "" +"%s: geçersiz mmo dosyasý: z = 16 veya z = 24 beklendi;\n" +" lop_fixrx için z = %d bulundu\n" + +#: mmo.c:1734 +#, c-format +msgid "%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n" +msgstr "" +"%s: geçersiz mmo dosyasý: iþlenen word'un ilk baytý 0 veya 1 olmalý; \n" +" lop_fixrx için %d bulundu\n" + +#: mmo.c:1757 +#, c-format +msgid "%s: cannot allocate file name for file number %d, %d bytes\n" +msgstr "%s: %d sayýlý dosya için dosya adý ayrýlamadý, %d bayt\n" + +#: mmo.c:1777 +#, c-format +msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n" +msgstr "%s: geçersiz mmo dosyasý: %d sayýlý dosya, `%s', zaten `%s' olarak girilmiþ\n" + +#: mmo.c:1790 +#, c-format +msgid "%s: invalid mmo file: file name for number %d was not specified before use\n" +msgstr "" +"%s: geçersiz mmo dosyasý: %d sayýsý için dosya adý kullanýmdan\n" +" önce belirtilmemiþ\n" + +#: mmo.c:1896 +#, c-format +msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n" +msgstr "" +"%s: geçersiz mmo dosyasý: lop_stab'in y ve z alanlarý sýfýr deðil;\n" +" y: %d, z: %d\n" + +#: mmo.c:1932 +#, c-format +msgid "%s: invalid mmo file: lop_end not last item in file\n" +msgstr "%s: geçersiz mmo dosyasý: lop_end dosyadaki son girdi deðil\n" + +#: mmo.c:1945 +#, c-format +msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n" +msgstr "" +"%s: geçersiz mmo dosyasý: lop_end'in YZ'si (%ld); bir önceki \n" +" lop_stab'in (%ld) dörtlü sayýsýna eþit deðil\n" + +#: mmo.c:2610 +#, c-format +msgid "%s: invalid symbol table: duplicate symbol `%s'\n" +msgstr "%s: geçersiz sembol tablosu: tekrarlanmýþ sembol `%s'\n" + +#: mmo.c:2898 +#, c-format +msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n" +msgstr "" +"%1$s: Hatalý sembol tanýmý: `Main' baþlangýç adresi %3$s yerine \n" +" %2$s olarak tanýmlanmýþ\n" + +#: mmo.c:2932 +#, c-format +msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d. Only `Main' will be emitted.\n" +msgstr "" +"%s: uyarý: sembol tablosu mmo için fazla büyük, 65535 32-bit word'den\n" +" fazla: %d. Yalnýz `Main' üretilecek. \n" + +#: mmo.c:2977 +#, c-format +msgid "%s: internal error, symbol table changed size from %d to %d words\n" +msgstr "%s: iç hata, sembol tablosu büyüklüðü %d'den %d word'e deðiþti\n" + +#: mmo.c:3032 +#, c-format +msgid "%s: internal error, internal register section %s had contents\n" +msgstr "%s: iç hata, %s iç yazmaç bölümü içerik taþýyor\n" + +#: mmo.c:3084 +#, c-format +msgid "%s: no initialized registers; section length 0\n" +msgstr "%s: ilklenen yazmaç yok; bölüm uzunluðu 0\n" + +#: mmo.c:3090 +#, c-format +msgid "%s: too many initialized registers; section length %ld\n" +msgstr "%s: çok fazla ilklenmiþ yazmaç; bölüm uzunluðu %ld\n" + +#: mmo.c:3095 +#, c-format +msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n" +msgstr "%s: %ld uzunluðunda ilklenmiþ yazmaçlar için hatalý baþlangýç adresi: 0x%lx%08lx\n" + +#: oasys.c:1036 +#, c-format +msgid "%s: can not represent section `%s' in oasys" +msgstr "%s: oasys'de `%s' bölümü gösterilemiyor" + +#: osf-core.c:132 +#, c-format +msgid "Unhandled OSF/1 core file section type %d\n" +msgstr "Desteklenmeyen OSF/1 core dosyasý bölüm türü %d\n" + +#: pe-mips.c:658 +#, c-format +msgid "%s: `ld -r' not supported with PE MIPS objects\n" +msgstr "%s: `ld -r' PE MIPS nesneleri ile birlikte desteklenmiyor\n" + +#. OK, at this point the following variables are set up: +#. src = VMA of the memory we're fixing up +#. mem = pointer to memory we're fixing up +#. val = VMA of what we need to refer to +#. +#: pe-mips.c:794 +#, c-format +msgid "%s: unimplemented %s\n" +msgstr "%s: tamamlanmamýþ %s\n" + +#: pe-mips.c:820 +#, c-format +msgid "%s: jump too far away\n" +msgstr "%s: sýçrama fazla uzak\n" + +#: pe-mips.c:847 +#, c-format +msgid "%s: bad pair/reflo after refhi\n" +msgstr "%s: refhi'den sonra hatalý çift/reflo\n" + +#. XXX code yet to be written. +#: peicode.h:785 +#, c-format +msgid "%s: Unhandled import type; %x" +msgstr "%s: Desteklenmeyen ithal türü; %x" + +#: peicode.h:790 +#, c-format +msgid "%s: Unrecognised import type; %x" +msgstr "%s: Tanýnmayan ithal türü; %x" + +#: peicode.h:804 +#, c-format +msgid "%s: Unrecognised import name type; %x" +msgstr "%s: Tanýnmayan ithal isim türü; %x" + +#: peicode.h:1162 +#, c-format +msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive" +msgstr "%s: Ýthal Kitaplýk Biçem (ILF) arþivinde tanýnmayan makina türü (0x%x) " + +#: peicode.h:1174 +#, c-format +msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive" +msgstr "%s: Ýthal Kitaplýk Biçem (ILF) arþivinde bilinen fakat desteklenmeyen makina türü (0x%x)" + +#: peicode.h:1191 +#, c-format +msgid "%s: size field is zero in Import Library Format header" +msgstr "%s: Ýthal Kitaplýk Biçem (ILF) baþlýðýnda boy alaný sýfýr" + +#: peicode.h:1219 +#, c-format +msgid "%s: string not null terminated in ILF object file." +msgstr "%s: ILF nesne dosyasýnda dizge boþ deðerle sonlanmamýþ." + +#: ppcboot.c:416 +msgid "\nppcboot header:\n" +msgstr "\nppcboot baþlýðý:\n" + +#: ppcboot.c:417 +#, c-format +msgid "Entry offset = 0x%.8lx (%ld)\n" +msgstr "Girdi göreli konumu = 0x%.8lx (%ld)\n" + +#: ppcboot.c:418 +#, c-format +msgid "Length = 0x%.8lx (%ld)\n" +msgstr "Uzunluk = 0x%.8lx (%ld)\n" + +#: ppcboot.c:421 +#, c-format +msgid "Flag field = 0x%.2x\n" +msgstr "Bayrak alaný = 0x%.2x\n" + +#: ppcboot.c:427 +#, c-format +msgid "Partition name = \"%s\"\n" +msgstr "Bölüm adý = \"%s\"\n" + +#: ppcboot.c:446 +#, c-format +msgid "\nPartition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "\nBölüm[%d] baþlangýcý = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:452 +#, c-format +msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" +msgstr "Bölüm[%d] sonu = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n" + +#: ppcboot.c:458 +#, c-format +msgid "Partition[%d] sector = 0x%.8lx (%ld)\n" +msgstr "Bölüm[%d] sektörü = 0x%.8lx (%ld)\n" + +#: ppcboot.c:459 +#, c-format +msgid "Partition[%d] length = 0x%.8lx (%ld)\n" +msgstr "Bölüm[%d] uzunluðu = 0x%.8lx (%ld)\n" + +#: som.c:5402 +msgid "som_sizeof_headers unimplemented" +msgstr "som_sizeof_headers tamamlanmamýþ" + +#: srec.c:301 +#, c-format +msgid "%s:%d: Unexpected character `%s' in S-record file\n" +msgstr "%s:%d: S-kayýt dosyasýnda beklenmeyen `%s' karakteri\n" + +#: syms.c:996 +msgid "Unsupported .stab relocation" +msgstr "Desteklenmeyen .stab yerdeðiþimi" + +#: vms-gsd.c:356 +#, c-format +msgid "bfd_make_section (%s) failed" +msgstr "bfd_make_section (%s) baþarýsýz" + +#: vms-gsd.c:371 +#, c-format +msgid "bfd_set_section_flags (%s, %x) failed" +msgstr "bfd_set_section_flags (%s, %x) baþarýsýz" + +#: vms-gsd.c:407 +#, c-format +msgid "Size mismatch section %s=%lx, %s=%lx" +msgstr "Boy uyumsuzluðu bölümü %s=%lx, %s=%lx" + +#: vms-gsd.c:704 +#, c-format +msgid "unknown gsd/egsd subtype %d" +msgstr "bilinmeyen gsd/egsd alt türü %d" + +#: vms-hdr.c:406 +msgid "Object module NOT error-free !\n" +msgstr "Nesne modülü hatasýz DEÐÝL !\n" + +#: vms-misc.c:543 +#, c-format +msgid "Stack overflow (%d) in _bfd_vms_push" +msgstr "_bfd_vms_push'da yýðýt taþmasý (%d)" + +#: vms-misc.c:561 +msgid "Stack underflow in _bfd_vms_pop" +msgstr "_bfd_vms_pop'da yýðýt alt taþmasý" + +#: vms-misc.c:919 +msgid "_bfd_vms_output_counted called with zero bytes" +msgstr "_bfd_vms_output_counted sýfýr bayt ile çaðrýldý" + +#: vms-misc.c:924 +msgid "_bfd_vms_output_counted called with too many bytes" +msgstr "_bfd_vms_output_counted fazla bayt ile çaðrýldý" + +#: vms-misc.c:1055 +#, c-format +msgid "Symbol %s replaced by %s\n" +msgstr "%s sembolü %s ile deðiþtirildi\n" + +#: vms-misc.c:1117 +#, c-format +msgid "failed to enter %s" +msgstr "%s'e giriþ baþarýsýz" + +#: vms-tir.c:78 +msgid "No Mem !" +msgstr "Hafýza Yok !" + +#: vms-tir.c:313 +msgid "Bad section index in ETIR_S_C_STA_PQ" +msgstr "ETIR_S_C_STA_PQ'de hatalý bölüm indeksi" + +#: vms-tir.c:328 +#, c-format +msgid "Unsupported STA cmd %d" +msgstr "Desteklenmeyen STA komutu %d" + +#: vms-tir.c:333 vms-tir.c:1301 +#, c-format +msgid "Reserved STA cmd %d" +msgstr "Ayrýlmýþ STA komutu %d" + +#: vms-tir.c:443 +#, c-format +msgid "ETIR_S_C_STO_GBL: no symbol \"%s\"" +msgstr "ETIR_S_C_STO_GBL: sembol yok \"%s\"" + +#: vms-tir.c:465 +#, c-format +msgid "ETIR_S_C_STO_CA: no symbol \"%s\"" +msgstr "ETIR_S_C_STO_CA: sembol yok \"%s\"" + +#: vms-tir.c:478 +msgid "ETIR_S_C_STO_RB/AB: Not supported" +msgstr "ETIR_S_C_STO_RB/AB: Desteklenmiyor" + +#: vms-tir.c:538 +msgid "ETIR_S_C_STO_LP_PSB: Not supported" +msgstr "ETIR_S_C_STO_LP_PSB: Desteklenmiyor" + +#: vms-tir.c:544 +msgid "ETIR_S_C_STO_HINT_GBL: not implemented" +msgstr "ETIR_S_C_STO_HINT_GBL: tamamlanmamýþ" + +#: vms-tir.c:550 +msgid "ETIR_S_C_STO_HINT_PS: not implemented" +msgstr "ETIR_S_C_STO_HINT_PS: tamamlanmamýþ" + +#: vms-tir.c:554 vms-tir.c:1473 +#, c-format +msgid "Reserved STO cmd %d" +msgstr "Ayrýlmýþ STO komutu %d" + +#: vms-tir.c:667 +msgid "ETIR_S_C_OPR_INSV: Not supported" +msgstr "ETIR_S_C_OPR_INSV: Desteklenmiyor" + +#: vms-tir.c:685 +msgid "ETIR_S_C_OPR_USH: Not supported" +msgstr "ETIR_S_C_OPR_USH: Desteklenmiyor" + +#: vms-tir.c:691 +msgid "ETIR_S_C_OPR_ROT: Not supported" +msgstr "ETIR_S_C_OPR_ROT: Desteklenmiyor" + +#: vms-tir.c:710 +msgid "ETIR_S_C_OPR_REDEF: Not supported" +msgstr "ETIR_S_C_OPR_REDEF: Desteklenmiyor" + +#: vms-tir.c:716 +msgid "ETIR_S_C_OPR_DFLIT: Not supported" +msgstr "ETIR_S_C_OPR_DFLIT: Desteklenmiyor" + +#: vms-tir.c:720 vms-tir.c:1668 +#, c-format +msgid "Reserved OPR cmd %d" +msgstr "Ayrýlmýþ OPR komutu %d" + +#: vms-tir.c:788 vms-tir.c:1737 +#, c-format +msgid "Reserved CTL cmd %d" +msgstr "Ayrýlmýþ CTL komutu %d" + +#: vms-tir.c:816 +msgid "ETIR_S_C_STC_LP: not supported" +msgstr "ETIR_S_C_STC_LP: desteklenmiyor" + +#: vms-tir.c:834 +msgid "ETIR_S_C_STC_GBL: not supported" +msgstr "ETIR_S_C_STC_GBL: desteklenmiyor" + +#: vms-tir.c:842 +msgid "ETIR_S_C_STC_GCA: not supported" +msgstr "ETIR_S_C_STC_GCA: desteklenmiyor" + +#: vms-tir.c:851 +msgid "ETIR_S_C_STC_PS: not supported" +msgstr "ETIR_S_C_STC_PS: desteklenmiyor" + +#. +#. * stack byte from image +#. * arg: - +#. * +#. +#: vms-tir.c:1199 +msgid "Stack-from-image not implemented" +msgstr "Görüntüden-yýðýt tamamlanmamýþ" + +#: vms-tir.c:1219 +msgid "Stack-entry-mask not fully implemented" +msgstr "Yýðýn girdi maský tamamlanmamýþ" + +#. +#. * compare procedure argument +#. * arg: cs symbol name +#. * by argument index +#. * da argument descriptor +#. * +#. * compare argument descriptor with symbol argument (ARG$V_PASSMECH) +#. * and stack TRUE (args match) or FALSE (args dont match) value +#. +#: vms-tir.c:1235 +msgid "PASSMECH not fully implemented" +msgstr "PASSMECH tamamlanmamýþ" + +#: vms-tir.c:1256 +msgid "Stack-local-symbol not fully implemented" +msgstr "Yerel sembol yýðýtý tamamlanmamýþ" + +#: vms-tir.c:1271 +msgid "Stack-literal not fully implemented" +msgstr "Yýðýt sabiti tamamlanmamýþ" + +#: vms-tir.c:1294 +msgid "Stack-local-symbol-entry-point-mask not fully implemented" +msgstr "Yýðýn yerel sembol girdi nokta maský tamamlanmamýþ" + +#: vms-tir.c:1469 +#, c-format +msgid "Unimplemented STO cmd %d" +msgstr "Tamamlanmamýþ STO komutu %d" + +#: vms-tir.c:1608 +msgid "TIR_S_C_OPR_ASH incomplete" +msgstr "TIR_S_C_OPR_ASH tamamlanmamýþ" + +#: vms-tir.c:1622 +msgid "TIR_S_C_OPR_USH incomplete" +msgstr "TIR_S_C_OPR_USH tamamlanmamýþ" + +#: vms-tir.c:1636 +msgid "TIR_S_C_OPR_ROT incomplete" +msgstr "TIR_S_C_OPR_ROT tamamlanmamýþ" + +#. +#. * redefine symbol to current location +#. +#: vms-tir.c:1657 +msgid "TIR_S_C_OPR_REDEF not supported" +msgstr "TIR_S_C_OPR_REDEF desteklenmiyor" + +#. +#. * define a literal +#. +#: vms-tir.c:1664 +msgid "TIR_S_C_OPR_DFLIT not supported" +msgstr "TIR_S_C_OPR_DFLIT desteklenmiyor" + +#: vms-tir.c:1718 +msgid "TIR_S_C_CTL_DFLOC not fully implemented" +msgstr "TIR_S_C_CTL_DFLOC tamamlanmamýþ" + +#: vms-tir.c:1726 +msgid "TIR_S_C_CTL_STLOC not fully implemented" +msgstr "TIR_S_C_CTL_STLOC tamamlanmamýþ" + +#: vms-tir.c:1734 +msgid "TIR_S_C_CTL_STKDL not fully implemented" +msgstr "TIR_S_C_CTL_STKDL tamamlanmamýþ" + +#: vms-tir.c:1791 +#, c-format +msgid "Obj code %d not found" +msgstr "Nesne kodu %d bulunmadý" + +#: vms-tir.c:2137 +#, c-format +msgid "SEC_RELOC with no relocs in section %s" +msgstr "%s bölümünde yerdeðiþim olmaksýzýn SEC_RELOC" + +#: vms-tir.c:2424 +#, c-format +msgid "Unhandled relocation %s" +msgstr "Desteklenmeyen yerdeðiþim %s" + +#: xcofflink.c:1241 +#, c-format +msgid "%s: `%s' has line numbers but no enclosing section" +msgstr "%s: `%s' satýr numaralarýna sahip fakat onu içeren bölümü yok" + +#: xcofflink.c:1294 +#, c-format +msgid "%s: class %d symbol `%s' has no aux entries" +msgstr "%s: sýnýf %d sembol `%s'un alternatif girdileri yok" + +#: xcofflink.c:1317 +#, c-format +msgid "%s: symbol `%s' has unrecognized csect type %d" +msgstr "%s: `%s' sembolünde bilinmeyen csect türü %d var" + +#: xcofflink.c:1329 +#, c-format +msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d" +msgstr "%s: hatalý XTY_ER sembolü `%s': sýnýf %d scnum %d scnlen %d" + +#: xcofflink.c:1365 +#, c-format +msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d" +msgstr "%s: XMC_TC0 sembolü `%s': sýnýf %d scnlen %d" + +#: xcofflink.c:1517 +#, c-format +msgid "%s: csect `%s' not in enclosing section" +msgstr "%s: csect `%s' onu içeren bölümde deðil" + +#: xcofflink.c:1624 +#, c-format +msgid "%s: misplaced XTY_LD `%s'" +msgstr "%s: XTY_LD `%s'yanlýþ yerde" + +#: xcofflink.c:1948 +#, c-format +msgid "%s: reloc %s:%d not in csect" +msgstr "%s: yerdeðiþim %s:%d csect içinde deðil" + +#: xcofflink.c:2083 +#, c-format +msgid "%s: XCOFF shared object when not producing XCOFF output" +msgstr "%s: XCOFF çýktýsý oluþturulmazken XCOFF paylaþýmlý nesnesi" + +#: xcofflink.c:2104 +#, c-format +msgid "%s: dynamic object with no .loader section" +msgstr "%s: .loader bölümü olmayan dinamik nesne" + +#: xcofflink.c:2749 +#, c-format +msgid "%s: no such symbol" +msgstr "%s: böyle bir sembol yok" + +#: xcofflink.c:2890 +msgid "error: undefined symbol __rtinit" +msgstr "hata: tanýmlanmamýþ sembol __rtinit" + +#: xcofflink.c:3458 +#, c-format +msgid "warning: attempt to export undefined symbol `%s'" +msgstr "uyarý: tanýmlanmamýþ `%s' sembolünü ihraç denemesi" + +#: xcofflink.c:4452 +#, c-format +msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling" +msgstr "TOC taþmasý: 0x%lx > 0x10000; -mminimal-toc ile derlemeyi deneyin" + +#: xcofflink.c:5292 xcofflink.c:5754 xcofflink.c:5816 xcofflink.c:6117 +#, c-format +msgid "%s: loader reloc in unrecognized section `%s'" +msgstr "%s: bilinmeyen `%s' bölümünde yükleyici yerdeðiþimi" + +#: xcofflink.c:5314 xcofflink.c:6128 +#, c-format +msgid "%s: `%s' in loader reloc but not loader sym" +msgstr "%s: `%s' yükleyici yerdeðiþiminde fakat yükleyici sembolü deðil" + +#: xcofflink.c:5329 +#, c-format +msgid "%s: loader reloc in read-only section %s" +msgstr "%s: %s salt-okunur bölümünde yükleyici yerdeðiþimi" + +#: elf32-ia64.c:2190 elf64-ia64.c:2190 +msgid "@pltoff reloc against local symbol" +msgstr "yerel sembole @pltoff yerdegisimi" + +#: elf32-ia64.c:2248 elf64-ia64.c:2248 +msgid "non-zero addend in @fptr reloc" +msgstr "@fptr yerdeðiþiminde sýfýr olmayan eklenti" + +#: elf32-ia64.c:3414 elf64-ia64.c:3414 +#, c-format +msgid "%s: short data segment overflowed (0x%lx >= 0x400000)" +msgstr "%s: kýsa veri bölümünde taþma (0x%lx >= 0x400000)" + +#: elf32-ia64.c:3425 elf64-ia64.c:3425 +#, c-format +msgid "%s: __gp does not cover short data segment" +msgstr "%s: __gp kýsa veri bölümünü kapsamýyor" + +#: elf32-ia64.c:3729 elf64-ia64.c:3729 +#, c-format +msgid "%s: linking non-pic code in a shared library" +msgstr "%s: pic olmayan kod paylaþmalý kitaplýkta baðlanýyor" + +#: elf32-ia64.c:3762 elf64-ia64.c:3762 +#, c-format +msgid "%s: @gprel relocation against dynamic symbol %s" +msgstr "%s: %s dinamik sembolüne @gprel yerdeðiþimi" + +#: elf32-ia64.c:3901 elf64-ia64.c:3901 +#, c-format +msgid "%s: dynamic relocation against speculation fixup" +msgstr "%s: kuþkulu düzeltmeye dinamik yerdeðiþim" + +#: elf32-ia64.c:3909 elf64-ia64.c:3909 +#, c-format +msgid "%s: speculation fixup against undefined weak symbol" +msgstr "%s: tanýmlanmamýþ gevþek sembole tartýþmalý düzeltme" + +#: elf32-ia64.c:4093 elf64-ia64.c:4093 +msgid "unsupported reloc" +msgstr "desteklenmeyen yerdeðiþim" + +#: elf32-ia64.c:4373 elf64-ia64.c:4373 +#, c-format +msgid "%s: linking trap-on-NULL-dereference with non-trapping files" +msgstr "%s: NULL-halinde-tuzakla karþý-baþvurusu tuzaklamayan dosyalarla baðlandý" + +#: elf32-ia64.c:4382 elf64-ia64.c:4382 +#, c-format +msgid "%s: linking big-endian files with little-endian files" +msgstr "%s: büyük sonlu dosyalar küçük sonlu dosyalarla baðlanýyor" + +#: elf32-ia64.c:4391 elf64-ia64.c:4391 +#, c-format +msgid "%s: linking 64-bit files with 32-bit files" +msgstr "%s: 64 bitlik dosyalar 32 bitlik dosyalarla baðlanýyor" + +#: elf32-ia64.c:4400 elf64-ia64.c:4400 +#, c-format +msgid "%s: linking constant-gp files with non-constant-gp files" +msgstr "%s: constant-gp dosyalarý constant-gp olmayan dosyalarla baðlanýyor" + +#: elf32-ia64.c:4410 elf64-ia64.c:4410 +#, c-format +msgid "%s: linking auto-pic files with non-auto-pic files" +msgstr "%s: auto-pic dosyalarý auto-pic olmayan dosyalarla baðlanýyor" + +#: peigen.c:964 pepigen.c:964 +#, c-format +msgid "%s: line number overflow: 0x%lx > 0xffff" +msgstr "%s: satýr numarasý taþmasý: 0x%lx > 0xffff" + +#: peigen.c:981 pepigen.c:981 +#, c-format +msgid "%s: reloc overflow 1: 0x%lx > 0xffff" +msgstr "%s: yerdeðiþim taþmasý 1: 0x%lx > 0xffff" + +#: peigen.c:995 pepigen.c:995 +msgid "Export Directory [.edata (or where ever we found it)]" +msgstr "Ýhraç Dizini [.edata (veya nerede bulundu ise)]" + +#: peigen.c:996 pepigen.c:996 +msgid "Import Directory [parts of .idata]" +msgstr "Ýthal Dizini [.idata'nýn parçalarý]" + +#: peigen.c:997 pepigen.c:997 +msgid "Resource Directory [.rsrc]" +msgstr "Kaynak Dizini [.rsrc]" + +#: peigen.c:998 pepigen.c:998 +msgid "Exception Directory [.pdata]" +msgstr "Ýstisna Dizini [.pdata]" + +#: peigen.c:999 pepigen.c:999 +msgid "Security Directory" +msgstr "Güvenlik Dizini" + +#: peigen.c:1000 pepigen.c:1000 +msgid "Base Relocation Directory [.reloc]" +msgstr "Temel Yerdeðiþim Dizini [.reloc]" + +#: peigen.c:1001 pepigen.c:1001 +msgid "Debug Directory" +msgstr "Hata Ayýklama Dizini" + +#: peigen.c:1002 pepigen.c:1002 +msgid "Description Directory" +msgstr "Açýklama Dizini" + +#: peigen.c:1003 pepigen.c:1003 +msgid "Special Directory" +msgstr "Özel Dizin" + +#: peigen.c:1004 pepigen.c:1004 +msgid "Thread Storage Directory [.tls]" +msgstr "Dal Saklama Dizini [.tls]" + +#: peigen.c:1005 pepigen.c:1005 +msgid "Load Configuration Directory" +msgstr "Ayar Yükleme Dizini" + +#: peigen.c:1006 pepigen.c:1006 +msgid "Bound Import Directory" +msgstr "Sýnýr Ýthal Dizini" + +#: peigen.c:1007 pepigen.c:1007 +msgid "Import Address Table Directory" +msgstr "Adres Tablosu Ýthal Dizini" + +#: peigen.c:1008 pepigen.c:1008 +msgid "Delay Import Directory" +msgstr "Gecikmeli Ýthal Dizini" + +#: peigen.c:1009 peigen.c:1010 pepigen.c:1009 pepigen.c:1010 +msgid "Reserved" +msgstr "Ayrýlmýþ" + +#: peigen.c:1073 pepigen.c:1073 +msgid "\nThere is an import table, but the section containing it could not be found\n" +msgstr "\nBir ithal tablosu var, fakat onu içeren bölüm bulunamadý\n" + +#: peigen.c:1078 pepigen.c:1078 +#, c-format +msgid "\nThere is an import table in %s at 0x%lx\n" +msgstr "\n%s içerisinde 0x%lx'de bir ithal tablosu var\n" + +#: peigen.c:1115 pepigen.c:1115 +#, c-format +msgid "\nFunction descriptor located at the start address: %04lx\n" +msgstr "\nBaþlangýç adresinde iþlev betimleyicisi bulundu: %04lx\n" + +#: peigen.c:1118 pepigen.c:1118 +#, c-format +msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n" +msgstr "\tkod temeli %08lx toc (yüklenebilir/gerçek) %08lx/%08lx\n" + +#: peigen.c:1124 pepigen.c:1124 +msgid "\nNo reldata section! Function descriptor not decoded.\n" +msgstr "\nReldata bölümü yok! Ýþlev betimleyicisi çözümlenemedi.\n" + +#: peigen.c:1129 pepigen.c:1129 +#, c-format +msgid "\nThe Import Tables (interpreted %s section contents)\n" +msgstr "\nÝthal Tablolarý (%s bölüm içeriði çözümlendi)\n" + +#: peigen.c:1132 pepigen.c:1132 +msgid " vma: Hint Time Forward DLL First\n" +msgstr " vma: Ýpucu Zaman Ýleri DLL Ýlk\n" + +#: peigen.c:1134 pepigen.c:1134 +msgid " Table Stamp Chain Name Thunk\n" +msgstr " Tablo Damga Zincir Ýsim Parça\n" + +#: peigen.c:1182 pepigen.c:1182 +#, c-format +msgid "\n\tDLL Name: %s\n" +msgstr "\n\tDLL Adý: %s\n" + +#: peigen.c:1186 peigen.c:1249 pepigen.c:1186 pepigen.c:1249 +msgid "\tvma: Hint/Ord Member-Name\n" +msgstr "\tvma: Ýpucu/Sýra Üye-Adý\n" + +#: peigen.c:1248 pepigen.c:1248 +msgid "\tThe Import Address Table (difference found)\n" +msgstr "\tÝthal Adres Tablosu (fark bulundu)\n" + +#: peigen.c:1255 pepigen.c:1255 +msgid "\t>>> Ran out of IAT members!\n" +msgstr "\t>>> IAT üyeleri bitti!\n" + +#: peigen.c:1273 pepigen.c:1273 +msgid "\tThe Import Address Table is identical\n" +msgstr "\tÝthal Adres Tablosu ayný\n" + +#: peigen.c:1345 pepigen.c:1345 +msgid "\nThere is an export table, but the section containing it could not be found\n" +msgstr "\nBir ihraç tablosu var, fakat onu içeren bölüm bulunamadý\n" + +#: peigen.c:1350 pepigen.c:1350 +#, c-format +msgid "\nThere is an export table in %s at 0x%lx\n" +msgstr "\n%s içinde 0x%lx'de bir ihraç tablosu var\n" + +#: peigen.c:1381 pepigen.c:1381 +#, c-format +msgid "\nThe Export Tables (interpreted %s section contents)\n\n" +msgstr "\nÝhraç Tablolarý (%s bölüm içeriði çözümlendi)\n\n" + +#: peigen.c:1385 pepigen.c:1385 +#, c-format +msgid "Export Flags \t\t\t%lx\n" +msgstr "Ýhraç Bayraklarý \t\t\t%lx\n" + +#: peigen.c:1388 pepigen.c:1388 +#, c-format +msgid "Time/Date stamp \t\t%lx\n" +msgstr "Saat/Tarih damgasý \t\t%lx\n" + +#: peigen.c:1391 pepigen.c:1391 +#, c-format +msgid "Major/Minor \t\t\t%d/%d\n" +msgstr "Majör/Minör \t\t\t%d/%d\n" + +#: peigen.c:1394 pepigen.c:1394 +msgid "Name \t\t\t\t" +msgstr "Ýsim \t\t\t\t" + +#: peigen.c:1400 pepigen.c:1400 +#, c-format +msgid "Ordinal Base \t\t\t%ld\n" +msgstr "Onluk Sistem \t\t\t%ld\n" + +#: peigen.c:1403 pepigen.c:1403 +msgid "Number in:\n" +msgstr "Sayý içinde:\n" + +#: peigen.c:1406 pepigen.c:1406 +#, c-format +msgid "\tExport Address Table \t\t%08lx\n" +msgstr "\tÝhraç Adres Tablosu \t\t%08lx\n" + +#: peigen.c:1410 pepigen.c:1410 +#, c-format +msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" +msgstr "\t[Ýsim Gösterge/Onluk] Tablo\t%08lx\n" + +#: peigen.c:1413 pepigen.c:1413 +msgid "Table Addresses\n" +msgstr "Tablo Adresleri\n" + +#: peigen.c:1416 pepigen.c:1416 +msgid "\tExport Address Table \t\t" +msgstr "\tÝhraç Adres Tablosu \t\t" + +#: peigen.c:1421 pepigen.c:1421 +msgid "\tName Pointer Table \t\t" +msgstr "\tÝsim Gösterge Tablosu \t\t" + +#: peigen.c:1426 pepigen.c:1426 +msgid "\tOrdinal Table \t\t\t" +msgstr "\tOnluk Tablo \t\t\t" + +#: peigen.c:1441 pepigen.c:1441 +#, c-format +msgid "\nExport Address Table -- Ordinal Base %ld\n" +msgstr "\nÝhraç Adres Tablosu -- Onluk Sistem %ld\n" + +#: peigen.c:1460 pepigen.c:1460 +msgid "Forwarder RVA" +msgstr "RVA Yönlendiricisi" + +#: peigen.c:1471 pepigen.c:1471 +msgid "Export RVA" +msgstr "RVA Ýhracý" + +#: peigen.c:1478 pepigen.c:1478 +msgid "\n[Ordinal/Name Pointer] Table\n" +msgstr "\n[Onluk/Ýsim Gösterge] Tablosu\n" + +#: peigen.c:1533 pepigen.c:1533 +#, c-format +msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n" +msgstr "Uyarý, .pdata bölüm boyu (%ld) %d'nin katý deðil\n" + +#: peigen.c:1537 pepigen.c:1537 +msgid "\nThe Function Table (interpreted .pdata section contents)\n" +msgstr "\nÝþlev Tablosu (.pdata bölüm içeriði çözümlendi)\n" + +#: peigen.c:1540 pepigen.c:1540 +msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" +msgstr " vma:\t\t\tBaþlangýç Adresi Sonlanma Adresi Geri Al Bilgisi\n" + +#: peigen.c:1543 pepigen.c:1543 +msgid " vma:\t\tBegin End EH EH PrologEnd Exception\n" +msgstr " vma:\t\tBaþl. Son EH EH PrologSon Ýstisna\n" + +#: peigen.c:1545 pepigen.c:1545 +msgid " \t\tAddress Address Handler Data Address Mask\n" +msgstr " \t\tAdres Adres Yön. Veri Adres Mask\n" + +#: peigen.c:1613 pepigen.c:1613 +msgid " Register save millicode" +msgstr " Yazma milikodunu kaydet" + +#: peigen.c:1616 pepigen.c:1616 +msgid " Register restore millicode" +msgstr " Geri alma milikodunu kaydet" + +#: peigen.c:1619 pepigen.c:1619 +msgid " Glue code sequence" +msgstr " Birleþtirici kod dizisi" + +#: peigen.c:1671 pepigen.c:1671 +msgid "\n\nPE File Base Relocations (interpreted .reloc section contents)\n" +msgstr "\n\nPE Dosya Temel Yerdeðiþimi (.reloc bölüm içeriði çözümlendi)\n" + +#: peigen.c:1701 pepigen.c:1701 +#, c-format +msgid "\nVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" +msgstr "\nSanal Adres: %08lx Parça boyu %ld (0x%lx) Düzeltme Sayýsý %ld\n" + +#: peigen.c:1714 pepigen.c:1714 +#, c-format +msgid "\treloc %4d offset %4x [%4lx] %s" +msgstr "\tyer deðiþim %4d göreli konum %4x [%4lx] %s" + +#. The MS dumpbin program reportedly ands with 0xff0f before +#. printing the characteristics field. Not sure why. No reason to +#. emulate it here. +#: peigen.c:1754 pepigen.c:1754 +#, c-format +msgid "\nCharacteristics 0x%x\n" +msgstr "\nÖzellikler 0x%x\n" diff -uprN binutils-2.11.92.0.12.3/bfd/ppcboot.c binutils-2.11.93.0.2/bfd/ppcboot.c --- binutils-2.11.92.0.12.3/bfd/ppcboot.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/ppcboot.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back-end for PPCbug boot records. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Michael Meissner, Cygnus Support, @@ -96,7 +96,6 @@ static boolean ppcboot_get_section_conte static long ppcboot_get_symtab_upper_bound PARAMS ((bfd *)); static char *mangle_name PARAMS ((bfd *, char *)); static long ppcboot_get_symtab PARAMS ((bfd *, asymbol **)); -static asymbol *ppcboot_make_empty_symbol PARAMS ((bfd *)); static void ppcboot_get_symbol_info PARAMS ((bfd *, asymbol *, symbol_info *)); static boolean ppcboot_set_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); @@ -332,17 +331,7 @@ ppcboot_get_symtab (abfd, alocation) return PPCBOOT_SYMS; } - -/* Make an empty symbol. */ - -static asymbol * -ppcboot_make_empty_symbol (abfd) - bfd *abfd; -{ - return (asymbol *) bfd_alloc (abfd, (bfd_size_type) sizeof (asymbol)); -} - - +#define ppcboot_make_empty_symbol _bfd_generic_make_empty_symbol #define ppcboot_print_symbol _bfd_nosymbols_print_symbol /* Get information about a symbol. */ diff -uprN binutils-2.11.92.0.12.3/bfd/ptrace-core.c binutils-2.11.93.0.2/bfd/ptrace-core.c --- binutils-2.11.92.0.12.3/bfd/ptrace-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/ptrace-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD backend for core files which use the ptrace_user structure - Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2001 + Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. The structure of this file is based on trad-core.c written by John Gilmore of Cygnus Support. @@ -89,23 +89,17 @@ ptrace_unix_core_file_p (abfd) rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */ - /* Create the sections. This is raunchy, but bfd_close wants to free - them separately. */ + /* Create the sections. */ - amt = sizeof (asection); - core_stacksec (abfd) = (asection *) bfd_zalloc (abfd, amt); + core_stacksec (abfd) = bfd_make_section_anyway (abfd, ".stack"); if (core_stacksec (abfd) == NULL) - return NULL; - core_datasec (abfd) = (asection *) bfd_zalloc (abfd, amt); + goto fail; + core_datasec (abfd) = bfd_make_section_anyway (abfd, ".data"); if (core_datasec (abfd) == NULL) - return NULL; - core_regsec (abfd) = (asection *) bfd_zalloc (abfd, amt); + goto fail; + core_regsec (abfd) = bfd_make_section_anyway (abfd, ".reg"); if (core_regsec (abfd) == NULL) - return NULL; - - core_stacksec (abfd)->name = ".stack"; - core_datasec (abfd)->name = ".data"; - core_regsec (abfd)->name = ".reg"; + goto fail; /* FIXME: Need to worry about shared memory, library data, and library text. I don't think that any of these things are supported on the @@ -132,12 +126,13 @@ ptrace_unix_core_file_p (abfd) core_datasec (abfd)->alignment_power = 2; core_regsec (abfd)->alignment_power = 2; - abfd->sections = core_stacksec (abfd); - core_stacksec (abfd)->next = core_datasec (abfd); - core_datasec (abfd)->next = core_regsec (abfd); - abfd->section_count = 3; - return abfd->xvec; + + fail: + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); + return NULL; } char * diff -uprN binutils-2.11.92.0.12.3/bfd/reloc.c binutils-2.11.93.0.2/bfd/reloc.c --- binutils-2.11.92.0.12.3/bfd/reloc.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/reloc.c Sun Feb 3 11:22:30 2002 @@ -65,25 +65,25 @@ CODE_FRAGMENT . .typedef enum bfd_reloc_status .{ -. {* No errors detected *} +. {* No errors detected. *} . bfd_reloc_ok, . -. {* The relocation was performed, but there was an overflow. *} +. {* The relocation was performed, but there was an overflow. *} . bfd_reloc_overflow, . -. {* The address to relocate was not within the section supplied. *} +. {* The address to relocate was not within the section supplied. *} . bfd_reloc_outofrange, . -. {* Used by special functions *} +. {* Used by special functions. *} . bfd_reloc_continue, . -. {* Unsupported relocation size requested. *} +. {* Unsupported relocation size requested. *} . bfd_reloc_notsupported, . -. {* Unused *} +. {* Unused. *} . bfd_reloc_other, . -. {* The symbol to relocate against was undefined. *} +. {* The symbol to relocate against was undefined. *} . bfd_reloc_undefined, . . {* The relocation was performed, but may not be ok - presently @@ -97,20 +97,21 @@ CODE_FRAGMENT . .typedef struct reloc_cache_entry .{ -. {* A pointer into the canonical table of pointers *} +. {* A pointer into the canonical table of pointers. *} . struct symbol_cache_entry **sym_ptr_ptr; . -. {* offset in section *} +. {* offset in section. *} . bfd_size_type address; . -. {* addend for relocation value *} +. {* addend for relocation value. *} . bfd_vma addend; . -. {* Pointer to how to perform the required relocation *} +. {* Pointer to how to perform the required relocation. *} . reloc_howto_type *howto; . -.} arelent; - +.} +.arelent; +. */ /* @@ -250,19 +251,19 @@ CODE_FRAGMENT . .enum complain_overflow .{ -. {* Do not complain on overflow. *} +. {* Do not complain on overflow. *} . complain_overflow_dont, . . {* Complain if the bitfield overflows, whether it is considered -. as signed or unsigned. *} +. as signed or unsigned. *} . complain_overflow_bitfield, . . {* Complain if the value overflows when considered as signed -. number. *} +. number. *} . complain_overflow_signed, . . {* Complain if the value overflows when considered as an -. unsigned number. *} +. unsigned number. *} . complain_overflow_unsigned .}; @@ -276,7 +277,7 @@ SUBSUBSECTION information that libbfd needs to know to tie up a back end's data. CODE_FRAGMENT -.struct symbol_cache_entry; {* Forward declaration *} +.struct symbol_cache_entry; {* Forward declaration. *} . .struct reloc_howto_struct .{ @@ -366,7 +367,7 @@ CODE_FRAGMENT . empty (e.g., m88k bcs); this flag signals the fact. *} . boolean pcrel_offset; .}; - +. */ /* @@ -413,7 +414,7 @@ DESCRIPTION . } \ . } \ . } - +. */ /* @@ -457,8 +458,9 @@ DESCRIPTION .{ . arelent relent; . struct relent_chain *next; -.} arelent_chain; - +.} +.arelent_chain; +. */ /* N_ONES produces N one bits, without overflowing machine arithmetic. */ @@ -627,8 +629,8 @@ bfd_perform_relocation (abfd, reloc_entr } /* Is the address of the relocation really within the section? */ - if (reloc_entry->address > input_section->_cooked_size / - bfd_octets_per_byte (abfd)) + if (reloc_entry->address > (input_section->_cooked_size + / bfd_octets_per_byte (abfd))) return bfd_reloc_outofrange; /* Work out which section the relocation is targetted at and the @@ -819,11 +821,9 @@ space consuming. For each target: bfd_arch_bits_per_address (abfd), relocation); - /* - Either we are relocating all the way, or we don't want to apply - the relocation to the reloc entry (probably because there isn't - any room in the output format to describe addends to relocs) - */ + /* Either we are relocating all the way, or we don't want to apply + the relocation to the reloc entry (probably because there isn't + any room in the output format to describe addends to relocs). */ /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler (OSF version 1.3, compiler version 3.11). It miscompiles the @@ -850,11 +850,10 @@ space consuming. For each target: relocation >>= (bfd_vma) howto->rightshift; - /* Shift everything up to where it's going to be used */ - + /* Shift everything up to where it's going to be used. */ relocation <<= (bfd_vma) howto->bitpos; - /* Wait for the day when all have the mask in them */ + /* Wait for the day when all have the mask in them. */ /* What we do: i instruction to be left alone @@ -975,7 +974,6 @@ DESCRIPTION For now, this function should be considered reserved for the assembler. - */ bfd_reloc_status_type @@ -1023,7 +1021,8 @@ bfd_install_relocation (abfd, reloc_entr } /* Is the address of the relocation really within the section? */ - if (reloc_entry->address > input_section->_cooked_size) + if (reloc_entry->address > (input_section->_cooked_size + / bfd_octets_per_byte (abfd))) return bfd_reloc_outofrange; /* Work out which section the relocation is targetted at and the @@ -1104,7 +1103,6 @@ bfd_install_relocation (abfd, reloc_entr If we've relocated with a symbol with a section, change into a ref to the section belonging to the symbol. */ - reloc_entry->address += input_section->output_offset; /* WTF?? */ @@ -1180,8 +1178,7 @@ space consuming. For each target: 6) if the resulting object files are the same, you have at least made it no worse 7) if they are different you have to figure out which version is - right -*/ + right. */ relocation -= reloc_entry->addend; #endif reloc_entry->addend = 0; @@ -1206,11 +1203,9 @@ space consuming. For each target: bfd_arch_bits_per_address (abfd), relocation); - /* - Either we are relocating all the way, or we don't want to apply - the relocation to the reloc entry (probably because there isn't - any room in the output format to describe addends to relocs) - */ + /* Either we are relocating all the way, or we don't want to apply + the relocation to the reloc entry (probably because there isn't + any room in the output format to describe addends to relocs). */ /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler (OSF version 1.3, compiler version 3.11). It miscompiles the @@ -1237,11 +1232,10 @@ space consuming. For each target: relocation >>= (bfd_vma) howto->rightshift; - /* Shift everything up to where it's going to be used */ - + /* Shift everything up to where it's going to be used. */ relocation <<= (bfd_vma) howto->bitpos; - /* Wait for the day when all have the mask in them */ + /* Wait for the day when all have the mask in them. */ /* What we do: i instruction to be left alone @@ -1856,6 +1850,8 @@ ENUMEQX BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL ENUMX + BFD_RELOC_SPARC_PLT32 +ENUMX BFD_RELOC_SPARC_PLT64 ENUMX BFD_RELOC_SPARC_HIX22 @@ -1999,12 +1995,6 @@ ENUM ENUMDOC Like BFD_RELOC_LO16, but PC relative. -ENUMEQ - BFD_RELOC_MIPS_GPREL - BFD_RELOC_GPREL16 -ENUMDOC - Relocation relative to the global pointer. - ENUM BFD_RELOC_MIPS_LITERAL ENUMDOC @@ -2014,9 +2004,6 @@ ENUM BFD_RELOC_MIPS_GOT16 ENUMX BFD_RELOC_MIPS_CALL16 -ENUMEQX - BFD_RELOC_MIPS_GPREL32 - BFD_RELOC_GPREL32 ENUMX BFD_RELOC_MIPS_GOT_HI16 ENUMX @@ -3261,6 +3248,15 @@ ENUMX ENUMDOC H8 elf Relocations. +ENUM + BFD_RELOC_XSTORMY16_REL_12 +ENUMX + BFD_RELOC_XSTORMY16_24 +ENUMX + BFD_RELOC_XSTORMY16_FPTR16 +ENUMDOC + Sony Xstormy16 Relocations. + ENDSENUM BFD_RELOC_UNUSED CODE_FRAGMENT @@ -3371,7 +3367,6 @@ DESCRIPTION don't do relaxing -- i.e., does nothing. */ -/*ARGSUSED*/ boolean bfd_generic_relax_section (abfd, section, link_info, again) bfd *abfd ATTRIBUTE_UNUSED; @@ -3396,7 +3391,6 @@ DESCRIPTION don't do section gc -- i.e., does nothing. */ -/*ARGSUSED*/ boolean bfd_generic_gc_sections (abfd, link_info) bfd *abfd ATTRIBUTE_UNUSED; @@ -3418,7 +3412,6 @@ DESCRIPTION which don't have SEC_MERGE support -- i.e., does nothing. */ -/*ARGSUSED*/ boolean bfd_generic_merge_sections (abfd, link_info) bfd *abfd ATTRIBUTE_UNUSED; @@ -3456,7 +3449,7 @@ bfd_generic_get_relocated_section_conten boolean relocateable; asymbol **symbols; { - /* Get enough memory to hold the stuff */ + /* Get enough memory to hold the stuff. */ bfd *input_bfd = link_order->u.indirect.section->owner; asection *input_section = link_order->u.indirect.section; @@ -3471,7 +3464,7 @@ bfd_generic_get_relocated_section_conten if (reloc_vector == NULL && reloc_size != 0) goto error_return; - /* read in the section */ + /* Read in the section. */ if (!bfd_get_section_contents (input_bfd, input_section, (PTR) data, @@ -3479,7 +3472,7 @@ bfd_generic_get_relocated_section_conten input_section->_raw_size)) goto error_return; - /* We're not relaxing the section, so just copy the size info */ + /* We're not relaxing the section, so just copy the size info. */ input_section->_cooked_size = input_section->_raw_size; input_section->reloc_done = true; @@ -3509,7 +3502,7 @@ bfd_generic_get_relocated_section_conten { asection *os = input_section->output_section; - /* A partial link, so keep the relocs */ + /* A partial link, so keep the relocs. */ os->orelocation[os->reloc_count] = *parent; os->reloc_count++; } diff -uprN binutils-2.11.92.0.12.3/bfd/rs6000-core.c binutils-2.11.93.0.2/bfd/rs6000-core.c --- binutils-2.11.92.0.12.3/bfd/rs6000-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/rs6000-core.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* IBM RS/6000 "XCOFF" back-end for BFD. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, - 2001 + 2001, 2002 Free Software Foundation, Inc. FIXME: Can someone provide a transliteration of this name into ASCII? Using the following chars caused a compiler warning on HIUX (so I replaced @@ -462,13 +462,13 @@ rs6000coff_core_p (abfd) if (!make_bfd_asection (abfd, ".stack", SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS, c_size, c_stackend - c_size, c_stack)) - return NULL; + goto fail; /* .reg section for all registers. */ if (!make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS, c_regsize, (bfd_vma) 0, c_regoff)) - return NULL; + goto fail; /* .ldinfo section. To actually find out how long this section is in this particular @@ -477,7 +477,7 @@ rs6000coff_core_p (abfd) if (!make_bfd_asection (abfd, ".ldinfo", SEC_HAS_CONTENTS, c_lsize, (bfd_vma) 0, c_loader)) - return NULL; + goto fail; #ifndef CORE_VERSION_1 /* .data section if present. @@ -494,7 +494,7 @@ rs6000coff_core_p (abfd) (bfd_vma) CDATA_ADDR (core.old.c_u.u_dsize), c_stack + c_size)) - return NULL; + goto fail; } #endif @@ -536,7 +536,7 @@ rs6000coff_core_p (abfd) c_datasize, (bfd_vma) CDATA_ADDR (c_datasize), c_data)) - return NULL; + goto fail; } /* .data sections from loaded objects. */ @@ -548,9 +548,9 @@ rs6000coff_core_p (abfd) while (1) { if (bfd_seek (abfd, c_loader, SEEK_SET) != 0) - return NULL; + goto fail; if (bfd_bread (&ldinfo, size, abfd) != size) - return NULL; + goto fail; if (proc64) { @@ -571,7 +571,7 @@ rs6000coff_core_p (abfd) if (!make_bfd_asection (abfd, ".data", SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS, ldi_datasize, ldi_dataorg, ldi_core)) - return NULL; + goto fail; if (ldi_next == 0) break; @@ -584,7 +584,7 @@ rs6000coff_core_p (abfd) bfd_size_type i; if (bfd_seek (abfd, c_vmm, SEEK_SET) != 0) - return NULL; + goto fail; for (i = 0; i < c_vmregions; i++) { @@ -595,7 +595,7 @@ rs6000coff_core_p (abfd) size = CORE_NEW (core) ? sizeof (vminfo.new) : sizeof (vminfo.old); if (bfd_bread (&vminfo, size, abfd) != size) - return NULL; + goto fail; if (CORE_NEW (core)) { @@ -615,13 +615,19 @@ rs6000coff_core_p (abfd) SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS, vminfo_size, vminfo_addr, vminfo_offset)) - return NULL; + goto fail; } } } #endif return abfd->xvec; /* This is garbage for now. */ + + fail: + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); + return NULL; } /* Return `true' if given core is from the given executable. */ diff -uprN binutils-2.11.92.0.12.3/bfd/sco5-core.c binutils-2.11.93.0.2/bfd/sco5-core.c --- binutils-2.11.92.0.12.3/bfd/sco5-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/sco5-core.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* BFD back end for SCO5 core files (U-area and raw sections) - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Jouke Numan This file is part of BFD, the Binary File Descriptor library. @@ -43,7 +43,6 @@ struct sco5_core_struct static asection * make_bfd_asection PARAMS ((bfd *, const char *, flagword, bfd_size_type, bfd_vma, file_ptr)); -static asymbol *sco5_core_make_empty_symbol PARAMS ((bfd *)); static struct user *read_uarea PARAMS ((bfd *, int)); const bfd_target *sco5_core_file_p PARAMS ((bfd *abfd)); char *sco5_core_file_failing_command PARAMS ((bfd *abfd)); @@ -75,18 +74,6 @@ make_bfd_asection (abfd, name, flags, _r return asect; } -static asymbol * -sco5_core_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - static struct user * read_uarea(abfd, filepos) bfd *abfd; @@ -176,15 +163,15 @@ sco5_core_file_p (abfd) { /* Old version, no section heads, read info from user struct */ - u = read_uarea(abfd, coffsets.u_user); + u = read_uarea (abfd, coffsets.u_user); if (! u) - return NULL; + goto fail; if (!make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS, (bfd_size_type) coffsets.u_usize, 0 - (bfd_vma) u->u_ar0, (file_ptr) coffsets.u_user)) - return NULL; + goto fail; if (!make_bfd_asection (abfd, ".data", SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS, @@ -192,14 +179,14 @@ sco5_core_file_p (abfd) + u->u_exdata.ux_bsize), (bfd_vma) u->u_exdata.ux_datorg, (file_ptr) coffsets.u_data)) - return NULL; + goto fail; if (!make_bfd_asection (abfd, ".stack", SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS, (bfd_size_type) u->u_ssize * NBPC, (bfd_vma) u->u_sub, (file_ptr) coffsets.u_stack)) - return NULL; + goto fail; return abfd->xvec; /* Done for version 1 */ } @@ -223,7 +210,7 @@ sco5_core_file_p (abfd) || (chead.cs_x.csx_magic != COREMAGIC_NUMBER)) { bfd_set_error (bfd_error_wrong_format); - return NULL; + goto fail; } /* OK, we believe you. You're a core file (sure, sure). */ @@ -237,7 +224,7 @@ sco5_core_file_p (abfd) != sizeof chead)) { bfd_set_error (bfd_error_wrong_format); - return NULL; + goto fail; } switch (chead.cs_stype) @@ -246,15 +233,15 @@ sco5_core_file_p (abfd) if (chead.cs_x.csx_magic != COREMAGIC_NUMBER) { bfd_set_error (bfd_error_wrong_format); - return NULL; + goto fail; } secname = NULL; nsecs++; /* MAGIC not in section cnt!*/ break; case CORES_UAREA: /* U-area, read in tdata */ - u = read_uarea(abfd, chead.cs_sseek); + u = read_uarea (abfd, chead.cs_sseek); if (! u) - return NULL; + goto fail; /* This is tricky. As the "register section", we give them the entire upage and stack. u.u_ar0 points to where @@ -325,12 +312,20 @@ sco5_core_file_p (abfd) (bfd_size_type) chead.cs_vsize, (bfd_vma) chead.cs_vaddr, (file_ptr) chead.cs_sseek)) - return NULL; + goto fail; } return abfd->xvec; + fail: + if (abfd->tdata.any) + { + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + } + bfd_section_list_clear (abfd); + return NULL; } char * @@ -363,17 +358,6 @@ sco5_core_file_matches_executable_p (co return true; /* FIXME, We have no way of telling at this point */ } -#define sco5_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound -#define sco5_core_get_symtab _bfd_nosymbols_get_symtab -#define sco5_core_print_symbol _bfd_nosymbols_print_symbol -#define sco5_core_get_symbol_info _bfd_nosymbols_get_symbol_info -#define sco5_core_bfd_is_local_label_name _bfd_nosymbols_bfd_is_local_label_name -#define sco5_core_get_lineno _bfd_nosymbols_get_lineno -#define sco5_core_find_nearest_line _bfd_nosymbols_find_nearest_line -#define sco5_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define sco5_core_read_minisymbols _bfd_nosymbols_read_minisymbols -#define sco5_core_minisymbol_to_symbol _bfd_nosymbols_minisymbol_to_symbol - /* If somebody calls any byte-swapping routines, shoot them. */ static void swap_abort () @@ -420,15 +404,15 @@ const bfd_target sco5_core_vec = bfd_false, bfd_false }, - BFD_JUMP_TABLE_GENERIC (_bfd_generic), - BFD_JUMP_TABLE_COPY (_bfd_generic), - BFD_JUMP_TABLE_CORE (sco5), - BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), - BFD_JUMP_TABLE_SYMBOLS (sco5_core), - BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), - BFD_JUMP_TABLE_WRITE (_bfd_generic), - BFD_JUMP_TABLE_LINK (_bfd_nolink), - BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (sco5), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), NULL, diff -uprN binutils-2.11.92.0.12.3/bfd/section.c binutils-2.11.93.0.2/bfd/section.c --- binutils-2.11.92.0.12.3/bfd/section.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/section.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* Object file "section" support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -170,25 +170,20 @@ CODE_FRAGMENT .{ . {* The name of the section; the name isn't a copy, the pointer is . the same as that passed to bfd_make_section. *} -. . const char *name; . . {* A unique sequence number. *} -. . int id; . . {* Which section in the bfd; 0..n-1 as sections are created in a bfd. *} -. . int index; . . {* The next section in the list belonging to the BFD, or NULL. *} -. . struct sec *next; . . {* The field flags contains attributes of the section. Some . flags are read in from the object file, and some are . synthesized from other information. *} -. . flagword flags; . .#define SEC_NO_FLAGS 0x000 @@ -397,25 +392,21 @@ CODE_FRAGMENT . backend can assign addresses (for example, in <>, where . the default address for <<.data>> is dependent on the specific . target and various flags). *} -. . bfd_vma vma; . . {* The load address of the section - where it would be in a . rom image; really only used for writing section header -. information. *} -. +. information. *} . bfd_vma lma; . . {* The size of the section in octets, as it will be output. . Contains a value even if the section has no contents (e.g., the . size of <<.bss>>). This will be filled in after relocation. *} -. . bfd_size_type _cooked_size; . . {* The original size on disk of the section, in octets. Normally this . value is the same as the size, but if some relaxing has . been done, then this value will be bigger. *} -. . bfd_size_type _raw_size; . . {* If this section is going to be output, then this value is the @@ -425,49 +416,39 @@ CODE_FRAGMENT . 100th octet (8-bit quantity) in the output section, this value . would be 100. However, if the target byte size is 16 bits . (bfd_octets_per_byte is "2"), this value would be 50. *} -. . bfd_vma output_offset; . . {* The output section through which to map on output. *} -. . struct sec *output_section; . . {* The alignment requirement of the section, as an exponent of 2 - . e.g., 3 aligns to 2^3 (or 8). *} -. . unsigned int alignment_power; . . {* If an input section, a pointer to a vector of relocation . records for the data in this section. *} -. . struct reloc_cache_entry *relocation; . . {* If an output section, a pointer to a vector of pointers to . relocation records for the data in this section. *} -. . struct reloc_cache_entry **orelocation; . -. {* The number of relocation records in one of the above *} -. +. {* The number of relocation records in one of the above. *} . unsigned reloc_count; . . {* Information below is back end specific - and not always used . or updated. *} . . {* File position of section data. *} -. . file_ptr filepos; . . {* File position of relocation info. *} -. . file_ptr rel_filepos; . . {* File position of line data. *} -. . file_ptr line_filepos; . . {* Pointer to data for applications. *} -. . PTR userdata; . . {* If the SEC_IN_MEMORY flag is set, this points to the actual @@ -475,48 +456,40 @@ CODE_FRAGMENT . unsigned char *contents; . . {* Attached line number information. *} -. . alent *lineno; . . {* Number of line number records. *} -. . unsigned int lineno_count; . . {* Entity size for merging purposes. *} -. . unsigned int entsize; . . {* Optional information about a COMDAT entry; NULL if not COMDAT. *} -. . struct bfd_comdat_info *comdat; . . {* When a section is being output, this value changes as more . linenumbers are written out. *} -. . file_ptr moving_line_filepos; . . {* What the section number is in the target world. *} -. . int target_index; . . PTR used_by_bfd; . . {* If this is a constructor section then here is a list of the . relocations created to relocate items within it. *} -. . struct relent_chain *constructor_chain; . . {* The BFD which owns the section. *} -. . bfd *owner; . -. {* A symbol which points at this section only *} +. {* A symbol which points at this section only. *} . struct symbol_cache_entry *symbol; . struct symbol_cache_entry **symbol_ptr_ptr; . . struct bfd_link_order *link_order_head; . struct bfd_link_order *link_order_tail; -.} asection ; +.} asection; . .{* These sections are global, and are managed by BFD. The application . and target back end are not permitted to change the values in @@ -528,18 +501,18 @@ CODE_FRAGMENT .#define BFD_COM_SECTION_NAME "*COM*" .#define BFD_IND_SECTION_NAME "*IND*" . -.{* the absolute section *} +.{* The absolute section. *} .extern const asection bfd_abs_section; .#define bfd_abs_section_ptr ((asection *) &bfd_abs_section) .#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr) -.{* Pointer to the undefined section *} +.{* Pointer to the undefined section. *} .extern const asection bfd_und_section; .#define bfd_und_section_ptr ((asection *) &bfd_und_section) .#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr) -.{* Pointer to the common section *} +.{* Pointer to the common section. *} .extern const asection bfd_com_section; .#define bfd_com_section_ptr ((asection *) &bfd_com_section) -.{* Pointer to the indirect section *} +.{* Pointer to the indirect section. *} .extern const asection bfd_ind_section; .#define bfd_ind_section_ptr ((asection *) &bfd_ind_section) .#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr) @@ -560,6 +533,32 @@ CODE_FRAGMENT .#define bfd_get_section_size_after_reloc(section) \ . ((section)->reloc_done ? (section)->_cooked_size \ . : (abort (), (bfd_size_type) 1)) +. +.{* Macros to handle insertion and deletion of a bfd's sections. These +. only handle the list pointers, ie. do not adjust section_count, +. target_index etc. *} +.#define bfd_section_list_remove(ABFD, PS) \ +. do \ +. { \ +. asection **_ps = PS; \ +. asection *_s = *_ps; \ +. *_ps = _s->next; \ +. if (_s->next == NULL) \ +. (ABFD)->section_tail = _ps; \ +. } \ +. while (0) +.#define bfd_section_list_insert(ABFD, PS, S) \ +. do \ +. { \ +. asection **_ps = PS; \ +. asection *_s = S; \ +. _s->next = *_ps; \ +. *_ps = _s; \ +. if (_s->next == NULL) \ +. (ABFD)->section_tail = &_s->next; \ +. } \ +. while (0) +. */ /* We use a macro to initialize the static asymbol structures because @@ -629,6 +628,83 @@ STD_SECTION (bfd_abs_section, 0, bfd_abs STD_SECTION (bfd_ind_section, 0, bfd_ind_symbol, BFD_IND_SECTION_NAME, 3); #undef STD_SECTION +struct section_hash_entry +{ + struct bfd_hash_entry root; + asection section; +}; + +/* Initialize an entry in the section hash table. */ + +struct bfd_hash_entry * +bfd_section_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 section_hash_entry)); + if (entry == NULL) + return entry; + } + + /* Call the allocation method of the superclass. */ + entry = bfd_hash_newfunc (entry, table, string); + if (entry != NULL) + { + memset ((PTR) &((struct section_hash_entry *) entry)->section, + 0, sizeof (asection)); + } + + return entry; +} + +#define section_hash_lookup(table, string, create, copy) \ + ((struct section_hash_entry *) \ + bfd_hash_lookup ((table), (string), (create), (copy))) + +/* Initializes a new section. NEWSECT->NAME is already set. */ + +static asection *bfd_section_init PARAMS ((bfd *, asection *)); + +static asection * +bfd_section_init (abfd, newsect) + bfd *abfd; + asection *newsect; +{ + static int section_id = 0x10; /* id 0 to 3 used by STD_SECTION. */ + + newsect->id = section_id; + newsect->index = abfd->section_count; + newsect->owner = abfd; + + /* Create a symbol whose only job is to point to this section. This + is useful for things like relocs which are relative to the base + of a section. */ + newsect->symbol = bfd_make_empty_symbol (abfd); + if (newsect->symbol == NULL) + return NULL; + + newsect->symbol->name = newsect->name; + newsect->symbol->value = 0; + newsect->symbol->section = newsect; + newsect->symbol->flags = BSF_SECTION_SYM; + + newsect->symbol_ptr_ptr = &newsect->symbol; + + if (! BFD_SEND (abfd, _new_section_hook, (abfd, newsect))) + return NULL; + + section_id++; + abfd->section_count++; + *abfd->section_tail = newsect; + abfd->section_tail = &newsect->next; + return newsect; +} + /* DOCDD INODE @@ -641,6 +717,29 @@ These are the functions exported by the /* FUNCTION + bfd_section_list_clear + +SYNOPSIS + void bfd_section_list_clear (bfd *); + +DESCRIPTION + Clears the section list, and also resets the section count and + hash table entries. +*/ + +void +bfd_section_list_clear (abfd) + bfd *abfd; +{ + abfd->sections = NULL; + abfd->section_tail = &abfd->sections; + abfd->section_count = 0; + memset ((PTR) abfd->section_htab.table, 0, + abfd->section_htab.size * sizeof (struct bfd_hash_entry *)); +} + +/* +FUNCTION bfd_get_section_by_name SYNOPSIS @@ -662,11 +761,12 @@ bfd_get_section_by_name (abfd, name) bfd *abfd; const char *name; { - asection *sect; + struct section_hash_entry *sh; + + sh = section_hash_lookup (&abfd->section_htab, name, false, false); + if (sh != NULL) + return &sh->section; - for (sect = abfd->sections; sect != NULL; sect = sect->next) - if (!strcmp (sect->name, name)) - return sect; return NULL; } @@ -713,7 +813,7 @@ bfd_get_unique_section_name (abfd, templ abort (); sprintf (sname + len, ".%d", num++); } - while (bfd_get_section_by_name (abfd, sname) != NULL); + while (section_hash_lookup (&abfd->section_htab, sname, false, false)); if (count != NULL) *count = num; @@ -750,12 +850,40 @@ bfd_make_section_old_way (abfd, name) bfd *abfd; const char *name; { - asection *sec = bfd_get_section_by_name (abfd, name); - if (sec == (asection *) NULL) + struct section_hash_entry *sh; + asection *newsect; + + if (abfd->output_has_begun) + { + bfd_set_error (bfd_error_invalid_operation); + return NULL; + } + + if (strcmp (name, BFD_ABS_SECTION_NAME) == 0) + return bfd_abs_section_ptr; + + if (strcmp (name, BFD_COM_SECTION_NAME) == 0) + return bfd_com_section_ptr; + + if (strcmp (name, BFD_UND_SECTION_NAME) == 0) + return bfd_und_section_ptr; + + if (strcmp (name, BFD_IND_SECTION_NAME) == 0) + return bfd_ind_section_ptr; + + sh = section_hash_lookup (&abfd->section_htab, name, true, false); + if (sh == NULL) + return NULL; + + newsect = &sh->section; + if (newsect->name != NULL) { - sec = bfd_make_section (abfd, name); + /* Section already exists. */ + return newsect; } - return sec; + + newsect->name = name; + return bfd_section_init (abfd, newsect); } /* @@ -780,10 +908,8 @@ bfd_make_section_anyway (abfd, name) bfd *abfd; const char *name; { - static int section_id = 0x10; /* id 0 to 3 used by STD_SECTION. */ + struct section_hash_entry *sh; asection *newsect; - asection **prev = &abfd->sections; - asection *sect = abfd->sections; if (abfd->output_has_begun) { @@ -791,56 +917,24 @@ bfd_make_section_anyway (abfd, name) return NULL; } - while (sect) - { - prev = §->next; - sect = sect->next; - } - - newsect = (asection *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asection)); - if (newsect == NULL) + sh = section_hash_lookup (&abfd->section_htab, name, true, false); + if (sh == NULL) return NULL; - newsect->name = name; - newsect->id = section_id; - newsect->index = abfd->section_count; - newsect->flags = SEC_NO_FLAGS; - - newsect->userdata = NULL; - newsect->contents = NULL; - newsect->next = (asection *) NULL; - newsect->relocation = (arelent *) NULL; - newsect->reloc_count = 0; - newsect->line_filepos = 0; - newsect->owner = abfd; - newsect->comdat = NULL; - - /* Create a symbol whos only job is to point to this section. This is - useful for things like relocs which are relative to the base of a - section. */ - newsect->symbol = bfd_make_empty_symbol (abfd); - if (newsect->symbol == NULL) + newsect = &sh->section; + if (newsect->name != NULL) { - bfd_release (abfd, newsect); - return NULL; - } - newsect->symbol->name = name; - newsect->symbol->value = 0; - newsect->symbol->section = newsect; - newsect->symbol->flags = BSF_SECTION_SYM; - - newsect->symbol_ptr_ptr = &newsect->symbol; - - if (BFD_SEND (abfd, _new_section_hook, (abfd, newsect)) != true) - { - bfd_release (abfd, newsect); - return NULL; + /* We are making a section of the same name. It can't go in + section_htab without generating a unique section name and + that would be pointless; We don't need to traverse the + hash table. */ + newsect = (asection *) bfd_zalloc (abfd, sizeof (asection)); + if (newsect == NULL) + return NULL; } - section_id++; - abfd->section_count++; - *prev = newsect; - return newsect; + newsect->name = name; + return bfd_section_init (abfd, newsect); } /* @@ -862,35 +956,34 @@ bfd_make_section (abfd, name) bfd *abfd; const char *name; { - asection *sect = abfd->sections; + struct section_hash_entry *sh; + asection *newsect; - if (strcmp (name, BFD_ABS_SECTION_NAME) == 0) - { - return bfd_abs_section_ptr; - } - if (strcmp (name, BFD_COM_SECTION_NAME) == 0) - { - return bfd_com_section_ptr; - } - if (strcmp (name, BFD_UND_SECTION_NAME) == 0) + if (abfd->output_has_begun) { - return bfd_und_section_ptr; + bfd_set_error (bfd_error_invalid_operation); + return NULL; } - if (strcmp (name, BFD_IND_SECTION_NAME) == 0) - { - return bfd_ind_section_ptr; - } + if (strcmp (name, BFD_ABS_SECTION_NAME) == 0 + || strcmp (name, BFD_COM_SECTION_NAME) == 0 + || strcmp (name, BFD_UND_SECTION_NAME) == 0 + || strcmp (name, BFD_IND_SECTION_NAME) == 0) + return NULL; - while (sect) + sh = section_hash_lookup (&abfd->section_htab, name, true, false); + if (sh == NULL) + return NULL; + + newsect = &sh->section; + if (newsect->name != NULL) { - if (!strcmp (sect->name, name)) - return NULL; - sect = sect->next; + /* Section already exists. */ + return newsect; } - /* The name is not already used; go ahead and make a new section. */ - return bfd_make_section_anyway (abfd, name); + newsect->name = name; + return bfd_section_init (abfd, newsect); } /* @@ -1277,7 +1370,7 @@ _bfd_strip_section_from_output (info, s) for (spp = &os->owner->sections; *spp; spp = &(*spp)->next) if (*spp == os) { - *spp = os->next; + bfd_section_list_remove (os->owner, spp); os->owner->section_count--; break; } diff -uprN binutils-2.11.92.0.12.3/bfd/som.c binutils-2.11.93.0.2/bfd/som.c --- binutils-2.11.92.0.12.3/bfd/som.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/som.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* bfd back-end for HP PA-RISC SOM objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by the Center for Software Science at the @@ -3101,7 +3101,7 @@ som_write_space_strings (abfd, current_o /* Ensure a minimum growth factor to avoid O(n**2) space consumption for n strings. The optimal minimum factor seems to be 2, as no other value can guarantee - wasting less then 50% space. (Note that we cannot + wasting less than 50% space. (Note that we cannot deallocate space allocated by `alloca' without returning from this function.) The same technique is used a few more times below when a buffer is diff -uprN binutils-2.11.92.0.12.3/bfd/srec.c binutils-2.11.93.0.2/bfd/srec.c --- binutils-2.11.92.0.12.3/bfd/srec.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/srec.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* BFD back-end for s-record objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . @@ -138,7 +138,6 @@ static boolean internal_srec_write_objec static boolean srec_write_object_contents PARAMS ((bfd *)); static boolean symbolsrec_write_object_contents PARAMS ((bfd *)); static int srec_sizeof_headers PARAMS ((bfd *, boolean)); -static asymbol *srec_make_empty_symbol PARAMS ((bfd *)); static long srec_get_symtab_upper_bound PARAMS ((bfd *)); static long srec_get_symtab PARAMS ((bfd *, asymbol **)); @@ -1150,18 +1149,6 @@ srec_sizeof_headers (abfd, exec) return 0; } -static asymbol * -srec_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - /* Return the amount of memory needed to read the symbol table. */ static long @@ -1251,6 +1238,7 @@ srec_print_symbol (abfd, afile, symbol, #define srec_bfd_is_local_label_name bfd_generic_is_local_label_name #define srec_get_lineno _bfd_nosymbols_get_lineno #define srec_find_nearest_line _bfd_nosymbols_find_nearest_line +#define srec_make_empty_symbol _bfd_generic_make_empty_symbol #define srec_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol #define srec_read_minisymbols _bfd_generic_read_minisymbols #define srec_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol diff -uprN binutils-2.11.92.0.12.3/bfd/stabs.c binutils-2.11.93.0.2/bfd/stabs.c --- binutils-2.11.92.0.12.3/bfd/stabs.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/stabs.c Sun Feb 3 11:22:30 2002 @@ -515,7 +515,7 @@ _bfd_discard_section_stabs (abfd, stabse bfd *abfd; asection *stabsec; PTR psecinfo; - boolean (*reloc_symbol_deleted_p) (bfd_vma, PTR); + boolean (*reloc_symbol_deleted_p) PARAMS ((bfd_vma, PTR)); PTR cookie; { bfd_size_type count, amt; diff -uprN binutils-2.11.92.0.12.3/bfd/sunos.c binutils-2.11.93.0.2/bfd/sunos.c --- binutils-2.11.92.0.12.3/bfd/sunos.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/bfd/sunos.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* BFD backend for SunOS binaries. - Copyright 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 2000, 2001 + Copyright 1990, 1991, 1992, 1994, 1995, 1996, 1997, 1998, 2000, 2001, + 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -877,6 +878,7 @@ sunos_add_dynamic_symbols (abfd, info, s bfd *dynobj; struct sunos_dynamic_info *dinfo; unsigned long need; + asection **ps; /* Make sure we have all the required sections. */ if (info->hash->creator == abfd->xvec) @@ -902,17 +904,12 @@ sunos_add_dynamic_symbols (abfd, info, s want, because that one still implies that the section takes up space in the output file. If this is the first object we have seen, we must preserve the dynamic sections we just created. */ - if (abfd != dynobj) - abfd->sections = NULL; - else + for (ps = &abfd->sections; *ps != NULL; ) { - asection *s; - - for (s = abfd->sections; - (s->flags & SEC_LINKER_CREATED) == 0; - s = s->next) - ; - abfd->sections = s; + if (abfd != dynobj || ((*ps)->flags & SEC_LINKER_CREATED) == 0) + bfd_section_list_remove (abfd, ps); + else + ps = &(*ps)->next; } /* The native linker seems to just ignore dynamic objects when -r is diff -uprN binutils-2.11.92.0.12.3/bfd/syms.c binutils-2.11.93.0.2/bfd/syms.c --- binutils-2.11.92.0.12.3/bfd/syms.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/syms.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* Generic symbol-table support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -183,126 +183,125 @@ CODE_FRAGMENT . .typedef struct symbol_cache_entry .{ -. {* A pointer to the BFD which owns the symbol. This information -. is necessary so that a back end can work out what additional -. information (invisible to the application writer) is carried -. with the symbol. -. -. This field is *almost* redundant, since you can use section->owner -. instead, except that some symbols point to the global sections -. bfd_{abs,com,und}_section. This could be fixed by making -. these globals be per-bfd (or per-target-flavor). FIXME. *} +. {* A pointer to the BFD which owns the symbol. This information +. is necessary so that a back end can work out what additional +. information (invisible to the application writer) is carried +. with the symbol. +. +. This field is *almost* redundant, since you can use section->owner +. instead, except that some symbols point to the global sections +. bfd_{abs,com,und}_section. This could be fixed by making +. these globals be per-bfd (or per-target-flavor). FIXME. *} +. struct _bfd *the_bfd; {* Use bfd_asymbol_bfd(sym) to access this field. *} . -. struct _bfd *the_bfd; {* Use bfd_asymbol_bfd(sym) to access this field. *} -. -. {* The text of the symbol. The name is left alone, and not copied; the -. application may not alter it. *} +. {* The text of the symbol. The name is left alone, and not copied; the +. application may not alter it. *} . const char *name; . -. {* The value of the symbol. This really should be a union of a -. numeric value with a pointer, since some flags indicate that -. a pointer to another symbol is stored here. *} +. {* The value of the symbol. This really should be a union of a +. numeric value with a pointer, since some flags indicate that +. a pointer to another symbol is stored here. *} . symvalue value; . -. {* Attributes of a symbol: *} -. +. {* Attributes of a symbol. *} .#define BSF_NO_FLAGS 0x00 . -. {* The symbol has local scope; <> in <>. The value -. is the offset into the section of the data. *} +. {* The symbol has local scope; <> in <>. The value +. is the offset into the section of the data. *} .#define BSF_LOCAL 0x01 . -. {* The symbol has global scope; initialized data in <>. The -. value is the offset into the section of the data. *} +. {* The symbol has global scope; initialized data in <>. The +. value is the offset into the section of the data. *} .#define BSF_GLOBAL 0x02 . -. {* The symbol has global scope and is exported. The value is -. the offset into the section of the data. *} -.#define BSF_EXPORT BSF_GLOBAL {* no real difference *} -. -. {* A normal C symbol would be one of: -. <>, <>, <> or -. <> *} +. {* The symbol has global scope and is exported. The value is +. the offset into the section of the data. *} +.#define BSF_EXPORT BSF_GLOBAL {* No real difference. *} +. +. {* A normal C symbol would be one of: +. <>, <>, <> or +. <>. *} . -. {* The symbol is a debugging record. The value has an arbitary -. meaning, unless BSF_DEBUGGING_RELOC is also set. *} +. {* The symbol is a debugging record. The value has an arbitary +. meaning, unless BSF_DEBUGGING_RELOC is also set. *} .#define BSF_DEBUGGING 0x08 . -. {* The symbol denotes a function entry point. Used in ELF, -. perhaps others someday. *} +. {* The symbol denotes a function entry point. Used in ELF, +. perhaps others someday. *} .#define BSF_FUNCTION 0x10 . -. {* Used by the linker. *} +. {* Used by the linker. *} .#define BSF_KEEP 0x20 .#define BSF_KEEP_G 0x40 . -. {* A weak global symbol, overridable without warnings by -. a regular global symbol of the same name. *} +. {* A weak global symbol, overridable without warnings by +. a regular global symbol of the same name. *} .#define BSF_WEAK 0x80 . -. {* This symbol was created to point to a section, e.g. ELF's -. STT_SECTION symbols. *} +. {* This symbol was created to point to a section, e.g. ELF's +. STT_SECTION symbols. *} .#define BSF_SECTION_SYM 0x100 . -. {* The symbol used to be a common symbol, but now it is -. allocated. *} +. {* The symbol used to be a common symbol, but now it is +. allocated. *} .#define BSF_OLD_COMMON 0x200 . -. {* The default value for common data. *} +. {* The default value for common data. *} .#define BFD_FORT_COMM_DEFAULT_VALUE 0 . -. {* In some files the type of a symbol sometimes alters its -. location in an output file - ie in coff a <> symbol -. which is also <> symbol appears where it was -. declared and not at the end of a section. This bit is set -. by the target BFD part to convey this information. *} -. +. {* In some files the type of a symbol sometimes alters its +. location in an output file - ie in coff a <> symbol +. which is also <> symbol appears where it was +. declared and not at the end of a section. This bit is set +. by the target BFD part to convey this information. *} .#define BSF_NOT_AT_END 0x400 . -. {* Signal that the symbol is the label of constructor section. *} +. {* Signal that the symbol is the label of constructor section. *} .#define BSF_CONSTRUCTOR 0x800 . -. {* Signal that the symbol is a warning symbol. The name is a -. warning. The name of the next symbol is the one to warn about; -. if a reference is made to a symbol with the same name as the next -. symbol, a warning is issued by the linker. *} +. {* Signal that the symbol is a warning symbol. The name is a +. warning. The name of the next symbol is the one to warn about; +. if a reference is made to a symbol with the same name as the next +. symbol, a warning is issued by the linker. *} .#define BSF_WARNING 0x1000 . -. {* Signal that the symbol is indirect. This symbol is an indirect -. pointer to the symbol with the same name as the next symbol. *} +. {* Signal that the symbol is indirect. This symbol is an indirect +. pointer to the symbol with the same name as the next symbol. *} .#define BSF_INDIRECT 0x2000 . -. {* BSF_FILE marks symbols that contain a file name. This is used -. for ELF STT_FILE symbols. *} +. {* BSF_FILE marks symbols that contain a file name. This is used +. for ELF STT_FILE symbols. *} .#define BSF_FILE 0x4000 . -. {* Symbol is from dynamic linking information. *} +. {* Symbol is from dynamic linking information. *} .#define BSF_DYNAMIC 0x8000 . -. {* The symbol denotes a data object. Used in ELF, and perhaps -. others someday. *} +. {* The symbol denotes a data object. Used in ELF, and perhaps +. others someday. *} .#define BSF_OBJECT 0x10000 . -. {* This symbol is a debugging symbol. The value is the offset -. into the section of the data. BSF_DEBUGGING should be set -. as well. *} +. {* This symbol is a debugging symbol. The value is the offset +. into the section of the data. BSF_DEBUGGING should be set +. as well. *} .#define BSF_DEBUGGING_RELOC 0x20000 . . flagword flags; . -. {* A pointer to the section to which this symbol is -. relative. This will always be non NULL, there are special -. sections for undefined and absolute symbols. *} +. {* A pointer to the section to which this symbol is +. relative. This will always be non NULL, there are special +. sections for undefined and absolute symbols. *} . struct sec *section; . -. {* Back end special data. *} +. {* Back end special data. *} . union . { . PTR p; . bfd_vma i; -. } udata; +. } +. udata; +.} +.asymbol; . -.} asymbol; */ #include "bfd.h" @@ -335,7 +334,7 @@ DESCRIPTION .#define bfd_get_symtab_upper_bound(abfd) \ . BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd)) - +. */ /* @@ -380,6 +379,7 @@ DESCRIPTION .#define bfd_is_local_label_name(abfd, name) \ . BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name)) +. */ /* @@ -396,7 +396,7 @@ DESCRIPTION .#define bfd_canonicalize_symtab(abfd, location) \ . BFD_SEND (abfd, _bfd_canonicalize_symtab,\ . (abfd, location)) - +. */ /* @@ -492,10 +492,36 @@ DESCRIPTION .#define bfd_make_empty_symbol(abfd) \ . BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd)) +. */ /* FUNCTION + _bfd_generic_make_empty_symbol + +SYNOPSIS + asymbol *_bfd_generic_make_empty_symbol (bfd *); + +DESCRIPTION + Create a new <> structure for the BFD @var{abfd} + and return a pointer to it. Used by core file routines, + binary back-end and anywhere else where no private info + is needed. +*/ + +asymbol * +_bfd_generic_make_empty_symbol (abfd) + bfd *abfd; +{ + bfd_size_type amt = sizeof (asymbol); + asymbol *new = (asymbol *) bfd_zalloc (abfd, amt); + if (new) + new->the_bfd = abfd; + return new; +} + +/* +FUNCTION bfd_make_debug_symbol DESCRIPTION @@ -505,6 +531,7 @@ DESCRIPTION .#define bfd_make_debug_symbol(abfd,ptr,size) \ . BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size)) +. */ struct section_to_type @@ -691,7 +718,7 @@ DESCRIPTION .#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ . BFD_SEND (obfd, _bfd_copy_private_symbol_data, \ . (ibfd, isymbol, obfd, osymbol)) - +. */ /* The generic version of the function which returns mini symbols. @@ -715,6 +742,8 @@ _bfd_generic_read_minisymbols (abfd, dyn storage = bfd_get_symtab_upper_bound (abfd); if (storage < 0) goto error_return; + if (storage == 0) + return 0; syms = (asymbol **) bfd_malloc ((bfd_size_type) storage); if (syms == NULL) diff -uprN binutils-2.11.92.0.12.3/bfd/targets.c binutils-2.11.93.0.2/bfd/targets.c --- binutils-2.11.92.0.12.3/bfd/targets.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/targets.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* Generic target-file-type support for the BFD library. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by Cygnus Support. @@ -125,7 +125,7 @@ DESCRIPTION . (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \ . (bfd_assert (__FILE__,__LINE__), NULL)) .#endif - +. This is the structure which defines the type of BFD this is. The <> member of the struct <> itself points here. Each module that implements access to a different target under BFD, @@ -135,7 +135,8 @@ DESCRIPTION the entry points which call them. Too bad we can't have one macro to define them both! -.enum bfd_flavour { +.enum bfd_flavour +.{ . bfd_target_unknown_flavour, . bfd_target_aout_flavour, . bfd_target_coff_flavour, @@ -164,51 +165,40 @@ DESCRIPTION . .typedef struct bfd_target .{ - -Identifies the kind of target, e.g., SunOS4, Ultrix, etc. - +. {* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. *} . char *name; - -The "flavour" of a back end is a general indication about the contents -of a file. - +. +. {* The "flavour" of a back end is a general indication about +. the contents of a file. *} . enum bfd_flavour flavour; - -The order of bytes within the data area of a file. - +. +. {* The order of bytes within the data area of a file. *} . enum bfd_endian byteorder; - -The order of bytes within the header parts of a file. - +. +. {* The order of bytes within the header parts of a file. *} . enum bfd_endian header_byteorder; - -A mask of all the flags which an executable may have set - -from the set <>, <>, ...<>. - +. +. {* A mask of all the flags which an executable may have set - +. from the set <>, <>, ...<>. *} . flagword object_flags; - -A mask of all the flags which a section may have set - from -the set <>, <>, ...<>. - +. +. {* A mask of all the flags which a section may have set - from +. the set <>, <>, ...<>. *} . flagword section_flags; - -The character normally found at the front of a symbol -(if any), perhaps `_'. - +. +. {* The character normally found at the front of a symbol. +. (if any), perhaps `_'. *} . char symbol_leading_char; - -The pad character for file names within an archive header. - +. +. {* The pad character for file names within an archive header. *} . char ar_pad_char; - -The maximum number of characters in an archive header. - +. +. {* The maximum number of characters in an archive header. *} . unsigned short ar_max_namelen; - -Entries for byte swapping for data. These are different from the other -entry points, since they don't take a BFD asthe first argument. -Certain other handlers could do the same. - +. +. {* Entries for byte swapping for data. These are different from the +. other entry points, since they don't take a BFD asthe first argument. +. Certain other handlers could do the same. *} . bfd_vma (*bfd_getx64) PARAMS ((const bfd_byte *)); . bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *)); . void (*bfd_putx64) PARAMS ((bfd_vma, bfd_byte *)); @@ -218,9 +208,8 @@ Certain other handlers could do the same . bfd_vma (*bfd_getx16) PARAMS ((const bfd_byte *)); . bfd_signed_vma (*bfd_getx_signed_16) PARAMS ((const bfd_byte *)); . void (*bfd_putx16) PARAMS ((bfd_vma, bfd_byte *)); - -Byte swapping for the headers - +. +. {* Byte swapping for the headers. *} . bfd_vma (*bfd_h_getx64) PARAMS ((const bfd_byte *)); . bfd_signed_vma (*bfd_h_getx_signed_64) PARAMS ((const bfd_byte *)); . void (*bfd_h_putx64) PARAMS ((bfd_vma, bfd_byte *)); @@ -230,25 +219,21 @@ Byte swapping for the headers . bfd_vma (*bfd_h_getx16) PARAMS ((const bfd_byte *)); . bfd_signed_vma (*bfd_h_getx_signed_16) PARAMS ((const bfd_byte *)); . void (*bfd_h_putx16) PARAMS ((bfd_vma, bfd_byte *)); - -Format dependent routines: these are vectors of entry points -within the target vector structure, one for each format to check. - -Check the format of a file being read. Return a <> or zero. - +. +. {* Format dependent routines: these are vectors of entry points +. within the target vector structure, one for each format to check. *} +. +. {* Check the format of a file being read. Return a <> or zero. *} . const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *)); - -Set the format of a file being written. - +. +. {* Set the format of a file being written. *} . boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *)); - -Write cached information into a file being written, at <>. - +. +. {* Write cached information into a file being written, at <>. *} . boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *)); - +. The general target vector. These vectors are initialized using the BFD_JUMP_TABLE macros. - . . {* Generic entry points. *} Do not "beautify" the CONCAT* macro args. Traditional C will not @@ -295,10 +280,10 @@ the tokens. . to another. *} . boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *, . bfd *, asymbol *)); -. {* Called to set private backend flags *} +. {* Called to set private backend flags. *} . boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); . -. {* Called to print private BFD data *} +. {* Called to print private BFD data. *} . boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR)); . . {* Core file entry points. *} @@ -448,7 +433,7 @@ the tokens. .CONCAT2 (NAME,_canonicalize_dynamic_symtab), \ .CONCAT2 (NAME,_get_dynamic_reloc_upper_bound), \ .CONCAT2 (NAME,_canonicalize_dynamic_reloc) -. {* Get the amount of memory required to hold the dynamic symbols. *} +. {* Get the amount of memory required to hold the dynamic symbols. *} . long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *)); . {* Read in the dynamic symbols. *} . long (*_bfd_canonicalize_dynamic_symtab) @@ -466,17 +451,16 @@ and little endian code, and target chose endianness. The function open_output() in ld/ldlang.c uses this field to find an alternative output format that is suitable. -. {* Opposite endian version of this target. *} -. const struct bfd_target * alternative_target; +. {* Opposite endian version of this target. *} +. const struct bfd_target * alternative_target; . -Data for use by back-end routines, which isn't generic enough to belong -in this structure. - -. PTR backend_data; +. {* Data for use by back-end routines, which isn't +. generic enough to belong in this structure. *} +. PTR backend_data; . .} bfd_target; - +. */ /* All known xvecs (even those that don't compile on all systems). @@ -525,6 +509,7 @@ extern const bfd_target bfd_elf32_i860_l extern const bfd_target bfd_elf32_i860_vec; extern const bfd_target bfd_elf32_i960_vec; extern const bfd_target bfd_elf32_ia64_big_vec; +extern const bfd_target bfd_elf32_ia64_hpux_big_vec; extern const bfd_target bfd_elf32_little_generic_vec; extern const bfd_target bfd_elf32_littlearc_vec; extern const bfd_target bfd_elf32_littlearm_oabi_vec; @@ -540,6 +525,7 @@ extern const bfd_target bfd_elf32_mcore_ extern const bfd_target bfd_elf32_mn10200_vec; extern const bfd_target bfd_elf32_mn10300_vec; extern const bfd_target bfd_elf32_openrisc_vec; +extern const bfd_target bfd_elf32_or32_big_vec; extern const bfd_target bfd_elf32_pj_vec; extern const bfd_target bfd_elf32_pjl_vec; extern const bfd_target bfd_elf32_powerpc_vec; @@ -549,11 +535,14 @@ extern const bfd_target bfd_elf32_sh_vec extern const bfd_target bfd_elf32_shblin_vec; extern const bfd_target bfd_elf32_shl_vec; extern const bfd_target bfd_elf32_shlin_vec; +extern const bfd_target bfd_elf32_shlnbsd_vec; +extern const bfd_target bfd_elf32_shnbsd_vec; extern const bfd_target bfd_elf32_sparc_vec; extern const bfd_target bfd_elf32_tradbigmips_vec; extern const bfd_target bfd_elf32_tradlittlemips_vec; extern const bfd_target bfd_elf32_us_cris_vec; extern const bfd_target bfd_elf32_v850_vec; +extern const bfd_target bfd_elf32_xstormy16_vec; extern const bfd_target bfd_elf64_alpha_vec; extern const bfd_target bfd_elf64_big_generic_vec; extern const bfd_target bfd_elf64_bigmips_vec; @@ -562,6 +551,7 @@ extern const bfd_target bfd_elf64_hppa_v extern const bfd_target bfd_elf64_ia64_aix_big_vec; extern const bfd_target bfd_elf64_ia64_aix_little_vec; extern const bfd_target bfd_elf64_ia64_big_vec; +extern const bfd_target bfd_elf64_ia64_hpux_big_vec; extern const bfd_target bfd_elf64_ia64_little_vec; extern const bfd_target bfd_elf64_little_generic_vec; extern const bfd_target bfd_elf64_littlemips_vec; @@ -632,6 +622,7 @@ extern const bfd_target nlm32_i386_vec; extern const bfd_target nlm32_powerpc_vec; extern const bfd_target nlm32_sparc_vec; extern const bfd_target oasys_vec; +extern const bfd_target or32coff_big_vec; extern const bfd_target pc532machaout_vec; extern const bfd_target pc532netbsd_vec; extern const bfd_target pdp11_aout_vec; @@ -754,6 +745,7 @@ static const bfd_target * const _bfd_tar &bfd_elf32_d10v_vec, &bfd_elf32_d30v_vec, &bfd_elf32_fr30_vec, + &bfd_elf32_h8300_vec, &bfd_elf32_hppa_linux_vec, &bfd_elf32_hppa_vec, &bfd_elf32_i370_vec, @@ -764,6 +756,7 @@ static const bfd_target * const _bfd_tar #if 0 &bfd_elf32_ia64_big_vec, #endif + &bfd_elf32_ia64_hpux_big_vec, &bfd_elf32_little_generic_vec, &bfd_elf32_littlearc_vec, &bfd_elf32_littlearm_oabi_vec, @@ -779,6 +772,7 @@ static const bfd_target * const _bfd_tar &bfd_elf32_mn10200_vec, &bfd_elf32_mn10300_vec, &bfd_elf32_openrisc_vec, + &bfd_elf32_or32_big_vec, &bfd_elf32_pj_vec, &bfd_elf32_pjl_vec, &bfd_elf32_powerpc_vec, @@ -788,11 +782,14 @@ static const bfd_target * const _bfd_tar &bfd_elf32_shblin_vec, &bfd_elf32_shl_vec, &bfd_elf32_shlin_vec, + &bfd_elf32_shlnbsd_vec, + &bfd_elf32_shnbsd_vec, &bfd_elf32_sparc_vec, &bfd_elf32_tradbigmips_vec, &bfd_elf32_tradlittlemips_vec, &bfd_elf32_us_cris_vec, &bfd_elf32_v850_vec, + &bfd_elf32_xstormy16_vec, #ifdef BFD64 &bfd_elf64_alpha_vec, &bfd_elf64_big_generic_vec, @@ -802,6 +799,7 @@ static const bfd_target * const _bfd_tar &bfd_elf64_ia64_aix_big_vec, &bfd_elf64_ia64_aix_little_vec, &bfd_elf64_ia64_big_vec, + &bfd_elf64_ia64_hpux_big_vec, &bfd_elf64_ia64_little_vec, &bfd_elf64_little_generic_vec, &bfd_elf64_littlemips_vec, @@ -908,6 +906,9 @@ static const bfd_target * const _bfd_tar can be annoying target mis-matches. */ &oasys_vec, #endif + /* Entry for the OpenRISC family. */ + &or32coff_big_vec, + &pc532machaout_vec, &pc532netbsd_vec, &pdp11_aout_vec, diff -uprN binutils-2.11.92.0.12.3/bfd/trad-core.c binutils-2.11.93.0.2/bfd/trad-core.c --- binutils-2.11.92.0.12.3/bfd/trad-core.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/trad-core.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* BFD back end for traditional Unix core files (U-area and raw sections) Copyright 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, - 2000, 2001 + 2000, 2001, 2002 Free Software Foundation, Inc. Written by John Gilmore of Cygnus Support. @@ -159,25 +159,17 @@ trad_unix_core_file_p (abfd) rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */ - /* Create the sections. This is raunchy, but bfd_close wants to free - them separately. */ + /* Create the sections. */ - amt = sizeof (asection); - core_stacksec(abfd) = (asection *) bfd_zalloc (abfd, amt); + core_stacksec(abfd) = bfd_make_section_anyway (abfd, ".stack"); if (core_stacksec (abfd) == NULL) - return NULL; - amt = sizeof (asection); - core_datasec (abfd) = (asection *) bfd_zalloc (abfd, amt); + goto fail; + core_datasec (abfd) = bfd_make_section_anyway (abfd, ".data"); if (core_datasec (abfd) == NULL) - return NULL; - amt = sizeof (asection); - core_regsec (abfd) = (asection *) bfd_zalloc (abfd, amt); + goto fail; + core_regsec (abfd) = bfd_make_section_anyway (abfd, ".reg"); if (core_regsec (abfd) == NULL) - return NULL; - - core_stacksec (abfd)->name = ".stack"; - core_datasec (abfd)->name = ".data"; - core_regsec (abfd)->name = ".reg"; + goto fail; core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS; @@ -234,12 +226,13 @@ trad_unix_core_file_p (abfd) core_datasec (abfd)->alignment_power = 2; core_regsec (abfd)->alignment_power = 2; - abfd->sections = core_stacksec (abfd); - core_stacksec (abfd)->next = core_datasec (abfd); - core_datasec (abfd)->next = core_regsec (abfd); - abfd->section_count = 3; - return abfd->xvec; + + fail: + bfd_release (abfd, abfd->tdata.any); + abfd->tdata.any = NULL; + bfd_section_list_clear (abfd); + return NULL; } char * diff -uprN binutils-2.11.92.0.12.3/bfd/versados.c binutils-2.11.93.0.2/bfd/versados.c --- binutils-2.11.92.0.12.3/bfd/versados.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/versados.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,6 @@ /* BFD back-end for VERSAdos-E objects. - Copyright 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1995, 1996, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support . Versados is a Motorola trademark. @@ -55,7 +56,6 @@ static boolean versados_get_section_cont static boolean versados_set_section_contents PARAMS ((bfd *, sec_ptr, void *, file_ptr, bfd_size_type)); static int versados_sizeof_headers PARAMS ((bfd *, boolean)); -static asymbol *versados_make_empty_symbol PARAMS ((bfd *)); static long int versados_get_symtab_upper_bound PARAMS ((bfd *)); static long int versados_get_symtab PARAMS ((bfd *, asymbol **)); static void versados_get_symbol_info @@ -723,18 +723,6 @@ versados_sizeof_headers (abfd, exec) return 0; } -static asymbol * -versados_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *new; - - new = (asymbol *) bfd_zalloc (abfd, (bfd_size_type) sizeof (asymbol)); - if (new) - new->the_bfd = abfd; - return new; -} - /* Return the amount of memory needed to read the symbol table. */ static long @@ -865,6 +853,7 @@ versados_canonicalize_reloc (abfd, secti #define versados_bfd_is_local_label_name bfd_generic_is_local_label_name #define versados_get_lineno _bfd_nosymbols_get_lineno #define versados_find_nearest_line _bfd_nosymbols_find_nearest_line +#define versados_make_empty_symbol _bfd_generic_make_empty_symbol #define versados_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol #define versados_read_minisymbols _bfd_generic_read_minisymbols #define versados_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol diff -uprN binutils-2.11.92.0.12.3/bfd/version.h binutils-2.11.93.0.2/bfd/version.h --- binutils-2.11.92.0.12.3/bfd/version.h Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/bfd/version.h Thu Feb 7 10:21:03 2002 @@ -1 +1 @@ -#define BFD_VERSION_DATE 20011121 +#define BFD_VERSION_DATE 20020207 diff -uprN binutils-2.11.92.0.12.3/bfd/vms-gsd.c binutils-2.11.93.0.2/bfd/vms-gsd.c --- binutils-2.11.92.0.12.3/bfd/vms-gsd.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/vms-gsd.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,7 @@ /* vms-gsd.c -- BFD back-end for VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. go and read the openVMS linker manual (esp. appendix B) if you don't know what's going on here :-) @@ -635,7 +636,7 @@ _bfd_vms_slurp_gsd (abfd, objtype) { /* symbol specification (definition or reference) */ - symbol = _bfd_vms_make_empty_symbol (abfd); + symbol = bfd_make_empty_symbol (abfd); if (symbol == 0) return -1; diff -uprN binutils-2.11.92.0.12.3/bfd/vms-misc.c binutils-2.11.93.0.2/bfd/vms-misc.c --- binutils-2.11.92.0.12.3/bfd/vms-misc.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/vms-misc.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* vms-misc.c -- Miscellaneous functions for VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Klaus K"ampf (kkaempf@rmi.de) @@ -1070,7 +1070,7 @@ new_symbol (abfd, name) _bfd_vms_debug (7, "new_symbol %s\n", name); #endif - symbol = _bfd_vms_make_empty_symbol (abfd); + symbol = bfd_make_empty_symbol (abfd); if (symbol == 0) return symbol; symbol->name = name; diff -uprN binutils-2.11.92.0.12.3/bfd/vms-tir.c binutils-2.11.93.0.2/bfd/vms-tir.c --- binutils-2.11.92.0.12.3/bfd/vms-tir.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/vms-tir.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,7 @@ /* vms-tir.c -- BFD back-end for VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. TIR record handling functions ETIR record handling functions @@ -10,19 +11,19 @@ Written by Klaus K"ampf (kkaempf@rmi.de) -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. */ /* The following type abbreviations are used: @@ -58,9 +59,11 @@ static int alloc_section PARAMS ((bfd *, static int etir_cmd PARAMS ((bfd *, int, unsigned char *)); static int analyze_tir PARAMS ((bfd *, unsigned char *, unsigned int)); static int analyze_etir PARAMS ((bfd *, unsigned char *, unsigned int)); +static unsigned char * tir_opr PARAMS ((bfd *, unsigned char *)); +static const char * tir_cmd_name PARAMS ((int)); +static const char * cmd_name PARAMS ((int)); -/*-----------------------------------------------------------------------------*/ - + static int check_section (abfd, size) bfd *abfd; @@ -85,9 +88,9 @@ check_section (abfd, size) return 0; } -/* routines to fill sections contents during tir/etir read */ +/* Routines to fill sections contents during tir/etir read. */ -/* Initialize image buffer pointer to be filled */ +/* Initialize image buffer pointer to be filled. */ static void image_set_ptr (abfd, psect, offset) @@ -105,7 +108,7 @@ image_set_ptr (abfd, psect, offset) return; } -/* Increment image buffer pointer by offset */ +/* Increment image buffer pointer by offset. */ static void image_inc_ptr (abfd, offset) @@ -121,7 +124,7 @@ image_inc_ptr (abfd, offset) return; } -/* Dump multiple bytes to section image */ +/* Dump multiple bytes to section image. */ static void image_dump (abfd, ptr, size, offset) @@ -144,7 +147,7 @@ image_dump (abfd, ptr, size, offset) return; } -/* Write byte to section image */ +/* Write byte to section image. */ static void image_write_b (abfd, value) @@ -162,7 +165,7 @@ image_write_b (abfd, value) return; } -/* Write 2-byte word to image */ +/* Write 2-byte word to image. */ static void image_write_w (abfd, value) @@ -182,7 +185,7 @@ image_write_w (abfd, value) return; } -/* Write 4-byte long to image */ +/* Write 4-byte long to image. */ static void image_write_l (abfd, value) @@ -202,7 +205,7 @@ image_write_l (abfd, value) return; } -/* Write 8-byte quad to image */ +/* Write 8-byte quad to image. */ static void image_write_q (abfd, value) @@ -222,7 +225,52 @@ image_write_q (abfd, value) return; } +static const char * +cmd_name (cmd) + int cmd; +{ + switch (cmd) + { + case ETIR_S_C_STA_GBL: return "ETIR_S_C_STA_GBL"; + case ETIR_S_C_STA_PQ: return "ETIR_S_C_STA_PQ"; + case ETIR_S_C_STA_LI: return "ETIR_S_C_STA_LI"; + case ETIR_S_C_STA_MOD: return "ETIR_S_C_STA_MOD"; + case ETIR_S_C_STA_CKARG: return "ETIR_S_C_STA_CKARG"; + case ETIR_S_C_STO_B: return "ETIR_S_C_STO_B"; + case ETIR_S_C_STO_W: return "ETIR_S_C_STO_W"; + case ETIR_S_C_STO_GBL: return "ETIR_S_C_STO_GBL"; + case ETIR_S_C_STO_CA: return "ETIR_S_C_STO_CA"; + case ETIR_S_C_STO_RB: return "ETIR_S_C_STO_RB"; + case ETIR_S_C_STO_AB: return "ETIR_S_C_STO_AB"; + case ETIR_S_C_STO_GBL_LW: return "ETIR_S_C_STO_GBL_LW"; + case ETIR_S_C_STO_LP_PSB: return "ETIR_S_C_STO_LP_PSB"; + case ETIR_S_C_STO_HINT_GBL: return "ETIR_S_C_STO_HINT_GBL"; + case ETIR_S_C_STO_HINT_PS: return "ETIR_S_C_STO_HINT_PS"; + case ETIR_S_C_OPR_INSV: return "ETIR_S_C_OPR_INSV"; + case ETIR_S_C_OPR_USH: return "ETIR_S_C_OPR_USH"; + case ETIR_S_C_OPR_ROT: return "ETIR_S_C_OPR_ROT"; + case ETIR_S_C_OPR_REDEF: return "ETIR_S_C_OPR_REDEF"; + case ETIR_S_C_OPR_DFLIT: return "ETIR_S_C_OPR_DFLIT"; + case ETIR_S_C_STC_LP: return "ETIR_S_C_STC_LP"; + case ETIR_S_C_STC_GBL: return "ETIR_S_C_STC_GBL"; + case ETIR_S_C_STC_GCA: return "ETIR_S_C_STC_GCA"; + case ETIR_S_C_STC_PS: return "ETIR_S_C_STC_PS"; + case ETIR_S_C_STC_NBH_PS: return "ETIR_S_C_STC_NBH_PS"; + case ETIR_S_C_STC_NOP_GBL: return "ETIR_S_C_STC_NOP_GBL"; + case ETIR_S_C_STC_NOP_PS: return "ETIR_S_C_STC_NOP_PS"; + case ETIR_S_C_STC_BSR_GBL: return "ETIR_S_C_STC_BSR_GBL"; + case ETIR_S_C_STC_BSR_PS: return "ETIR_S_C_STC_BSR_PS"; + case ETIR_S_C_STC_LDA_GBL: return "ETIR_S_C_STC_LDA_GBL"; + case ETIR_S_C_STC_LDA_PS: return "ETIR_S_C_STC_LDA_PS"; + case ETIR_S_C_STC_BOH_GBL: return "ETIR_S_C_STC_BOH_GBL"; + case ETIR_S_C_STC_BOH_PS: return "ETIR_S_C_STC_BOH_PS"; + case ETIR_S_C_STC_NBH_GBL: return "ETIR_S_C_STC_NBH_GBL"; + default: + /* These names have not yet been added to this switch statement. */ + abort (); + } +} #define HIGHBIT(op) ((op & 0x80000000L) == 0x80000000L) /* etir_sta @@ -232,7 +280,7 @@ image_write_q (abfd, value) handle sta_xxx commands in etir section ptr points to data area in record - see table B-8 of the openVMS linker manual */ + see table B-8 of the openVMS linker manual. */ static boolean etir_sta (abfd, cmd, ptr) @@ -266,7 +314,8 @@ etir_sta (abfd, cmd, ptr) if (entry == (vms_symbol_entry *) NULL) { #if VMS_DEBUG - _bfd_vms_debug (3, "ETIR_S_C_STA_GBL: no symbol \"%s\"\n", name); + _bfd_vms_debug (3, "%s: no symbol \"%s\"\n", + cmd_name (cmd), name); #endif _bfd_vms_push (abfd, (uquad) 0, -1); } @@ -310,7 +359,8 @@ etir_sta (abfd, cmd, ptr) psect = bfd_getl32 (ptr); if (psect >= PRIV (section_count)) { - (*_bfd_error_handler) (_("Bad section index in ETIR_S_C_STA_PQ")); + (*_bfd_error_handler) (_("bad section index in %s"), + cmd_name (cmd)); bfd_set_error (bfd_error_bad_value); return false; } @@ -319,18 +369,15 @@ etir_sta (abfd, cmd, ptr) } break; - /* all not supported */ - case ETIR_S_C_STA_LI: case ETIR_S_C_STA_MOD: case ETIR_S_C_STA_CKARG: - - (*_bfd_error_handler) (_("Unsupported STA cmd %d"), cmd); + (*_bfd_error_handler) (_("unsupported STA cmd %s"), cmd_name (cmd)); return false; break; default: - (*_bfd_error_handler) (_("Reserved STA cmd %d"), cmd); + (*_bfd_error_handler) (_("reserved STA cmd %d"), cmd); return false; break; } @@ -348,7 +395,7 @@ etir_sta (abfd, cmd, ptr) handle sto_xxx commands in etir section ptr points to data area in record - see table B-9 of the openVMS linker manual */ + see table B-9 of the openVMS linker manual. */ static boolean etir_sto (abfd, cmd, ptr) @@ -366,7 +413,6 @@ etir_sto (abfd, cmd, ptr) switch (cmd) { - /* store byte: pop stack, write byte arg: - */ @@ -374,7 +420,8 @@ etir_sto (abfd, cmd, ptr) dummy = _bfd_vms_pop (abfd, &psect); #if 0 if (is_share) /* FIXME */ - (*_bfd_error_handler) ("ETIR_S_C_STO_B: byte fixups not supported"); + (*_bfd_error_handler) ("%s: byte fixups not supported", + cmd_name (cmd)); #endif /* FIXME: check top bits */ image_write_b (abfd, (unsigned int) dummy & 0xff); @@ -387,7 +434,8 @@ etir_sto (abfd, cmd, ptr) dummy = _bfd_vms_pop (abfd, &psect); #if 0 if (is_share) /* FIXME */ - (*_bfd_error_handler) ("ETIR_S_C_STO_B: word fixups not supported"); + (*_bfd_error_handler) ("%s: word fixups not supported", + cmd_name (cmd)); #endif /* FIXME: check top bits */ image_write_w (abfd, (unsigned int) dummy & 0xffff); @@ -399,7 +447,7 @@ etir_sto (abfd, cmd, ptr) case ETIR_S_C_STO_LW: dummy = _bfd_vms_pop (abfd, &psect); dummy += (PRIV (sections)[psect])->vma; - /* FIXME: check top bits */ + /* FIXME: check top bits. */ image_write_l (abfd, (unsigned int) dummy & 0xffffffff); break; @@ -428,7 +476,7 @@ etir_sto (abfd, cmd, ptr) break; /* store global: write symbol value - arg: cs global symbol name */ + arg: cs global symbol name. */ case ETIR_S_C_STO_GBL: { @@ -440,17 +488,18 @@ etir_sto (abfd, cmd, ptr) name, false, false); if (entry == (vms_symbol_entry *) NULL) { - (*_bfd_error_handler) (_("ETIR_S_C_STO_GBL: no symbol \"%s\""), - name); + (*_bfd_error_handler) (_("%s: no symbol \"%s\""), + cmd_name (cmd), name); return false; } else - image_write_q (abfd, (uquad) (entry->symbol->value)); /* FIXME, reloc */ + /* FIXME, reloc. */ + image_write_q (abfd, (uquad) (entry->symbol->value)); } break; /* store code address: write address of entry point - arg: cs global symbol name (procedure) */ + arg: cs global symbol name (procedure). */ case ETIR_S_C_STO_CA: { @@ -462,8 +511,8 @@ etir_sto (abfd, cmd, ptr) name, false, false); if (entry == (vms_symbol_entry *) NULL) { - (*_bfd_error_handler) (_("ETIR_S_C_STO_CA: no symbol \"%s\""), - name); + (*_bfd_error_handler) (_("%s: no symbol \"%s\""), + cmd_name (cmd), name); return false; } else @@ -471,15 +520,8 @@ etir_sto (abfd, cmd, ptr) } break; - /* not supported */ - - case ETIR_S_C_STO_RB: - case ETIR_S_C_STO_AB: - (*_bfd_error_handler) (_("ETIR_S_C_STO_RB/AB: Not supported")); - break; - - /* store offset to psect: pop stack, add low 32 bits to base of psect - arg: - */ + /* Store offset to psect: pop stack, add low 32 bits to base of psect + arg: none. */ case ETIR_S_C_STO_OFF: { @@ -492,9 +534,9 @@ etir_sto (abfd, cmd, ptr) } break; - /* store immediate + /* Store immediate arg: lw count of bytes - da data */ + da data. */ case ETIR_S_C_STO_IMM: { @@ -505,12 +547,12 @@ etir_sto (abfd, cmd, ptr) } break; - /* this code is 'reserved to digital' according to the openVMS + /* This code is 'reserved to digital' according to the openVMS linker manual, however it is generated by the DEC C compiler and defined in the include file. FIXME, since the following is just a guess store global longword: store 32bit value of symbol - arg: cs symbol name */ + arg: cs symbol name. */ case ETIR_S_C_STO_GBL_LW: { @@ -523,47 +565,41 @@ etir_sto (abfd, cmd, ptr) if (entry == (vms_symbol_entry *) NULL) { #if VMS_DEBUG - _bfd_vms_debug (3, "ETIR_S_C_STO_GBL_LW: no symbol \"%s\"\n", name); + _bfd_vms_debug (3, "%s: no symbol \"%s\"\n", cmd_name (cmd), name); #endif image_write_l (abfd, (unsigned long) 0); /* FIXME, reloc */ } else - image_write_l (abfd, (unsigned long) (entry->symbol->value)); /* FIXME, reloc */ + /* FIXME, reloc. */ + image_write_l (abfd, (unsigned long) (entry->symbol->value)); } break; - /* not supported */ - + case ETIR_S_C_STO_RB: + case ETIR_S_C_STO_AB: case ETIR_S_C_STO_LP_PSB: - (*_bfd_error_handler) (_("ETIR_S_C_STO_LP_PSB: Not supported")); + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; - /* */ - case ETIR_S_C_STO_HINT_GBL: - (*_bfd_error_handler) (_("ETIR_S_C_STO_HINT_GBL: not implemented")); - break; - - /* */ - case ETIR_S_C_STO_HINT_PS: - (*_bfd_error_handler) (_("ETIR_S_C_STO_HINT_PS: not implemented")); + (*_bfd_error_handler) (_("%s: not implemented"), cmd_name (cmd)); break; default: - (*_bfd_error_handler) (_("Reserved STO cmd %d"), cmd); + (*_bfd_error_handler) (_("reserved STO cmd %d"), cmd); break; } return true; } -/* stack operator commands +/* Stack operator commands all 32 bit signed arithmetic all word just like a stack calculator arguments are popped from stack, results are pushed on stack - see table B-10 of the openVMS linker manual */ + see table B-10 of the openVMS linker manual. */ static boolean etir_opr (abfd, cmd, ptr) @@ -580,40 +616,28 @@ etir_opr (abfd, cmd, ptr) switch (cmd) { - /* operation */ - - /* no-op */ - - case ETIR_S_C_OPR_NOP: + case ETIR_S_C_OPR_NOP: /* no-op */ break; - /* add */ - - case ETIR_S_C_OPR_ADD: + case ETIR_S_C_OPR_ADD: /* add */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 + op2), -1); break; - /* subtract */ - - case ETIR_S_C_OPR_SUB: + case ETIR_S_C_OPR_SUB: /* subtract */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op2 - op1), -1); break; - /* multiply */ - - case ETIR_S_C_OPR_MUL: + case ETIR_S_C_OPR_MUL: /* multiply */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 * op2), -1); break; - /* divide */ - - case ETIR_S_C_OPR_DIV: + case ETIR_S_C_OPR_DIV: /* divide */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); if (op2 == 0) @@ -622,54 +646,35 @@ etir_opr (abfd, cmd, ptr) _bfd_vms_push (abfd, (uquad) (op2 / op1), -1); break; - /* logical and */ - - case ETIR_S_C_OPR_AND: + case ETIR_S_C_OPR_AND: /* logical and */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 & op2), -1); break; - /* logical inclusive or */ - - case ETIR_S_C_OPR_IOR: + case ETIR_S_C_OPR_IOR: /* logical inclusive or */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 | op2), -1); break; - /* logical exclusive or */ - - case ETIR_S_C_OPR_EOR: + case ETIR_S_C_OPR_EOR: /* logical exclusive or */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 ^ op2), -1); break; - /* negate */ - - case ETIR_S_C_OPR_NEG: + case ETIR_S_C_OPR_NEG: /* negate */ op1 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (-op1), -1); break; - /* complement */ - - case ETIR_S_C_OPR_COM: + case ETIR_S_C_OPR_COM: /* complement */ op1 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 ^ -1L), -1); break; - /* insert field */ - - case ETIR_S_C_OPR_INSV: - (void) _bfd_vms_pop (abfd, NULL); - (*_bfd_error_handler) (_("ETIR_S_C_OPR_INSV: Not supported")); - break; - - /* arithmetic shift */ - - case ETIR_S_C_OPR_ASH: + case ETIR_S_C_OPR_ASH: /* arithmetic shift */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); if (op2 < 0) /* shift right */ @@ -679,21 +684,16 @@ etir_opr (abfd, cmd, ptr) _bfd_vms_push (abfd, (uquad) op1, -1); break; - /* unsigned shift */ - - case ETIR_S_C_OPR_USH: - (*_bfd_error_handler) (_("ETIR_S_C_OPR_USH: Not supported")); - break; - - /* rotate */ - - case ETIR_S_C_OPR_ROT: - (*_bfd_error_handler) (_("ETIR_S_C_OPR_ROT: Not supported")); + case ETIR_S_C_OPR_INSV: /* insert field */ + (void) _bfd_vms_pop (abfd, NULL); + case ETIR_S_C_OPR_USH: /* unsigned shift */ + case ETIR_S_C_OPR_ROT: /* rotate */ + case ETIR_S_C_OPR_REDEF: /* Redefine symbol to current location. */ + case ETIR_S_C_OPR_DFLIT: /* Define a literal. */ + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; - /* select */ - - case ETIR_S_C_OPR_SEL: + case ETIR_S_C_OPR_SEL: /* select */ if ((long) _bfd_vms_pop (abfd, NULL) & 0x01L) (void) _bfd_vms_pop (abfd, NULL); else @@ -704,29 +704,17 @@ etir_opr (abfd, cmd, ptr) } break; - /* redefine symbol to current location */ - - case ETIR_S_C_OPR_REDEF: - (*_bfd_error_handler) (_("ETIR_S_C_OPR_REDEF: Not supported")); - break; - - /* define a literal */ - - case ETIR_S_C_OPR_DFLIT: - (*_bfd_error_handler) (_("ETIR_S_C_OPR_DFLIT: Not supported")); - break; - default: - (*_bfd_error_handler) (_("Reserved OPR cmd %d"), cmd); + (*_bfd_error_handler) (_("reserved OPR cmd %d"), cmd); break; } return true; } -/* control commands +/* Control commands. - see table B-11 of the openVMS linker manual */ + See table B-11 of the openVMS linker manual. */ static boolean etir_ctl (abfd, cmd, ptr) @@ -745,7 +733,7 @@ etir_ctl (abfd, cmd, ptr) switch (cmd) { /* set relocation base: pop stack, set image location counter - arg: - */ + arg: none. */ case ETIR_S_C_CTL_SETRB: dummy = _bfd_vms_pop (abfd, &psect); @@ -761,7 +749,7 @@ etir_ctl (abfd, cmd, ptr) break; /* define location: pop index, save location counter under index - arg: - */ + arg: none. */ case ETIR_S_C_CTL_DFLOC: dummy = _bfd_vms_pop (abfd, NULL); @@ -769,7 +757,7 @@ etir_ctl (abfd, cmd, ptr) break; /* set location: pop index, restore location counter from index - arg: - */ + arg: none. */ case ETIR_S_C_CTL_STLOC: dummy = _bfd_vms_pop (abfd, &psect); @@ -777,7 +765,7 @@ etir_ctl (abfd, cmd, ptr) break; /* stack defined location: pop index, push location counter from index - arg: - */ + arg: none. */ case ETIR_S_C_CTL_STKDL: dummy = _bfd_vms_pop (abfd, &psect); @@ -785,7 +773,7 @@ etir_ctl (abfd, cmd, ptr) break; default: - (*_bfd_error_handler) (_("Reserved CTL cmd %d"), cmd); + (*_bfd_error_handler) (_("reserved CTL cmd %d"), cmd); break; } return true; @@ -793,7 +781,7 @@ etir_ctl (abfd, cmd, ptr) /* store conditional commands - see table B-12 and B-13 of the openVMS linker manual */ + See table B-12 and B-13 of the openVMS linker manual. */ static boolean etir_stc (abfd, cmd, ptr) @@ -801,7 +789,6 @@ etir_stc (abfd, cmd, ptr) int cmd; unsigned char *ptr ATTRIBUTE_UNUSED; { - #if VMS_DEBUG _bfd_vms_debug (5, "etir_stc %d/%x\n", cmd, cmd); _bfd_hexdump (8, ptr, 16, (int) ptr); @@ -810,17 +797,17 @@ etir_stc (abfd, cmd, ptr) switch (cmd) { /* 200 Store-conditional Linkage Pair - arg: */ + arg: none. */ case ETIR_S_C_STC_LP: - (*_bfd_error_handler) (_("ETIR_S_C_STC_LP: not supported")); + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; /* 201 Store-conditional Linkage Pair with Procedure Signature arg: lw linkage index - cs procedure name - by signature length - da signature */ + cs procedure name + by signature length + da signature. */ case ETIR_S_C_STC_LP_PSB: image_inc_ptr (abfd, (uquad) 16); /* skip entry,procval */ @@ -828,87 +815,87 @@ etir_stc (abfd, cmd, ptr) /* 202 Store-conditional Address at global address arg: lw linkage index - cs global name */ + cs global name */ case ETIR_S_C_STC_GBL: - (*_bfd_error_handler) (_("ETIR_S_C_STC_GBL: not supported")); + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; /* 203 Store-conditional Code Address at global address arg: lw linkage index - cs procedure name */ + cs procedure name */ case ETIR_S_C_STC_GCA: - (*_bfd_error_handler) (_("ETIR_S_C_STC_GCA: not supported")); + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; /* 204 Store-conditional Address at psect + offset arg: lw linkage index - lw psect index - qw offset */ + lw psect index + qw offset */ case ETIR_S_C_STC_PS: - (*_bfd_error_handler) (_("ETIR_S_C_STC_PS: not supported")); + (*_bfd_error_handler) (_("%s: not supported"), cmd_name (cmd)); break; /* 205 Store-conditional NOP at address of global - arg: */ + arg: none. */ case ETIR_S_C_STC_NOP_GBL: /* 206 Store-conditional NOP at pect + offset - arg: */ + arg: none. */ case ETIR_S_C_STC_NOP_PS: /* 207 Store-conditional BSR at global address - arg: */ + arg: none. */ case ETIR_S_C_STC_BSR_GBL: /* 208 Store-conditional BSR at pect + offset - arg: */ + arg: none. */ case ETIR_S_C_STC_BSR_PS: /* 209 Store-conditional LDA at global address - arg: */ + arg: none. */ case ETIR_S_C_STC_LDA_GBL: /* 210 Store-conditional LDA at psect + offset - arg: */ + arg: none. */ case ETIR_S_C_STC_LDA_PS: /* 211 Store-conditional BSR or Hint at global address - arg: */ + arg: none. */ case ETIR_S_C_STC_BOH_GBL: /* 212 Store-conditional BSR or Hint at pect + offset - arg: */ + arg: none. */ case ETIR_S_C_STC_BOH_PS: /* 213 Store-conditional NOP,BSR or HINT at global address - arg: */ + arg: none. */ case ETIR_S_C_STC_NBH_GBL: /* 214 Store-conditional NOP,BSR or HINT at psect + offset - arg: */ + arg: none. */ case ETIR_S_C_STC_NBH_PS: /* FIXME */ #if 0 - (*_bfd_error_handler) ("ETIR_S_C_STC_xx: (%d) not supported", cmd); + (*_bfd_error_handler) ("%s: not supported", cmd_name (cmd)); #endif break; default: #if VMS_DEBUG - _bfd_vms_debug (3, "Reserved STC cmd %d", cmd); + _bfd_vms_debug (3, "reserved STC cmd %d", cmd); #endif break; } @@ -925,7 +912,7 @@ new_section (abfd, idx) char *name; #if VMS_DEBUG - _bfd_vms_debug (5, "new_section %d\n", idx); + _bfd_vms_debug (5, "new_section %d\n", idx); #endif sprintf (sname, SECTION_NAME_TEMPLATE, idx); @@ -961,7 +948,7 @@ alloc_section (abfd, idx) bfd_size_type amt; #if VMS_DEBUG - _bfd_vms_debug (4, "alloc_section %d\n", idx); + _bfd_vms_debug (4, "alloc_section %d\n", idx); #endif amt = idx + 1; @@ -982,16 +969,14 @@ alloc_section (abfd, idx) return 0; } -/* - * tir_sta - * - * vax stack commands - * - * handle sta_xxx commands in tir section - * ptr points to data area in record - * - * see table 7-3 of the VAX/VMS linker manual - */ +/* tir_sta + + vax stack commands + + Handle sta_xxx commands in tir section + ptr points to data area in record + + See table 7-3 of the VAX/VMS linker manual. */ static unsigned char * tir_sta (bfd *abfd, unsigned char *ptr) @@ -1006,12 +991,10 @@ tir_sta (bfd *abfd, unsigned char *ptr) { /* stack */ case TIR_S_C_STA_GBL: - /* - * stack global - * arg: cs symbol name - * - * stack 32 bit value of symbol (high bits set to 0) - */ + /* stack global + arg: cs symbol name + + stack 32 bit value of symbol (high bits set to 0). */ { char *name; vms_symbol_entry *entry; @@ -1028,46 +1011,37 @@ tir_sta (bfd *abfd, unsigned char *ptr) break; case TIR_S_C_STA_SB: - /* - * stack signed byte - * arg: by value - * - * stack byte value, sign extend to 32 bit - */ + /* stack signed byte + arg: by value + + stack byte value, sign extend to 32 bit. */ _bfd_vms_push (abfd, (uquad) *ptr++, -1); break; case TIR_S_C_STA_SW: - /* - * stack signed short word - * arg: sh value - * - * stack 16 bit value, sign extend to 32 bit - */ + /* stack signed short word + arg: sh value + + stack 16 bit value, sign extend to 32 bit. */ _bfd_vms_push (abfd, (uquad) bfd_getl16 (ptr), -1); ptr += 2; break; case TIR_S_C_STA_LW: - /* - * stack signed longword - * arg: lw value - * - * stack 32 bit value - */ + /* stack signed longword + arg: lw value + + stack 32 bit value. */ _bfd_vms_push (abfd, (uquad) bfd_getl32 (ptr), -1); ptr += 4; break; case TIR_S_C_STA_PB: case TIR_S_C_STA_WPB: - /* - * stack psect base plus byte offset (word index) - * arg: by section index - * (sh section index) - * by signed byte offset - * - */ + /* stack psect base plus byte offset (word index) + arg: by section index + (sh section index) + by signed byte offset. */ { unsigned long dummy; unsigned int psect; @@ -1081,9 +1055,7 @@ tir_sta (bfd *abfd, unsigned char *ptr) } if (psect >= PRIV (section_count)) - { - alloc_section (abfd, psect); - } + alloc_section (abfd, psect); dummy = (long) *ptr++; dummy += (PRIV (sections)[psect])->vma; @@ -1093,13 +1065,10 @@ tir_sta (bfd *abfd, unsigned char *ptr) case TIR_S_C_STA_PW: case TIR_S_C_STA_WPW: - /* - * stack psect base plus word offset (word index) - * arg: by section index - * (sh section index) - * sh signed short offset - * - */ + /* stack psect base plus word offset (word index) + arg: by section index + (sh section index) + sh signed short offset. */ { unsigned long dummy; unsigned int psect; @@ -1113,9 +1082,7 @@ tir_sta (bfd *abfd, unsigned char *ptr) } if (psect >= PRIV (section_count)) - { - alloc_section (abfd, psect); - } + alloc_section (abfd, psect); dummy = bfd_getl16 (ptr); ptr+=2; dummy += (PRIV (sections)[psect])->vma; @@ -1125,13 +1092,10 @@ tir_sta (bfd *abfd, unsigned char *ptr) case TIR_S_C_STA_PL: case TIR_S_C_STA_WPL: - /* - * stack psect base plus long offset (word index) - * arg: by section index - * (sh section index) - * lw signed longword offset - * - */ + /* stack psect base plus long offset (word index) + arg: by section index + (sh section index) + lw signed longword offset. */ { unsigned long dummy; unsigned int psect; @@ -1145,9 +1109,7 @@ tir_sta (bfd *abfd, unsigned char *ptr) } if (psect >= PRIV (section_count)) - { - alloc_section (abfd, psect); - } + alloc_section (abfd, psect); dummy = bfd_getl32 (ptr); ptr += 4; dummy += (PRIV (sections)[psect])->vma; @@ -1156,57 +1118,42 @@ tir_sta (bfd *abfd, unsigned char *ptr) break; case TIR_S_C_STA_UB: - /* - * stack unsigned byte - * arg: by value - * - * stack byte value - */ + /* stack unsigned byte + arg: by value + + stack byte value. */ _bfd_vms_push (abfd, (uquad) *ptr++, -1); break; case TIR_S_C_STA_UW: - /* - * stack unsigned short word - * arg: sh value - * - * stack 16 bit value - */ + /* stack unsigned short word + arg: sh value + + stack 16 bit value. */ _bfd_vms_push (abfd, (uquad) bfd_getl16 (ptr), -1); ptr += 2; break; case TIR_S_C_STA_BFI: - /* - * stack byte from image - * arg: - - * - */ - /*FALLTHRU*/ + /* stack byte from image + arg: none. */ + /* FALLTHRU */ case TIR_S_C_STA_WFI: - /* - * stack byte from image - * arg: - - * - */ - /*FALLTHRU*/ + /* stack byte from image + arg: none. */ + /* FALLTHRU */ case TIR_S_C_STA_LFI: - /* - * stack byte from image - * arg: - - * - */ - (*_bfd_error_handler) (_("Stack-from-image not implemented")); + /* stack byte from image + arg: none. */ + (*_bfd_error_handler) (_("stack-from-image not implemented")); return NULL; case TIR_S_C_STA_EPM: - /* - * stack entry point mask - * arg: cs symbol name - * - * stack (unsigned) entry point mask of symbol - * err if symbol is no entry point - */ + /* stack entry point mask + arg: cs symbol name + + stack (unsigned) entry point mask of symbol + err if symbol is no entry point. */ { char *name; vms_symbol_entry *entry; @@ -1216,32 +1163,28 @@ tir_sta (bfd *abfd, unsigned char *ptr) if (entry == (vms_symbol_entry *) NULL) return 0; - (*_bfd_error_handler) (_("Stack-entry-mask not fully implemented")); + (*_bfd_error_handler) (_("stack-entry-mask not fully implemented")); _bfd_vms_push (abfd, (uquad) 0, -1); ptr += *ptr + 1; } break; case TIR_S_C_STA_CKARG: - /* - * compare procedure argument - * arg: cs symbol name - * by argument index - * da argument descriptor - * - * compare argument descriptor with symbol argument (ARG$V_PASSMECH) - * and stack TRUE (args match) or FALSE (args dont match) value - */ + /* compare procedure argument + arg: cs symbol name + by argument index + da argument descriptor + + compare argument descriptor with symbol argument (ARG$V_PASSMECH) + and stack TRUE (args match) or FALSE (args dont match) value. */ (*_bfd_error_handler) (_("PASSMECH not fully implemented")); _bfd_vms_push (abfd, (uquad) 1, -1); break; case TIR_S_C_STA_LSY: - /* - * stack local symbol value - * arg: sh environment index - * cs symbol name - */ + /* stack local symbol value + arg: sh environment index + cs symbol name. */ { int envidx; char *name; @@ -1253,33 +1196,29 @@ tir_sta (bfd *abfd, unsigned char *ptr) entry = _bfd_vms_enter_symbol (abfd, name); if (entry == (vms_symbol_entry *) NULL) return 0; - (*_bfd_error_handler) (_("Stack-local-symbol not fully implemented")); + (*_bfd_error_handler) (_("stack-local-symbol not fully implemented")); _bfd_vms_push (abfd, (uquad) 0, -1); ptr += *ptr + 1; } break; case TIR_S_C_STA_LIT: - /* - * stack literal - * arg: by literal index - * - * stack literal - */ + /* stack literal + arg: by literal index + + stack literal. */ ptr++; _bfd_vms_push (abfd, (uquad) 0, -1); - (*_bfd_error_handler) (_("Stack-literal not fully implemented")); + (*_bfd_error_handler) (_("stack-literal not fully implemented")); break; case TIR_S_C_STA_LEPM: - /* - * stack local symbol entry point mask - * arg: sh environment index - * cs symbol name - * - * stack (unsigned) entry point mask of symbol - * err if symbol is no entry point - */ + /* stack local symbol entry point mask + arg: sh environment index + cs symbol name + + stack (unsigned) entry point mask of symbol + err if symbol is no entry point. */ { int envidx; char *name; @@ -1291,14 +1230,14 @@ tir_sta (bfd *abfd, unsigned char *ptr) entry = _bfd_vms_enter_symbol (abfd, name); if (entry == (vms_symbol_entry *) NULL) return 0; - (*_bfd_error_handler) (_("Stack-local-symbol-entry-point-mask not fully implemented")); + (*_bfd_error_handler) (_("stack-local-symbol-entry-point-mask not fully implemented")); _bfd_vms_push (abfd, (uquad) 0, -1); ptr += *ptr + 1; } break; default: - (*_bfd_error_handler) (_("Reserved STA cmd %d"), ptr[-1]); + (*_bfd_error_handler) (_("reserved STA cmd %d"), ptr[-1]); return NULL; break; } @@ -1306,16 +1245,45 @@ tir_sta (bfd *abfd, unsigned char *ptr) return ptr; } -/* - * tir_sto - * - * vax store commands - * - * handle sto_xxx commands in tir section - * ptr points to data area in record - * - * see table 7-4 of the VAX/VMS linker manual - */ +static const char * +tir_cmd_name (cmd) + int cmd; +{ + switch (cmd) + { + case TIR_S_C_STO_RSB: return "TIR_S_C_STO_RSB"; + case TIR_S_C_STO_RSW: return "TIR_S_C_STO_RSW"; + case TIR_S_C_STO_RL: return "TIR_S_C_STO_RL"; + case TIR_S_C_STO_VPS: return "TIR_S_C_STO_VPS"; + case TIR_S_C_STO_USB: return "TIR_S_C_STO_USB"; + case TIR_S_C_STO_USW: return "TIR_S_C_STO_USW"; + case TIR_S_C_STO_RUB: return "TIR_S_C_STO_RUB"; + case TIR_S_C_STO_RUW: return "TIR_S_C_STO_RUW"; + case TIR_S_C_STO_PIRR: return "TIR_S_C_STO_PIRR"; + case TIR_S_C_OPR_INSV: return "TIR_S_C_OPR_INSV"; + case TIR_S_C_OPR_DFLIT: return "TIR_S_C_OPR_DFLIT"; + case TIR_S_C_OPR_REDEF: return "TIR_S_C_OPR_REDEF"; + case TIR_S_C_OPR_ROT: return "TIR_S_C_OPR_ROT"; + case TIR_S_C_OPR_USH: return "TIR_S_C_OPR_USH"; + case TIR_S_C_OPR_ASH: return "TIR_S_C_OPR_ASH"; + case TIR_S_C_CTL_DFLOC: return "TIR_S_C_CTL_DFLOC"; + case TIR_S_C_CTL_STLOC: return "TIR_S_C_CTL_STLOC"; + case TIR_S_C_CTL_STKDL: return "TIR_S_C_CTL_STKDL"; + + default: + /* These strings have not been added yet. */ + abort (); + } +} + +/* tir_sto + + vax store commands + + handle sto_xxx commands in tir section + ptr points to data area in record + + See table 7-4 of the VAX/VMS linker manual. */ static unsigned char * tir_sto (bfd *abfd, unsigned char *ptr) @@ -1331,126 +1299,107 @@ tir_sto (bfd *abfd, unsigned char *ptr) switch (*ptr++) { case TIR_S_C_STO_SB: - /* - * store signed byte: pop stack, write byte - * arg: - - */ + /* store signed byte: pop stack, write byte + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); image_write_b (abfd, dummy & 0xff); /* FIXME: check top bits */ break; case TIR_S_C_STO_SW: - /* - * store signed word: pop stack, write word - * arg: - - */ + /* store signed word: pop stack, write word + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); image_write_w (abfd, dummy & 0xffff); /* FIXME: check top bits */ break; case TIR_S_C_STO_LW: - /* - * store longword: pop stack, write longword - * arg: - - */ + /* store longword: pop stack, write longword + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); image_write_l (abfd, dummy & 0xffffffff); /* FIXME: check top bits */ break; case TIR_S_C_STO_BD: - /* - * store byte displaced: pop stack, sub lc+1, write byte - * arg: - - */ + /* store byte displaced: pop stack, sub lc+1, write byte + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); dummy -= ((PRIV (sections)[psect])->vma + 1); image_write_b (abfd, dummy & 0xff);/* FIXME: check top bits */ break; case TIR_S_C_STO_WD: - /* - * store word displaced: pop stack, sub lc+2, write word - * arg: - - */ + /* store word displaced: pop stack, sub lc+2, write word + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); dummy -= ((PRIV (sections)[psect])->vma + 2); image_write_w (abfd, dummy & 0xffff);/* FIXME: check top bits */ break; + case TIR_S_C_STO_LD: - /* - * store long displaced: pop stack, sub lc+4, write long - * arg: - - */ + /* store long displaced: pop stack, sub lc+4, write long + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); dummy -= ((PRIV (sections)[psect])->vma + 4); image_write_l (abfd, dummy & 0xffffffff);/* FIXME: check top bits */ break; + case TIR_S_C_STO_LI: - /* - * store short literal: pop stack, write byte - * arg: - - */ + /* store short literal: pop stack, write byte + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); image_write_b (abfd, dummy & 0xff);/* FIXME: check top bits */ break; + case TIR_S_C_STO_PIDR: - /* - * store position independent data reference: pop stack, write longword - * arg: - - * FIXME: incomplete ! - */ + /* store position independent data reference: pop stack, write longword + arg: none. + FIXME: incomplete ! */ dummy = _bfd_vms_pop (abfd, &psect); image_write_l (abfd, dummy & 0xffffffff); break; + case TIR_S_C_STO_PICR: - /* - * store position independent code reference: pop stack, write longword - * arg: - - * FIXME: incomplete ! - */ + /* store position independent code reference: pop stack, write longword + arg: none. + FIXME: incomplete ! */ dummy = _bfd_vms_pop (abfd, &psect); image_write_b (abfd, 0x9f); image_write_l (abfd, dummy & 0xffffffff); break; + case TIR_S_C_STO_RIVB: - /* - * store repeated immediate variable bytes - * 1-byte count n field followed by n bytes of data - * pop stack, write n bytes times - */ + /* store repeated immediate variable bytes + 1-byte count n field followed by n bytes of data + pop stack, write n bytes times. */ size = *ptr++; dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); while (dummy-- > 0L) image_dump (abfd, ptr, size, 0); ptr += size; break; + case TIR_S_C_STO_B: - /* - * store byte from top longword - */ + /* store byte from top longword. */ dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); image_write_b (abfd, dummy & 0xff); break; + case TIR_S_C_STO_W: - /* - * store word from top longword - */ + /* store word from top longword. */ dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); image_write_w (abfd, dummy & 0xffff); break; + case TIR_S_C_STO_RB: - /* - * store repeated byte from top longword - */ + /* store repeated byte from top longword. */ size = (unsigned long) _bfd_vms_pop (abfd, NULL); dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); while (size-- > 0) image_write_b (abfd, dummy & 0xff); break; + case TIR_S_C_STO_RW: - /* - * store repeated word from top longword - */ + /* store repeated word from top longword. */ size = (unsigned long) _bfd_vms_pop (abfd, NULL); dummy = (unsigned long) _bfd_vms_pop (abfd, NULL); while (size-- > 0) @@ -1466,28 +1415,28 @@ tir_sto (bfd *abfd, unsigned char *ptr) case TIR_S_C_STO_RUB: case TIR_S_C_STO_RUW: case TIR_S_C_STO_PIRR: - (*_bfd_error_handler) (_("Unimplemented STO cmd %d"), ptr[-1]); + (*_bfd_error_handler) (_("%s: not implemented"), tir_cmd_name (ptr[-1])); break; default: - (*_bfd_error_handler) (_("Reserved STO cmd %d"), ptr[-1]); + (*_bfd_error_handler) (_("reserved STO cmd %d"), ptr[-1]); break; } return ptr; } -/* - * stack operator commands - * all 32 bit signed arithmetic - * all word just like a stack calculator - * arguments are popped from stack, results are pushed on stack - * - * see table 7-5 of the VAX/VMS linker manual - */ +/* stack operator commands + all 32 bit signed arithmetic + all word just like a stack calculator + arguments are popped from stack, results are pushed on stack + + See table 7-5 of the VAX/VMS linker manual. */ static unsigned char * -tir_opr (bfd *abfd, unsigned char *ptr) +tir_opr (abfd, ptr) + bfd *abfd; + unsigned char *ptr; { long op1, op2; @@ -1498,43 +1447,28 @@ tir_opr (bfd *abfd, unsigned char *ptr) switch (*ptr++) { /* operation */ - case TIR_S_C_OPR_NOP: - /* - * no-op - */ + case TIR_S_C_OPR_NOP: /* no-op */ break; - case TIR_S_C_OPR_ADD: - /* - * add - */ + case TIR_S_C_OPR_ADD: /* add */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 + op2), -1); break; - case TIR_S_C_OPR_SUB: - /* - * subtract - */ + case TIR_S_C_OPR_SUB: /* subtract */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op2 - op1), -1); break; - case TIR_S_C_OPR_MUL: - /* - * multiply - */ + case TIR_S_C_OPR_MUL: /* multiply */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 * op2), -1); break; - case TIR_S_C_OPR_DIV: - /* - * divide - */ + case TIR_S_C_OPR_DIV: /* divide */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); if (op2 == 0) @@ -1543,89 +1477,65 @@ tir_opr (bfd *abfd, unsigned char *ptr) _bfd_vms_push (abfd, (uquad) (op2 / op1), -1); break; - case TIR_S_C_OPR_AND: - /* - * logical and - */ + case TIR_S_C_OPR_AND: /* logical and */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 & op2), -1); break; - case TIR_S_C_OPR_IOR: + case TIR_S_C_OPR_IOR: /* logical inclusive or */ op1 = (long) _bfd_vms_pop (abfd, NULL); - /* - * logical inclusive or - */ op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 | op2), -1); break; - case TIR_S_C_OPR_EOR: - /* - * logical exclusive or - */ + case TIR_S_C_OPR_EOR: /* logical exclusive or */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 ^ op2), -1); break; - case TIR_S_C_OPR_NEG: - /* - * negate - */ + case TIR_S_C_OPR_NEG: /* negate */ op1 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (-op1), -1); break; - case TIR_S_C_OPR_COM: - /* - * complement - */ + case TIR_S_C_OPR_COM: /* complement */ op1 = (long) _bfd_vms_pop (abfd, NULL); _bfd_vms_push (abfd, (uquad) (op1 ^ -1L), -1); break; - case TIR_S_C_OPR_INSV: - /* - * insert field - */ + case TIR_S_C_OPR_INSV: /* insert field */ (void) _bfd_vms_pop (abfd, NULL); - (*_bfd_error_handler) ("TIR_S_C_OPR_INSV incomplete"); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; - case TIR_S_C_OPR_ASH: - /* - * arithmetic shift - */ + case TIR_S_C_OPR_ASH: /* arithmetic shift */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); - if (HIGHBIT (op1)) /* shift right */ + if (HIGHBIT (op1)) /* shift right */ op2 >>= op1; else /* shift left */ op2 <<= op1; _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("TIR_S_C_OPR_ASH incomplete")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; - case TIR_S_C_OPR_USH: - /* - * unsigned shift - */ + case TIR_S_C_OPR_USH: /* unsigned shift */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); - if (HIGHBIT (op1)) /* shift right */ + if (HIGHBIT (op1)) /* shift right */ op2 >>= op1; else /* shift left */ op2 <<= op1; _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("TIR_S_C_OPR_USH incomplete")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; - case TIR_S_C_OPR_ROT: - /* - * rotate - */ + case TIR_S_C_OPR_ROT: /* rotate */ op1 = (long) _bfd_vms_pop (abfd, NULL); op2 = (long) _bfd_vms_pop (abfd, NULL); if (HIGHBIT (0)) /* shift right */ @@ -1633,13 +1543,11 @@ tir_opr (bfd *abfd, unsigned char *ptr) else /* shift left */ op2 <<= op1; _bfd_vms_push (abfd, (uquad) op2, -1); - (*_bfd_error_handler) (_("TIR_S_C_OPR_ROT incomplete")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; - case TIR_S_C_OPR_SEL: - /* - * select - */ + case TIR_S_C_OPR_SEL: /* select */ if ((long) _bfd_vms_pop (abfd, NULL) & 0x01L) (void) _bfd_vms_pop (abfd, NULL); else @@ -1650,35 +1558,26 @@ tir_opr (bfd *abfd, unsigned char *ptr) } break; - case TIR_S_C_OPR_REDEF: - /* - * redefine symbol to current location - */ - (*_bfd_error_handler) (_("TIR_S_C_OPR_REDEF not supported")); - break; - - case TIR_S_C_OPR_DFLIT: - /* - * define a literal - */ - (*_bfd_error_handler) (_("TIR_S_C_OPR_DFLIT not supported")); + case TIR_S_C_OPR_REDEF: /* Redefine symbol to current location. */ + case TIR_S_C_OPR_DFLIT: /* Define a literal. */ + (*_bfd_error_handler) (_("%s: not supported"), + tir_cmd_name (ptr[-1])); break; default: - (*_bfd_error_handler) (_("Reserved OPR cmd %d"), ptr[-1]); + (*_bfd_error_handler) (_("reserved OPR cmd %d"), ptr[-1]); break; } return ptr; } +/* control commands + + See table 7-6 of the VAX/VMS linker manual. */ + static unsigned char * tir_ctl (bfd *abfd, unsigned char *ptr) -/* - * control commands - * - * see table 7-6 of the VAX/VMS linker manual - */ { unsigned long dummy; unsigned int psect; @@ -1690,59 +1589,53 @@ tir_ctl (bfd *abfd, unsigned char *ptr) switch (*ptr++) { case TIR_S_C_CTL_SETRB: - /* - * set relocation base: pop stack, set image location counter - * arg: - - */ + /* Set relocation base: pop stack, set image location counter + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); if (psect >= PRIV (section_count)) - { - alloc_section (abfd, psect); - } + alloc_section (abfd, psect); image_set_ptr (abfd, (int) psect, (uquad) dummy); break; + case TIR_S_C_CTL_AUGRB: - /* - * augment relocation base: increment image location counter by offset - * arg: lw offset value - */ + /* Augment relocation base: increment image location counter by offset + arg: lw offset value. */ dummy = bfd_getl32 (ptr); image_inc_ptr (abfd, (uquad) dummy); break; + case TIR_S_C_CTL_DFLOC: - /* - * define location: pop index, save location counter under index - * arg: - - */ + /* Define location: pop index, save location counter under index + arg: none. */ dummy = _bfd_vms_pop (abfd, NULL); - (*_bfd_error_handler) (_("TIR_S_C_CTL_DFLOC not fully implemented")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; + case TIR_S_C_CTL_STLOC: - /* - * set location: pop index, restore location counter from index - * arg: - - */ + /* Set location: pop index, restore location counter from index + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); - (*_bfd_error_handler) (_("TIR_S_C_CTL_STLOC not fully implemented")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; + case TIR_S_C_CTL_STKDL: - /* - * stack defined location: pop index, push location counter from index - * arg: - - */ + /* Stack defined location: pop index, push location counter from index + arg: none. */ dummy = _bfd_vms_pop (abfd, &psect); - (*_bfd_error_handler) (_("TIR_S_C_CTL_STKDL not fully implemented")); + (*_bfd_error_handler) (_("%s: not fully implemented"), + tir_cmd_name (ptr[-1])); break; + default: - (*_bfd_error_handler) (_("Reserved CTL cmd %d"), ptr[-1]); + (*_bfd_error_handler) (_("reserved CTL cmd %d"), ptr[-1]); break; } return ptr; } -/* - * handle command from TIR section - */ +/* Handle command from TIR section. */ static unsigned char * tir_cmd (bfd *abfd, unsigned char *ptr) @@ -1788,7 +1681,7 @@ tir_cmd (bfd *abfd, unsigned char *ptr) } if (tir_table[i].mincod < 0) { - (*_bfd_error_handler) (_("Obj code %d not found"), *ptr); + (*_bfd_error_handler) (_("obj code %d not found"), *ptr); ptr = 0; } } @@ -1796,7 +1689,7 @@ tir_cmd (bfd *abfd, unsigned char *ptr) return ptr; } -/* handle command from ETIR section */ +/* Handle command from ETIR section. */ static int etir_cmd (abfd, cmd, ptr) @@ -1846,7 +1739,7 @@ etir_cmd (abfd, cmd, ptr) } /* Text Information and Relocation Records (OBJ$C_TIR) - handle tir record */ + handle tir record. */ static int analyze_tir (abfd, ptr, length) @@ -1873,7 +1766,7 @@ analyze_tir (abfd, ptr, length) } /* Text Information and Relocation Records (EOBJ$C_ETIR) - handle etir record */ + handle etir record. */ static int analyze_etir (abfd, ptr, length) @@ -1908,9 +1801,8 @@ analyze_etir (abfd, ptr, length) return result; } -/* process ETIR record - - return 0 on success, -1 on error */ +/* Process ETIR record + Return 0 on success, -1 on error. */ int _bfd_vms_slurp_tir (abfd, objtype) @@ -1943,10 +1835,10 @@ _bfd_vms_slurp_tir (abfd, objtype) return result; } -/* process EDBG record - return 0 on success, -1 on error +/* Process EDBG record + Return 0 on success, -1 on error - not implemented yet */ + Not implemented yet. */ int _bfd_vms_slurp_dbg (abfd, objtype) @@ -1961,10 +1853,10 @@ _bfd_vms_slurp_dbg (abfd, objtype) return 0; } -/* process ETBT record - return 0 on success, -1 on error +/* Process ETBT record + Return 0 on success, -1 on error - not implemented yet */ + Not implemented yet. */ int _bfd_vms_slurp_tbt (abfd, objtype) @@ -1978,10 +1870,10 @@ _bfd_vms_slurp_tbt (abfd, objtype) return 0; } -/* process LNK record - return 0 on success, -1 on error +/* Process LNK record + Return 0 on success, -1 on error - not implemented yet */ + Not implemented yet. */ int _bfd_vms_slurp_lnk (abfd, objtype) @@ -1995,13 +1887,9 @@ _bfd_vms_slurp_lnk (abfd, objtype) return 0; } -/*----------------------------------------------------------------------*/ -/* */ -/* WRITE ETIR SECTION */ -/* */ -/* this is still under construction and therefore not documented */ -/* */ -/*----------------------------------------------------------------------*/ +/* WRITE ETIR SECTION + + This is still under construction and therefore not documented. */ static void start_etir_record PARAMS ((bfd *abfd, int index, uquad offset, boolean justoffset)); static void sto_imm PARAMS ((bfd *abfd, vms_section *sptr, bfd_vma vaddr, int index)); @@ -2028,7 +1916,6 @@ sto_imm (abfd, sptr, vaddr, index) while (ssize > 0) { - size = ssize; /* try all the rest */ if (_bfd_vms_output_check (abfd, size) < 0) @@ -2054,13 +1941,9 @@ sto_imm (abfd, sptr, vaddr, index) ssize -= size; cptr += size; } - - return; } -/*-------------------------------------------------------------------*/ - -/* start ETIR record for section #index at virtual addr offset. */ +/* Start ETIR record for section #index at virtual addr offset. */ static void start_etir_record (abfd, index, offset, justoffset) @@ -2082,11 +1965,10 @@ start_etir_record (abfd, index, offset, _bfd_vms_output_begin (abfd, ETIR_S_C_CTL_SETRB, -1); /* start = pop () */ _bfd_vms_output_flush (abfd); - - return; } -/* end etir record */ +/* End etir record. */ + static void end_etir_record (abfd) bfd *abfd; @@ -2095,7 +1977,7 @@ end_etir_record (abfd) _bfd_vms_output_end (abfd); } -/* write section contents for bfd abfd */ +/* Write section contents for bfd abfd. */ int _bfd_vms_write_tir (abfd, objtype) @@ -2115,7 +1997,7 @@ _bfd_vms_write_tir (abfd, objtype) nextoffset = 0; PRIV (vms_linkage_index) = 1; - /* dump all other sections */ + /* Dump all other sections. */ section = abfd->sections; @@ -2161,7 +2043,7 @@ _bfd_vms_write_tir (abfd, objtype) if ((section->flags & SEC_HAS_CONTENTS) && (! bfd_is_com_section (section))) { - bfd_vma vaddr; /* virtual addr in section */ + bfd_vma vaddr; /* Virtual addr in section. */ sptr = _bfd_get_vms_section (abfd, section->index); if (sptr == NULL) @@ -2182,6 +2064,7 @@ _bfd_vms_write_tir (abfd, objtype) { arelent **rptr = section->orelocation; int i = section->reloc_count; + for (;;) { bfd_size_type addr = (*rptr)->address; @@ -2480,7 +2363,7 @@ _bfd_vms_write_tir (abfd, objtype) return 0; } -/* write traceback data for bfd abfd */ +/* Write traceback data for bfd abfd. */ int _bfd_vms_write_tbt (abfd, objtype) @@ -2494,7 +2377,7 @@ _bfd_vms_write_tbt (abfd, objtype) return 0; } -/* write debug info for bfd abfd */ +/* Write debug info for bfd abfd. */ int _bfd_vms_write_dbg (abfd, objtype) diff -uprN binutils-2.11.92.0.12.3/bfd/vms.c binutils-2.11.93.0.2/bfd/vms.c --- binutils-2.11.92.0.12.3/bfd/vms.c Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/bfd/vms.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* vms.c -- BFD back-end for VAX (openVMS/VAX) and EVAX (openVMS/Alpha) files. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Klaus K"ampf (kkaempf@rmi.de) @@ -129,7 +129,7 @@ static long vms_canonicalize_dynamic_rel static boolean vms_bfd_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd)); static boolean vms_bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags)); -#define vms_make_empty_symbol _bfd_vms_make_empty_symbol +#define vms_make_empty_symbol _bfd_generic_make_empty_symbol /*===========================================================================*/ @@ -1142,34 +1142,6 @@ vms_get_symtab (abfd, symbols) return PRIV (gsd_sym_count); } -/* Create a new asymbol structure for the BFD abfd and return a pointer - to it. - This routine is necessary because each back end has private information - surrounding the asymbol. Building your own asymbol and pointing to it - will not create the private information, and will cause problems later on. */ - -asymbol * -_bfd_vms_make_empty_symbol (abfd) - bfd *abfd; -{ - asymbol *symbol; - - symbol = (asymbol *) bfd_zalloc(abfd, (bfd_size_type) sizeof (asymbol)); - -#if VMS_DEBUG - vms_debug (1, "_bfd_vms_make_empty_symbol(%p)\n", abfd); -#endif - - if (symbol == 0) - { - bfd_set_error (bfd_error_no_memory); - return 0; - } - symbol->the_bfd = abfd; - - return symbol; -} - /* Print symbol to file according to how. how is one of bfd_print_symbol_name just print the name bfd_print_symbol_more print more (???) diff -uprN binutils-2.11.92.0.12.3/bfd/xcofflink.c binutils-2.11.93.0.2/bfd/xcofflink.c --- binutils-2.11.92.0.12.3/bfd/xcofflink.c Mon Oct 1 15:25:21 2001 +++ binutils-2.11.93.0.2/bfd/xcofflink.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* POWER/PowerPC XCOFF linker support. - Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor , Cygnus Support. @@ -3219,6 +3219,41 @@ bfd_xcoff_size_dynamic_sections (output_ return false; } +boolean +bfd_xcoff_link_generate_rtinit (abfd, init, fini) + bfd *abfd; + const char *init; + const char *fini; +{ + struct bfd_in_memory *bim; + + bim = ((struct bfd_in_memory *) + bfd_malloc ((bfd_size_type) sizeof (struct bfd_in_memory))); + if (bim == NULL) + return false; + + bim->size = 0; + bim->buffer = 0; + + abfd->link_next = 0; + abfd->format = bfd_object; + abfd->iostream = (PTR) bim; + abfd->flags = BFD_IN_MEMORY; + abfd->direction = write_direction; + abfd->where = 0; + + if (false == bfd_xcoff_generate_rtinit (abfd, init, fini)) + return false; + + /* need to reset to unknown or it will not be read back in correctly */ + abfd->format = bfd_unknown; + abfd->direction = read_direction; + abfd->where = 0; + + return true; +} + + /* Add a symbol to the .loader symbols, if necessary. */ static boolean @@ -3623,7 +3658,7 @@ _bfd_xcoff_bfd_final_link (abfd, info) int indx; asection **op; file_ptr sofar; - + /* Insert .pad sections before every section which has contents and is loaded, if it is preceded by some other section which has contents and is loaded. */ @@ -3639,20 +3674,27 @@ _bfd_xcoff_bfd_final_link (abfd, info) saw_contents = true; else { - asection *n, *hold; - - hold = *op; - *op = NULL; + asection *n, **st; + + /* Create a pad section and place it before the section + that needs padding. This requires unlinking and + relinking the bfd's section list. */ + + st = abfd->section_tail; n = bfd_make_section_anyway (abfd, ".pad"); - BFD_ASSERT (*op == n); - n->next = hold; n->flags = SEC_HAS_CONTENTS; - n->alignment_power = 0; + n->alignment_power = 0; + + BFD_ASSERT (*st == n); + bfd_section_list_remove (abfd, st); + bfd_section_list_insert (abfd, op, n); + + op = &n->next; saw_contents = false; } } } - + /* Reset the section indices after inserting the new sections. */ indx = 0; @@ -3923,17 +3965,6 @@ _bfd_xcoff_bfd_final_link (abfd, info) goto error_return; } - /* init-fini */ - if (info->init_function || info->fini_function) - { - struct xcoff_link_hash_entry *hrtinit; - - hrtinit = xcoff_link_hash_lookup (xcoff_hash_table (info), - "__rtinit", - false, false, true); - } - - /* Write out all the global symbols which do not come from XCOFF input files. */ xcoff_link_hash_traverse (xcoff_hash_table (info), diff -uprN binutils-2.11.92.0.12.3/binutils/ChangeLog binutils-2.11.93.0.2/binutils/ChangeLog --- binutils-2.11.92.0.12.3/binutils/ChangeLog Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/binutils/ChangeLog Thu Feb 7 10:21:03 2002 @@ -1,3 +1,311 @@ +2002-02-06 Alexandre Oliva + + * MAINTAINERS: Added self as SH co-maintainer. + +2002-02-05 Nick Clifton + + * po/tr.po: Updated translation. + +2002-02-01 Alan Modra + + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + +2002-01-29 Daniel Jacobowitz + + * nm.c (print_value): Mark abfd unused. + +2002-01-29 Daniel Jacobowitz + + * unwind-ia64.c (unw_decoder): Change second argument + to unsigned int, to match function prototypes. + +2002-01-29 Daniel Jacobowitz + + * objdump.c: Include "getopt.h" after "bucomm.h" so that + __GNU_LIBRARY__ will be defined. + * size.c: Likewise. + +2002-01-27 Daniel Jacobowitz + + * configure: Regenerated. + +2002-01-26 Hans-Peter Nilsson + + * doc/Makefile.am (install): Depend on install-info. + * doc/Makefile.in: Regenerate. + +2002-01-25 Jason R. Thorpe + + * objcopy.c (strip_usage): Document -d as an alias + --strip-debug. + + * size.c (usage): Document [-t | --totals] options. + (long_options): Add --totals option. + (main): If the [-t | --totals] option is specified and + the output format is Berkeley-style, print the total + text, data, and bss sizes of all objects listed. + (print_berkeley_format): If the [-t | --totals] option + is specified, track the total text, data, and bss + sizes. + * doc/binutils.texi (size): Document [-t | --totals] options. + (strip): Document -d as an alias for --strip-debug. + * NEWS: Mention new feature of size. + +2002-01-25 Nick Clifton + + * po/fr.po: Updated version. + * po/es.po: Updated version. + +2002-01-23 Nick Clifton + + * addr2line.c (usage): Update text to provide verbose + description of the command line options. + * ar.c (usage): Update text to provide verbose + description of the command line options. + (main): Accept -h and -H when running as ranlib. + * coffdump.c (show_usage): Update text to provide verbose + description of the command line options. + * dlltool.c (main): Accept -H as an alias for --help. + * nlmconv.c (show_usage): Update text to provide verbose + description of the command line options. + * nm.c (usage): Replace OPTIONS with option(s). + (main): Accept -H as an alias for --help. + * objcopy.c (strip_main): Accept -H as an alias for --help. + * objdump.c (main): Accept -v as an alias for --verbose. + * readelf.c (usage): Adjust format to match style used in + other binutils. + * size.c (usage): Update text to provide verbose description + of the command line options. + (main): Accept -v, -h and -H as command line options. + * srconv.c (show_usage): Update text to provide verbose + description of the command line options. + * strings.c (main): Accept -H and -v as command line options. + (usage): Update text to provide verbose description of the + command line options. + * sysdump.c (show_usage): Update text to provide verbose + description of the command line options. + * windres.c (usage): Adjust format to match style used in + other binutils. + + * coffdump.c: Fix formatting. + * nlmconv.c: Fix formatting. + * srconv.c: Fix formatting. + * sysdump.c: Fix formatting. + +2002-01-22 Alan Modra + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2002-01-18 Andreas Jaeger + + * version.c (print_version): Update year. + +2002-01-17 Alan Modra + + * readelf.c (get_machine_name): Handle EM_PPC64. + (guess_is_rela): Here too. + +2002-01-17 Nick Clifton + + * po/binutils.pot: Regenerate. + * po/fr.po: Regenerate. + * po/tr.po: Regenerate. + +2002-01-16 Nick Clifton + + * po/tr.po: Import new version. + +2002-01-16 Alan Modra + + * readelf.c (get_ppc64_dynamic_type): New. + (get_dynamic_type): Call it. + +2002-01-15 Nick Clifton + + * objcopy.c (copy_usage): Use "options" instead of "switches". + (strip_usage): Use "options" instead of "switches". + * doc/binutils.texi (dlltool): Refer to "options" instead of + "switches". + +2002-01-14 Richard Earnshaw + + * MAINTAINERS: Add self as co-maintainer for the ARM code. + +2001-12-18 Nick Clifton + + * po/es.po: Import from translation project. + * configure.in (ALL_LINGUAS): Add es. + * configure: Regenerate. + +2002-01-09 Jason Thorpe + + * readelf.c (get_netbsd_elfcore_note_type): Use + NT_NETBSDCORE_PROCINFO and NT_NETBSDCORE_FIRSTMACH. + +2002-01-09 Jason Thorpe + + * readelf.c: Update copyright years. + (get_note_type): Return a const char *. + (get_netbsd_elfcore_note_type): New function. + (process_note): Use get_netbsd_elfcore_note_type to get + the note type string for NetBSD ELF core files. + +2002-01-06 Steve Ellcey + + * readelf.c (get_ia64_segment_type): Add support for macros. + (get_segment_type): Add support for IA64 specific macros. + +2001-12-20 Julian v. Bock + + * readelf.c (print_symbol): New function: Print a formatted symbol + name. If --wide is specified do not truncate it. + (dump_relocations): Use print_symbol() to print symbol names. + (process_symbol_table): Likewise. + (process_syminfo): Likewise. + (process_mips_specific): Likewise. + (usage): Document new feature of --wide switch. + * doc/binutils.texi (objdump): Document additional behaviour of + --wide. + +2001-12-18 Michael Snyder + + * objcopy.c (copy_file): Accept corefiles (format bfd_core). + (copy_object): Don't set the start address or flags of a core file. + (copy_section): Don't relocate a core file. Don't copy contents + if the input section has the contents flag set, but the output + section does not (which happens with the fake 'note' pseudo- + sections that BFD creates for corefiles). + +2001-12-18 Thiemo Seufer + + * readelf.c (get_machine_flags): Recognize header flags for ABI and + ASE extensions. More robust code for ISA checking. Ignore empty fields + in header flags for GNU extensions. + +2001-12-18 Alan Modra + + * objcopy.c (copy_archive): Set output bfd format outside the loop. + +2001-12-18 Nick Clifton + + * po/ja.po: Import from translation project. + * configure.in (ALL_LINGUAS): Add ja. + * configure: Regenerate. + +2001-12-18 Thiemo Seufer + + * addr2line.c (main): Protoype. + * ar.c (main): Protoype. + * nm.c (main): Protoype. + * objcopy.c (main): Protoype. + * objdump.c (main): Protoype. + * size.c (main): Protoype. + * strings.c (main): Protoype. + +2001-12-17 Alan Modra + + * readelf.c (symtab_shndx_hdr): New global. + (SECTION_HEADER_INDEX): Define. + (SECTION_HEADER_NUM): Define. + (SECTION_HEADER): Define. + (GET_ELF_SYMBOLS): Pass two params rather than three. + (get_32bit_elf_symbols): Take file and section args. Read and + use SHT_SYMTAB_SHNDX. + (get_64bit_elf_symbols): Likewise. + (dump_relocations): Use SECTION_HEADER to index "section_headers". + (process_section_headers): Likewise. Use SECTION_HEADER_NUM too. + Remember symtab_shdx_hdr. + (process_program_headers): Scan from index 1 for segment map. + (slurp_ia64_unwind_table): Use SECTION_HEADER to index + "section_headers". + (process_relocs): Likewise. Also adjust call to GET_ELF_SYMBOLS. + (process_unwind): Likewise. + (process_version_sections): Likewise. + (process_symbol_table): Likewise. + (display_debug_info): Likewise. + (process_dynamic_segment): Fake up a symtab section for changed + GET_ELF_SYMBOLS. + (get_symbol_index_type): Check SHN_LOOS before SHN_LORESERVE. + (process_program_headers): Kill signed/unsigned warning. + (load_debug_str): Likewise. + (display_debug_info): Likewise. + +2001-12-13 Jakub Jelinek + + * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME. + +2001-12-11 Alan Modra + + * readelf.c (process_file_header): Print extended e_shnum and + e_shdtrndx values. Set elf_header values for same. + (get_32bit_section_headers): Add "num" arg to read "num" headers. + (get_64bit_section_headers): Likewise. + (process_section_headers): Update calls. + (get_file_header): Call get_32bit_section_headers or 64bit variant. + +2001-12-10 Jakub Jelinek + + * objcopy.c (setup_section): Copy entsize. + +2001-12-07 Geoffrey Keating + + * readelf.c (guess_is_rela): Add support for stormy16. + (dump_relocations): Likewise. + (get_machine_name): Likewise. + +2001-12-05 Nick Clifton + + * dllwrap.c (main) Replace multiple strings describing a + single error with a single, newline escaped sentence to permit + better translation into foreign languages. + + * readelf.c (get_elf_class): Remove internalionalisation of ELF + class names. + +2001-12-04 Thiemo Seufer + + * strings.c (get_char): Initialize value. + +2001-12-04 Thiemo Seufer + + * arlex.l: Silence compile warnings. + * arsup.h: Likewise. Fix formatting. + +2001-12-04 Jakub Jelinek + + * strings.c: Include config.h before bfd.h. + (file_off): New type. + (file_open): Define. + (print_strings): Use file_off instead of file_ptr. Print addresses + which don't fit into long correctly. + (get_char): Use file_off instead of file_ptr. Use getc_unlocked if + available. + (strings_file): Use file_off instead of file_ptr. Use file_open. + * configure.in: Check for getc_unlocked. + Check for fopen64 and whether _LARGEFILE64_SOURCE needs to + be defined for it. + * configure: Rebuilt. + * config.h.in: Rebuilt. + +2001-11-29 H.J. Lu + + * bucomm.c (make_tempname): Revert the changes made on + 2001-11-14 and 2001-11-12. They won't work with directories. + +2001-11-23 John David Anglin + + * binutils/Makefile.am (check-DEJAGNU): Pass CC_FOR_TARGET and + CFLAGS_FOR_TARGET to runtest in environment. + * Makefile.in: Rebuild. + * doc/Makefile.in: Rebuild. + +2001-11-28 Mike Stump + + * objcopy.c (setup_section): Preserve SEC_RELOC when + --set-section-flags is used. + 2001-11-19 Nick Clifton * readelf.c (do_debug_str): New variable. diff -uprN binutils-2.11.92.0.12.3/binutils/ChangeLog.linux binutils-2.11.93.0.2/binutils/ChangeLog.linux --- binutils-2.11.92.0.12.3/binutils/ChangeLog.linux Mon Nov 26 14:26:53 2001 +++ binutils-2.11.93.0.2/binutils/ChangeLog.linux Sun Feb 3 11:22:30 2002 @@ -1,8 +1,3 @@ -2001-11-26 H.J. Lu - - * bucomm.c (make_tempname): Revert the changes made on - 2001-11-14 and 2001-11-12. They won't work with directories. - 2001-10-21 H.J. Lu * configure: Rebuid for ../libtool.m4 change. diff -uprN binutils-2.11.92.0.12.3/binutils/MAINTAINERS binutils-2.11.93.0.2/binutils/MAINTAINERS --- binutils-2.11.92.0.12.3/binutils/MAINTAINERS Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/MAINTAINERS Thu Feb 7 10:21:03 2002 @@ -52,6 +52,7 @@ responsibility among the other maintaine ARC Peter Targett ARM Nick Clifton + ARM Richard Earnshaw AVR Denis Chertykov CRIS Hans-Peter Nilsson DWARF2 Jason Merrill @@ -74,6 +75,7 @@ responsibility among the other maintaine s390, s390x Martin Schwidefsky SH Jörn Rennecke SH Hans-Peter Nilsson + SH Alexandre Oliva SPARC Jakub Jelinek TIC54X Timothy Wall z8k Christian Groessler diff -uprN binutils-2.11.92.0.12.3/binutils/Makefile.am binutils-2.11.93.0.2/binutils/Makefile.am --- binutils-2.11.92.0.12.3/binutils/Makefile.am Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/Makefile.am Sun Feb 3 11:22:30 2002 @@ -139,9 +139,9 @@ check-DEJAGNU: site.exp fi; \ runtest=$(RUNTEST); \ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ - $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ - CC_FOR_TARGET="$(CC_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS)" $(RUNTESTFLAGS); \ + CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \ + $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ + $(RUNTESTFLAGS); \ else echo "WARNING: could not find \`runtest'" 1>&2; :;\ fi @@ -415,10 +415,10 @@ objcopy.o: objcopy.c ../bfd/bfd.h $(INCD $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ budbg.h $(INCDIR)/filenames.h objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h $(INCDIR)/progress.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/dis-asm.h $(INCDIR)/libiberty.h \ - $(INCDIR)/demangle.h debug.h budbg.h $(INCDIR)/aout/aout64.h + $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ + $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/dis-asm.h $(INCDIR)/libiberty.h $(INCDIR)/demangle.h \ + debug.h budbg.h $(INCDIR)/aout/aout64.h prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ @@ -433,8 +433,8 @@ rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ budbg.h size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/getopt.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h + bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ + $(INCDIR)/libiberty.h srconv.o: srconv.c bucomm.h config.h $(INCDIR)/bin-bugs.h \ $(INCDIR)/fopen-same.h sysroff.h coffgrok.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h sysroff.c @@ -481,16 +481,17 @@ winduni.o: winduni.c ../bfd/bfd.h $(INCD $(INCDIR)/fopen-same.h winduni.h $(INCDIR)/safe-ctype.h readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/i386.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/arm.h \ - $(INCDIR)/elf/m68k.h $(INCDIR)/elf/sparc.h $(INCDIR)/elf/m32r.h \ - $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/h8.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/fr30.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/pj.h \ - $(INCDIR)/elf/avr.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/cris.h \ - $(INCDIR)/elf/i860.h $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/s390.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/alpha.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ + $(INCDIR)/elf/avr.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/d10v.h \ + $(INCDIR)/elf/d30v.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/h8.h \ + $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i860.h \ + $(INCDIR)/elf/i960.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/m32r.h \ + $(INCDIR)/elf/m68k.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/mips.h \ + $(INCDIR)/elf/mmix.h $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h \ + $(INCDIR)/elf/or32.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/ppc.h \ + $(INCDIR)/elf/s390.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/sparc.h \ + $(INCDIR)/elf/v850.h $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/xstormy16.h \ bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ unwind-ia64.h resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ diff -uprN binutils-2.11.92.0.12.3/binutils/Makefile.in binutils-2.11.93.0.2/binutils/Makefile.in --- binutils-2.11.92.0.12.3/binutils/Makefile.in Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/Makefile.in Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -667,7 +667,7 @@ maintainer-clean-recursive: dot_seen=no; \ rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ rev="$$subdir $$rev"; \ - test "$$subdir" = "." && dot_seen=yes; \ + test "$$subdir" != "." || dot_seen=yes; \ done; \ test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ @@ -918,9 +918,9 @@ check-DEJAGNU: site.exp fi; \ runtest=$(RUNTEST); \ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ - $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ - CC_FOR_TARGET="$(CC_FOR_TARGET)" \ - CFLAGS_FOR_TARGET="$(CFLAGS)" $(RUNTESTFLAGS); \ + CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \ + $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \ + $(RUNTESTFLAGS); \ else echo "WARNING: could not find \`runtest'" 1>&2; :;\ fi @@ -1134,10 +1134,10 @@ objcopy.o: objcopy.c ../bfd/bfd.h $(INCD $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \ budbg.h $(INCDIR)/filenames.h objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ - $(INCDIR)/symcat.h $(INCDIR)/getopt.h $(INCDIR)/progress.h \ - bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ - $(INCDIR)/safe-ctype.h $(INCDIR)/dis-asm.h $(INCDIR)/libiberty.h \ - $(INCDIR)/demangle.h debug.h budbg.h $(INCDIR)/aout/aout64.h + $(INCDIR)/symcat.h $(INCDIR)/progress.h bucomm.h config.h \ + $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/safe-ctype.h \ + $(INCDIR)/dis-asm.h $(INCDIR)/libiberty.h $(INCDIR)/demangle.h \ + debug.h budbg.h $(INCDIR)/aout/aout64.h prdbg.o: prdbg.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ @@ -1152,8 +1152,8 @@ rddbg.o: rddbg.c ../bfd/bfd.h $(INCDIR)/ $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h debug.h \ budbg.h size.o: size.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ - $(INCDIR)/getopt.h bucomm.h config.h $(INCDIR)/bin-bugs.h \ - $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h + bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ + $(INCDIR)/libiberty.h srconv.o: srconv.c bucomm.h config.h $(INCDIR)/bin-bugs.h \ $(INCDIR)/fopen-same.h sysroff.h coffgrok.h $(INCDIR)/coff/internal.h \ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h sysroff.c @@ -1200,16 +1200,17 @@ winduni.o: winduni.c ../bfd/bfd.h $(INCD $(INCDIR)/fopen-same.h winduni.h $(INCDIR)/safe-ctype.h readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ $(INCDIR)/symcat.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/i386.h \ - $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/ppc.h \ - $(INCDIR)/elf/mips.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/arm.h \ - $(INCDIR)/elf/m68k.h $(INCDIR)/elf/sparc.h $(INCDIR)/elf/m32r.h \ - $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h \ - $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h \ - $(INCDIR)/elf/h8.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/fr30.h \ - $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/pj.h \ - $(INCDIR)/elf/avr.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/cris.h \ - $(INCDIR)/elf/i860.h $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/s390.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/dwarf2.h $(INCDIR)/elf/alpha.h \ + $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h \ + $(INCDIR)/elf/avr.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/d10v.h \ + $(INCDIR)/elf/d30v.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/h8.h \ + $(INCDIR)/elf/hppa.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/i860.h \ + $(INCDIR)/elf/i960.h $(INCDIR)/elf/ia64.h $(INCDIR)/elf/m32r.h \ + $(INCDIR)/elf/m68k.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/mips.h \ + $(INCDIR)/elf/mmix.h $(INCDIR)/elf/mn10200.h $(INCDIR)/elf/mn10300.h \ + $(INCDIR)/elf/or32.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/ppc.h \ + $(INCDIR)/elf/s390.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/sparc.h \ + $(INCDIR)/elf/v850.h $(INCDIR)/elf/x86-64.h $(INCDIR)/elf/xstormy16.h \ bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \ unwind-ia64.h resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \ diff -uprN binutils-2.11.92.0.12.3/binutils/NEWS binutils-2.11.93.0.2/binutils/NEWS --- binutils-2.11.92.0.12.3/binutils/NEWS Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/NEWS Sun Feb 3 11:22:30 2002 @@ -1,5 +1,7 @@ -*- text -*- +* size: Add --totals to display summary of sizes (Berkeley format only). + * readelf: Add --wide option to not break section header or segment listing lines to fit into 80 columns. diff -uprN binutils-2.11.92.0.12.3/binutils/addr2line.c binutils-2.11.93.0.2/binutils/addr2line.c --- binutils-2.11.92.0.12.3/binutils/addr2line.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/addr2line.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* addr2line.c -- convert addresses to line number and function name - Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Ulrich Lauther This file is part of GNU Binutils. @@ -74,12 +74,22 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("\ -Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n\ - [-e executable] [--exe=executable] [--demangler=dso:function]\n\ - [--demangle[=%s]]\n\ - [--basenames] [--functions] [addr addr ...]\n"), - program_name, get_demangler_list ()); + fprintf (stream, _("Usage: %s [option(s)] [addr(s)]\n"), program_name); + fprintf (stream, _(" Convert addresses into line number/file name pairs.\n")); + fprintf (stream, _(" If no addresses are specified on the command line, they will be read from stdin\n")); + fprintf (stream, _(" The options are:\n\ + -b --target= Set the binary file format\n\ + -e --exe= Set the input file name (default is a.out)\n\ + -s --basenames Strip directory names\n\ + -f --functions Show function names\n\ + -C --demangle[=%s]\n\ + Demangle function names\n\ + --demangler=\n\ + Set dso and demangler function\n\ + -h --help Display this information\n\ + -v --version Display the program's version\n\ +\n"), get_demangler_list ()); + list_supported_targets (program_name, stream); if (status == 0) fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); @@ -268,6 +278,8 @@ process_file (filename, target) bfd_close (abfd); } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -295,13 +307,13 @@ main (argc, argv) filename = NULL; target = NULL; - while ((c = getopt_long (argc, argv, "b:Ce:sfHV", long_options, (int *) 0)) + while ((c = getopt_long (argc, argv, "b:Ce:sfHhVv", long_options, (int *) 0)) != EOF) { switch (c) { case 0: - break; /* we've been given a long option */ + break; /* We've been given a long option. */ case 'b': target = optarg; break; @@ -319,9 +331,11 @@ main (argc, argv) case 'f': with_functions = true; break; + case 'v': case 'V': print_version ("addr2line"); break; + case 'h': case 'H': usage (stdout, 0); break; diff -uprN binutils-2.11.92.0.12.3/binutils/ar.c binutils-2.11.93.0.2/binutils/ar.c --- binutils-2.11.92.0.12.3/binutils/ar.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/ar.c Sun Feb 3 11:22:30 2002 @@ -1,6 +1,6 @@ /* ar.c - Archive modify and extract. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001 + 2001, 2002 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -280,8 +280,14 @@ usage (help) fprintf (s, _(" [-X32_64] - (ignored)\n")); } else + { /* xgettext:c-format */ - fprintf (s, _("Usage: %s [-vV] archive\n"), program_name); + 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\ + -h --help Print this help message\n\ + -V --version Print version information\n")); + } list_supported_targets (program_name, stderr); @@ -358,6 +364,8 @@ remove_output () /* The option parsing should be in its own function. It will be when I have getopt working. */ +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -451,7 +459,10 @@ main (argc, argv) { boolean touch = false; - if (argc < 2 || strcmp (argv[1], "--help") == 0) + if (argc < 2 + || strcmp (argv[1], "--help") == 0 + || strcmp (argv[1], "-h") == 0 + || strcmp (argv[1], "-H") == 0) usage (0); if (strcmp (argv[1], "-V") == 0 || strcmp (argv[1], "-v") == 0 diff -uprN binutils-2.11.92.0.12.3/binutils/arlex.l binutils-2.11.93.0.2/binutils/arlex.l --- binutils-2.11.92.0.12.3/binutils/arlex.l Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/arlex.l Sun Feb 3 11:22:30 2002 @@ -29,6 +29,10 @@ Foundation, Inc., 59 Temple Place - Suit #include "libiberty.h" #include "arparse.h" +#define YY_NO_UNPUT + +extern int yylex PARAMS ((void)); + int linenumber; %} diff -uprN binutils-2.11.92.0.12.3/binutils/arsup.h binutils-2.11.93.0.2/binutils/arsup.h --- binutils-2.11.92.0.12.3/binutils/arsup.h Thu Mar 15 14:51:43 2001 +++ binutils-2.11.93.0.2/binutils/arsup.h Sun Feb 3 11:22:30 2002 @@ -22,54 +22,40 @@ struct list { struct list *next; }; -void -maybequit PARAMS ((void)); +void maybequit PARAMS ((void)); -void -prompt PARAMS ((void)); +void prompt PARAMS ((void)); -void -ar_clear PARAMS ((void)); +void ar_clear PARAMS ((void)); -void -ar_replace PARAMS ((struct list *)); +void ar_replace PARAMS ((struct list *)); -void -ar_delete PARAMS ((struct list *)); +void ar_delete PARAMS ((struct list *)); -void -ar_save PARAMS ((void)); +void ar_save PARAMS ((void)); -void -ar_list PARAMS ((void)); +void ar_list PARAMS ((void)); -void -ar_open PARAMS ((char *, int)); +void ar_open PARAMS ((char *, int)); -void -ar_directory PARAMS ((char *, struct list *, char *)); +void ar_directory PARAMS ((char *, struct list *, char *)); -void -ar_addmod PARAMS ((struct list *)); +void ar_addmod PARAMS ((struct list *)); -void -ar_addlib PARAMS ((char *, struct list *)); +void ar_addlib PARAMS ((char *, struct list *)); -void -ar_end PARAMS ((void)); +void ar_end PARAMS ((void)); -void -ar_extract PARAMS ((struct list *)); +void ar_extract PARAMS ((struct list *)); -bfd * -open_inarch PARAMS ((const char *archive_filename, const char *)); +bfd *open_inarch PARAMS ((const char *archive_filename, const char *)); -int -yyparse PARAMS ((void)); +extern int yylex PARAMS ((void)); + +int yyparse PARAMS ((void)); /* Functions from ar.c */ -void -extract_file PARAMS ((bfd * abfd)); +void extract_file PARAMS ((bfd * abfd)); extern int interactive; diff -uprN binutils-2.11.92.0.12.3/binutils/coffdump.c binutils-2.11.93.0.2/binutils/coffdump.c --- binutils-2.11.92.0.12.3/binutils/coffdump.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/coffdump.c Sun Feb 3 11:22:30 2002 @@ -1,27 +1,27 @@ /* Coff file dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1995, 1998, 1999, 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. */ /* Written by Steve Chamberlain This module reads a type tree generated by coffgrok and prints - it out so we can test the grokker. -*/ + it out so we can test the grokker. */ #include #include @@ -44,12 +44,11 @@ static void dump_coff_sfile PARAMS ((str static void dump_coff_section PARAMS ((struct coff_section *)); extern void coff_dump PARAMS ((struct coff_ofile *)); static void show_usage PARAMS ((FILE *, int)); -static void show_help PARAMS ((void)); extern int main PARAMS ((int, char **)); static void tab (x) -int x; + int x; { static int indent; int i; @@ -91,7 +90,8 @@ int x; } } -static void nl () +static void +nl () { atnl = 1; } @@ -102,21 +102,25 @@ dump_coff_lines (p) { int i; int online = 0; - tab(1); - printf(_("#lines %d "),p->nlines); + + tab (1); + printf (_("#lines %d "),p->nlines); + for (i = 0; i < p->nlines; i++) { - printf("(%d 0x%x)", p->lines[i], p->addresses[i]); + printf ("(%d 0x%x)", p->lines[i], p->addresses[i]); + online++; + if (online > 6) { - nl(); - tab(0); + nl (); + tab (0); online = 0; } } - nl(); - tab(-1); + nl (); + tab (-1); } static void @@ -125,13 +129,14 @@ dump_coff_type (p) { tab (1); printf ("size %d ", p->size); + switch (p->type) { case coff_secdef_type: printf ("section definition at %x size %x\n", p->u.asecdef.address, p->u.asecdef.size); - nl(); + nl (); break; case coff_pointer_type: printf ("pointer to"); @@ -325,7 +330,6 @@ dump_coff_visible (p) tab (-1); } - void dump_coff_symbol (p) struct coff_symbol *p; @@ -333,6 +337,7 @@ dump_coff_symbol (p) tab (1); printf ("List of symbols"); nl (); + while (p) { tab (1); @@ -363,35 +368,37 @@ static void dump_coff_scope (p) struct coff_scope *p; { -if (p) { - tab (1); - printf ("List of blocks %lx ",(unsigned long) p); - - if (p->sec) { - printf( " %s %x..%x", p->sec->name,p->offset, p->offset + p->size -1); - } - nl (); - tab (0); - printf ("*****************"); - nl (); - while (p) + if (p) { - tab (0); - printf ("vars %d", p->nvars); + tab (1); + printf ("List of blocks %lx ",(unsigned long) p); + + if (p->sec) + printf( " %s %x..%x", p->sec->name,p->offset, p->offset + p->size -1); + nl (); - dump_coff_symbol (p->vars_head); - printf ("blocks"); + tab (0); + printf ("*****************"); nl (); - dump_coff_scope (p->list_head); + + while (p) + { + tab (0); + printf ("vars %d", p->nvars); + nl (); + dump_coff_symbol (p->vars_head); + printf ("blocks"); + nl (); + dump_coff_scope (p->list_head); + nl (); + p = p->next; + } + + tab (0); + printf ("*****************"); nl (); - p = p->next; + tab (-1); } - - tab (0); - printf ("*****************"); - nl (); - tab (-1); -} } static void @@ -401,6 +408,7 @@ dump_coff_sfile (p) tab (1); printf ("List of source files"); nl (); + while (p) { tab (0); @@ -414,25 +422,27 @@ dump_coff_sfile (p) static void dump_coff_section(ptr) -struct coff_section *ptr; + struct coff_section *ptr; { int i; - tab(1); - 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(); + + tab (1); + 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++) { - tab(0); - printf("(%x %s %x)", - ptr->relocs[i].offset, - ptr->relocs[i].symbol->name, - ptr->relocs[i].addend); - nl(); + tab (0); + printf ("(%x %s %x)", + ptr->relocs[i].offset, + ptr->relocs[i].symbol->name, + ptr->relocs[i].addend); + nl (); } - tab(-1); + tab (-1); } void @@ -440,17 +450,17 @@ coff_dump (ptr) struct coff_ofile *ptr; { int i; + printf ("Coff dump"); nl (); printf ("#souces %d", ptr->nsources); nl (); dump_coff_sfile (ptr->source_head); + for (i = 0; i < ptr->nsections; i++) - dump_coff_section(ptr->sections + i); + dump_coff_section (ptr->sections + i); } - - char * program_name; static void @@ -458,18 +468,18 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, "Usage: %s [-hV] in-file\n", program_name); - exit (status); -} + fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name); + fprintf (file, _(" Print a human readable interpretation of a SYSROFF object file\n")); + fprintf (file, _(" The options are:\n\ + -h --help Display this information\n\ + -v --version Display the program's version\n\ +\n")); -static void -show_help () -{ - printf (_("%s: Print a human readable interpretation of a SYSROFF object file\n"), - program_name); - show_usage (stdout, 0); -} + if (status == 0) + fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); + exit (status); +} int main (ac, av) @@ -500,24 +510,25 @@ main (ac, av) program_name = av[0]; xmalloc_set_program_name (program_name); - while ((opt = getopt_long (ac, av, "hV", long_options, + while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF) { switch (opt) { + case 'H': case 'h': - show_help (); - /*NOTREACHED*/ + show_usage (stdout, 0); + break; + case 'v': case 'V': print_version ("coffdump"); exit (0); - /*NOTREACHED*/ case 0: break; default: show_usage (stderr, 1); - /*NOTREACHED*/ + break; } } @@ -527,9 +538,8 @@ main (ac, av) } if (!input_file) - { - fatal (_("no input file specified")); - } + fatal (_("no input file specified")); + abfd = bfd_openr (input_file, 0); if (!abfd) @@ -538,6 +548,7 @@ main (ac, av) if (! bfd_check_format_matches (abfd, bfd_object, &matching)) { bfd_nonfatal (input_file); + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) { list_matching_formats (matching); @@ -548,7 +559,8 @@ main (ac, av) tree = coff_grok (abfd); - coff_dump(tree); - printf("\n"); + coff_dump (tree); + printf ("\n"); + return 0; } diff -uprN binutils-2.11.92.0.12.3/binutils/config.in binutils-2.11.93.0.2/binutils/config.in --- binutils-2.11.92.0.12.3/binutils/config.in Thu Dec 21 16:44:30 2000 +++ binutils-2.11.93.0.2/binutils/config.in Sun Feb 3 11:22:30 2002 @@ -58,6 +58,9 @@ /* Define if you have the dcgettext function. */ #undef HAVE_DCGETTEXT +/* Define if you have the getc_unlocked function. */ +#undef HAVE_GETC_UNLOCKED + /* Define if you have the getcwd function. */ #undef HAVE_GETCWD @@ -166,6 +169,12 @@ /* Define if dlopen exists. */ #undef HAVE_DLOPEN +/* Is fopen64 available? */ +#undef HAVE_FOPEN64 + +/* Enable LFS */ +#undef _LARGEFILE64_SOURCE + /* Is the type time_t defined in ? */ #undef HAVE_TIME_T_IN_TIME_H diff -uprN binutils-2.11.92.0.12.3/binutils/configure binutils-2.11.93.0.2/binutils/configure --- binutils-2.11.92.0.12.3/binutils/configure Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/configure Sun Feb 3 11:22:30 2002 @@ -1527,9 +1527,18 @@ gnu*) ;; hpux10.20*|hpux11*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl + case $host_cpu in + hppa*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + esac ;; irix5* | irix6*) @@ -1613,13 +1622,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:1617: checking for object suffix" >&5 +echo "configure:1626: 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:1623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1632: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1639,7 +1648,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1643: checking for executable suffix" >&5 +echo "configure:1652: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1649,7 +1658,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1682,7 +1691,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:1686: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1695: 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 @@ -1744,7 +1753,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:1748: checking for file" >&5 +echo "configure:1757: 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 @@ -1815,7 +1824,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:1819: checking for $ac_word" >&5 +echo "configure:1828: 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 @@ -1847,7 +1856,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:1851: checking for $ac_word" >&5 +echo "configure:1860: 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 @@ -1882,7 +1891,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:1886: checking for $ac_word" >&5 +echo "configure:1895: 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 @@ -1914,7 +1923,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:1918: checking for $ac_word" >&5 +echo "configure:1927: 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 @@ -1981,8 +1990,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1985 "configure"' > conftest.$ac_ext - if { (eval echo configure:1986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1994 "configure"' > conftest.$ac_ext + if { (eval echo configure:1995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -1998,12 +2007,28 @@ case $host in rm -rf conftest* ;; +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo configure:2014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; + *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:2007: checking whether the C compiler needs -belf" >&5 +echo "configure:2032: 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 @@ -2016,14 +2041,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:2052: \"$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 @@ -2196,7 +2221,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:2200: checking for $ac_word" >&5 +echo "configure:2225: 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 @@ -2226,7 +2251,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:2230: checking for $ac_word" >&5 +echo "configure:2255: 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 @@ -2277,7 +2302,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:2281: checking for $ac_word" >&5 +echo "configure:2306: 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 @@ -2309,7 +2334,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2313: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2338: 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. @@ -2320,12 +2345,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 2324 "configure" +#line 2349 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2354: \"$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 @@ -2351,12 +2376,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:2355: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2380: 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:2360: checking whether we are using GNU C" >&5 +echo "configure:2385: 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 @@ -2365,7 +2390,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2369: \"$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:2394: \"$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 @@ -2384,7 +2409,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:2388: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2413: 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 @@ -2421,7 +2446,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:2425: checking for $ac_word" >&5 +echo "configure:2450: 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 @@ -2452,7 +2477,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2456: checking how to run the C preprocessor" >&5 +echo "configure:2481: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2467,13 +2492,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:2477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2502: \"$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 : @@ -2484,13 +2509,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:2494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2519: \"$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 : @@ -2501,13 +2526,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:2511: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2536: \"$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 : @@ -2537,7 +2562,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:2541: checking for $ac_word" >&5 +echo "configure:2566: 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 @@ -2570,7 +2595,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:2574: checking for $ac_word" >&5 +echo "configure:2599: 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 @@ -2604,7 +2629,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:2608: checking for yywrap in -l$ac_lib" >&5 +echo "configure:2633: 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 @@ -2612,7 +2637,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:2652: \"$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 @@ -2646,7 +2671,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:2650: checking lex output file root" >&5 +echo "configure:2675: 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 @@ -2667,7 +2692,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:2671: checking whether yytext is a pointer" >&5 +echo "configure:2696: 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 @@ -2679,14 +2704,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:2715: \"$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 @@ -2708,11 +2733,11 @@ EOF fi -ALL_LINGUAS="fr tr" +ALL_LINGUAS="fr tr ja 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:2716: checking for $ac_word" >&5 +echo "configure:2741: 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 @@ -2740,12 +2765,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2744: checking for ANSI C header files" >&5 +echo "configure:2769: 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 @@ -2753,7 +2778,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2782: \"$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* @@ -2770,7 +2795,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 @@ -2788,7 +2813,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 @@ -2809,7 +2834,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2820,7 +2845,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:2824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2849: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2844,12 +2869,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2848: checking for working const" >&5 +echo "configure:2873: 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:2927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2919,21 +2944,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:2923: checking for inline" >&5 +echo "configure:2948: 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:2962: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -2959,12 +2984,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2963: checking for off_t" >&5 +echo "configure:2988: 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 @@ -2992,12 +3017,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2996: checking for size_t" >&5 +echo "configure:3021: 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 @@ -3027,19 +3052,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:3031: checking for working alloca.h" >&5 +echo "configure:3056: 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:3043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3068: \"$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 @@ -3060,12 +3085,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3064: checking for alloca" >&5 +echo "configure:3089: 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:3122: \"$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 @@ -3125,12 +3150,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:3129: checking whether alloca needs Cray hooks" >&5 +echo "configure:3154: 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:3159: checking for $ac_func" >&5 +echo "configure:3184: 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:3212: \"$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 @@ -3210,7 +3235,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:3214: checking stack direction for C alloca" >&5 +echo "configure:3239: 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 @@ -3218,7 +3243,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:3266: \"$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 @@ -3262,17 +3287,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:3266: checking for $ac_hdr" >&5 +echo "configure:3291: 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:3276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3301: \"$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* @@ -3301,12 +3326,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3305: checking for $ac_func" >&5 +echo "configure:3330: 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:3358: \"$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 @@ -3354,7 +3379,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:3358: checking for working mmap" >&5 +echo "configure:3383: 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 @@ -3362,7 +3387,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:3531: \"$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 @@ -3530,17 +3555,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:3534: checking for $ac_hdr" >&5 +echo "configure:3559: 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:3544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3569: \"$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* @@ -3570,12 +3595,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3574: checking for $ac_func" >&5 +echo "configure:3599: 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:3627: \"$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 @@ -3627,12 +3652,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3631: checking for $ac_func" >&5 +echo "configure:3656: 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:3684: \"$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 @@ -3689,19 +3714,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:3693: checking for LC_MESSAGES" >&5 +echo "configure:3718: 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:3705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3730: \"$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 @@ -3722,7 +3747,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:3726: checking whether NLS is requested" >&5 +echo "configure:3751: 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" @@ -3742,7 +3767,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:3746: checking whether included gettext is requested" >&5 +echo "configure:3771: 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" @@ -3761,17 +3786,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:3765: checking for libintl.h" >&5 +echo "configure:3790: 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:3775: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3800: \"$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* @@ -3788,19 +3813,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:3792: checking for gettext in libc" >&5 +echo "configure:3817: 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:3804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3829: \"$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 @@ -3816,7 +3841,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:3820: checking for bindtextdomain in -lintl" >&5 +echo "configure:3845: 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 @@ -3824,7 +3849,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:3864: \"$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 @@ -3851,19 +3876,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:3855: checking for gettext in libintl" >&5 +echo "configure:3880: 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:3892: \"$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 @@ -3891,7 +3916,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:3895: checking for $ac_word" >&5 +echo "configure:3920: 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 @@ -3925,12 +3950,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3929: checking for $ac_func" >&5 +echo "configure:3954: 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:3982: \"$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 @@ -3980,7 +4005,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:3984: checking for $ac_word" >&5 +echo "configure:4009: 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 @@ -4016,7 +4041,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:4020: checking for $ac_word" >&5 +echo "configure:4045: 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 @@ -4048,7 +4073,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4088,7 +4113,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:4092: checking for $ac_word" >&5 +echo "configure:4117: 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 @@ -4122,7 +4147,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:4126: checking for $ac_word" >&5 +echo "configure:4151: 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 @@ -4158,7 +4183,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:4162: checking for $ac_word" >&5 +echo "configure:4187: 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 @@ -4248,7 +4273,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:4252: checking for catalogs to be installed" >&5 +echo "configure:4277: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -4276,17 +4301,17 @@ echo "configure:4252: 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:4280: checking for linux/version.h" >&5 +echo "configure:4305: 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:4290: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4315: \"$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* @@ -4349,7 +4374,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:4353: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:4378: 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" @@ -4374,7 +4399,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:4378: checking for executable suffix" >&5 +echo "configure:4403: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4384,7 +4409,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:4388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:4413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -4427,7 +4452,7 @@ AR=${AR-ar} # 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:4431: checking for $ac_word" >&5 +echo "configure:4456: 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 @@ -4466,7 +4491,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:4470: checking for a BSD compatible install" >&5 +echo "configure:4495: 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 @@ -4533,7 +4558,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:4537: checking for build system executable suffix" >&5 +echo "configure:4562: 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 @@ -4568,17 +4593,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:4572: checking for $ac_hdr" >&5 +echo "configure:4597: 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:4582: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4607: \"$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* @@ -4605,12 +4630,12 @@ fi done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:4609: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:4634: 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 @@ -4626,7 +4651,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:4630: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -4649,19 +4674,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:4653: checking for working alloca.h" >&5 +echo "configure:4678: 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:4665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4690: \"$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 @@ -4682,12 +4707,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:4686: checking for alloca" >&5 +echo "configure:4711: 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:4744: \"$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 @@ -4747,12 +4772,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4751: checking whether alloca needs Cray hooks" >&5 +echo "configure:4776: 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:4781: checking for $ac_func" >&5 +echo "configure:4806: 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:4834: \"$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 @@ -4832,7 +4857,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4836: checking stack direction for C alloca" >&5 +echo "configure:4861: 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 @@ -4840,7 +4865,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:4888: \"$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 @@ -4880,15 +4905,15 @@ EOF fi -for ac_func in sbrk utimes setmode +for ac_func in sbrk utimes setmode getc_unlocked do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4887: checking for $ac_func" >&5 +echo "configure:4912: 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:4940: \"$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 @@ -4936,17 +4961,78 @@ fi done +# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE +# needs to be defined for it +echo $ac_n "checking for fopen64""... $ac_c" 1>&6 +echo "configure:4968: checking for fopen64" >&5 +if eval "test \"`echo '$''{'bu_cv_have_fopen64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +FILE *f = fopen64 ("/tmp/foo","r"); +; return 0; } +EOF +if { (eval echo configure:4980: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + bu_cv_have_fopen64=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + saved_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" + cat > conftest.$ac_ext < +int main() { +FILE *f = fopen64 ("/tmp/foo","r"); +; return 0; } +EOF +if { (eval echo configure:4997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + bu_cv_have_fopen64=no +fi +rm -f conftest* + CPPFLAGS=$saved_CPPFLAGS +fi +rm -f conftest* +fi + +echo "$ac_t""$bu_cv_have_fopen64" 1>&6 +if test $bu_cv_have_fopen64 != no; then + cat >> confdefs.h <<\EOF +#define HAVE_FOPEN64 1 +EOF + + if test $bu_cv_have_fopen64 = "need -D_LARGEFILE64_SOURCE"; then + cat >> confdefs.h <<\EOF +#define _LARGEFILE64_SOURCE 1 +EOF + + fi +fi + # Some systems have frexp only in -lm, not in -lc. echo $ac_n "checking for library containing frexp""... $ac_c" 1>&6 -echo "configure:4943: checking for library containing frexp" >&5 +echo "configure:5029: checking for library containing frexp" >&5 if eval "test \"`echo '$''{'ac_cv_search_frexp'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_func_search_save_LIBS="$LIBS" ac_cv_search_frexp="no" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_frexp="none required" else @@ -4968,7 +5054,7 @@ rm -f conftest* test "$ac_cv_search_frexp" = "no" && for i in m; 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:5069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_search_frexp="-l$i" break @@ -5001,12 +5087,12 @@ else : fi echo $ac_n "checking whether weak symbol works""... $ac_c" 1>&6 -echo "configure:5005: checking whether weak symbol works" >&5 +echo "configure:5091: 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:5105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libiberty_cv_have_weak_symbol=no else @@ -5039,14 +5125,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:5043: checking for library containing dlopen" >&5 +echo "configure:5129: 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:5147: \"$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 @@ -5068,7 +5154,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:5169: \"$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 @@ -5108,19 +5194,19 @@ EOF fi echo $ac_n "checking for time_t in time.h""... $ac_c" 1>&6 -echo "configure:5112: checking for time_t in time.h" >&5 +echo "configure:5198: checking for time_t in time.h" >&5 if eval "test \"`echo '$''{'bu_cv_decl_time_t_time_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { time_t i; ; return 0; } EOF -if { (eval echo configure:5124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_decl_time_t_time_h=yes else @@ -5141,19 +5227,19 @@ EOF fi echo $ac_n "checking for time_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:5145: checking for time_t in sys/types.h" >&5 +echo "configure:5231: checking for time_t in sys/types.h" >&5 if eval "test \"`echo '$''{'bu_cv_decl_time_t_types_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { time_t i; ; return 0; } EOF -if { (eval echo configure:5157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_decl_time_t_types_h=yes else @@ -5176,12 +5262,12 @@ fi # Under Next 3.2 apparently does not define struct utimbuf # by default. echo $ac_n "checking for utime.h""... $ac_c" 1>&6 -echo "configure:5180: checking for utime.h" >&5 +echo "configure:5266: checking for utime.h" >&5 if eval "test \"`echo '$''{'bu_cv_header_utime_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #ifdef HAVE_TIME_H @@ -5192,7 +5278,7 @@ int main() { struct utimbuf s; ; return 0; } EOF -if { (eval echo configure:5196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5282: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bu_cv_header_utime_h=yes else @@ -5213,12 +5299,12 @@ EOF fi echo $ac_n "checking whether fprintf must be declared""... $ac_c" 1>&6 -echo "configure:5217: checking whether fprintf must be declared" >&5 +echo "configure:5303: checking whether fprintf must be declared" >&5 if eval "test \"`echo '$''{'bfd_cv_decl_needed_fprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5239,7 +5325,7 @@ int main() { char *(*pfn) = (char *(*)) fprintf ; return 0; } EOF -if { (eval echo configure:5243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_fprintf=no else @@ -5260,12 +5346,12 @@ EOF fi echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6 -echo "configure:5264: checking whether strstr must be declared" >&5 +echo "configure:5350: 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 < @@ -5286,7 +5372,7 @@ int main() { char *(*pfn) = (char *(*)) strstr ; return 0; } EOF -if { (eval echo configure:5290: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_strstr=no else @@ -5307,12 +5393,12 @@ EOF fi echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6 -echo "configure:5311: checking whether sbrk must be declared" >&5 +echo "configure:5397: 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 < @@ -5333,7 +5419,7 @@ int main() { char *(*pfn) = (char *(*)) sbrk ; return 0; } EOF -if { (eval echo configure:5337: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_sbrk=no else @@ -5354,12 +5440,12 @@ EOF fi echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6 -echo "configure:5358: checking whether getenv must be declared" >&5 +echo "configure:5444: 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 < @@ -5380,7 +5466,7 @@ int main() { char *(*pfn) = (char *(*)) getenv ; return 0; } EOF -if { (eval echo configure:5384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_getenv=no else @@ -5401,12 +5487,12 @@ EOF fi echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6 -echo "configure:5405: checking whether environ must be declared" >&5 +echo "configure:5491: 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 < @@ -5427,7 +5513,7 @@ int main() { char *(*pfn) = (char *(*)) environ ; return 0; } EOF -if { (eval echo configure:5431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* bfd_cv_decl_needed_environ=no else diff -uprN binutils-2.11.92.0.12.3/binutils/configure.in binutils-2.11.93.0.2/binutils/configure.in --- binutils-2.11.92.0.12.3/binutils/configure.in Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/configure.in Sun Feb 3 11:22:30 2002 @@ -64,7 +64,7 @@ AC_PROG_CC AC_PROG_YACC AM_PROG_LEX -ALL_LINGUAS="fr tr" +ALL_LINGUAS="fr tr ja es" CY_GNU_GETTEXT AM_MAINTAINER_MODE @@ -100,7 +100,29 @@ AC_SUBST(DEMANGLER_NAME) AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h dlfcn.h) AC_HEADER_SYS_WAIT AC_FUNC_ALLOCA -AC_CHECK_FUNCS(sbrk utimes setmode) +AC_CHECK_FUNCS(sbrk utimes setmode getc_unlocked) + +# Check whether fopen64 is available and whether _LARGEFILE64_SOURCE +# needs to be defined for it +AC_MSG_CHECKING([for fopen64]) +AC_CACHE_VAL(bu_cv_have_fopen64, +[AC_TRY_LINK([#include ], [FILE *f = fopen64 ("/tmp/foo","r");], +bu_cv_have_fopen64=yes, +[saved_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE" + AC_TRY_LINK([#include ], [FILE *f = fopen64 ("/tmp/foo","r");], +bu_cv_have_fopen64="need -D_LARGEFILE64_SOURCE", +bu_cv_have_fopen64=no) + CPPFLAGS=$saved_CPPFLAGS])]) +AC_MSG_RESULT($bu_cv_have_fopen64) +if test $bu_cv_have_fopen64 != no; then + AC_DEFINE([HAVE_FOPEN64], 1, + [Is fopen64 available?]) + if test $bu_cv_have_fopen64 = "need -D_LARGEFILE64_SOURCE"; then + AC_DEFINE([_LARGEFILE64_SOURCE], 1, + [Enable LFS]) + fi +fi # Some systems have frexp only in -lm, not in -lc. AC_SEARCH_LIBS(frexp, m) diff -uprN binutils-2.11.92.0.12.3/binutils/dlltool.c binutils-2.11.93.0.2/binutils/dlltool.c --- binutils-2.11.92.0.12.3/binutils/dlltool.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/dlltool.c Sun Feb 3 11:22:30 2002 @@ -3135,7 +3135,7 @@ usage (file, status) int status; { /* xgetext:c-format */ - fprintf (file, _("Usage %s \n"), program_name); + fprintf (file, _("Usage %s \n"), program_name); /* xgetext:c-format */ fprintf (file, _(" -m --machine Create as DLL for . [default: %s]\n"), mname); fprintf (file, _(" possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n")); @@ -3228,9 +3228,9 @@ main (ac, av) while ((c = getopt_long (ac, av, #ifdef DLLTOOL_MCORE_ELF - "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVhM:L:F:", + "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHhM:L:F:", #else - "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVh", + "m:e:l:aD:d:z:b:xcCuUkAS:f:nvVHh", #endif long_options, 0)) != EOF) @@ -3280,6 +3280,7 @@ main (ac, av) case 'e': exp_name = optarg; break; + case 'H': case 'h': usage (stdout, 0); break; diff -uprN binutils-2.11.92.0.12.3/binutils/dllwrap.c binutils-2.11.93.0.2/binutils/dllwrap.c --- binutils-2.11.92.0.12.3/binutils/dllwrap.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/dllwrap.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Mumit Khan (khan@xraylith.wisc.edu). This file is part of GNU Binutils. @@ -516,7 +516,7 @@ usage (file, status) FILE *file; int status; { - fprintf (file, _("Usage %s \n"), program_name); + fprintf (file, _("Usage %s \n"), program_name); fprintf (file, _(" Generic options:\n")); fprintf (file, _(" --quiet, -q Work quietly\n")); fprintf (file, _(" --verbose, -v Verbose\n")); @@ -849,8 +849,8 @@ main (argc, argv) delete_def_file = 1; free (fileprefix); delete_def_file = 1; - warn (_("no export definition file provided")); - warn (_("creating one, but that may not be what you want")); + warn (_("no export definition file provided.\n\ +Creating one, but that may not be what you want")); } /* set the target platform. */ diff -uprN binutils-2.11.92.0.12.3/binutils/doc/Makefile.am binutils-2.11.93.0.2/binutils/doc/Makefile.am --- binutils-2.11.92.0.12.3/binutils/doc/Makefile.am Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/doc/Makefile.am Sun Feb 3 11:22:31 2002 @@ -155,6 +155,10 @@ $(DEMANGLER_NAME).1: cxxfilt.man Makefil -e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \ > $(DEMANGLER_NAME).1 +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info + # Maintenance # We need it for the taz target in ../../Makefile.in. diff -uprN binutils-2.11.92.0.12.3/binutils/doc/Makefile.in binutils-2.11.93.0.2/binutils/doc/Makefile.in --- binutils-2.11.92.0.12.3/binutils/doc/Makefile.in Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/doc/Makefile.in Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -175,7 +175,7 @@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar +TAR = gtar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -261,7 +261,7 @@ uninstall-info: else ii=; fi; \ list='$(INFO_DEPS)'; \ for file in $$list; do \ - test -z "$ii" \ + test -z "$$ii" \ || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ done @$(NORMAL_UNINSTALL) @@ -547,6 +547,10 @@ $(DEMANGLER_NAME).1: cxxfilt.man Makefil -e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \ > $(DEMANGLER_NAME).1 +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info + # Maintenance # We need it for the taz target in ../../Makefile.in. diff -uprN binutils-2.11.92.0.12.3/binutils/doc/binutils.texi binutils-2.11.93.0.2/binutils/doc/binutils.texi --- binutils-2.11.92.0.12.3/binutils/doc/binutils.texi Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/binutils/doc/binutils.texi Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ \input texinfo @c -*- Texinfo -*- @setfilename binutils.info -@c Copyright 2001 Free Software Foundation, Inc. +@c Copyright 2001, 2002 Free Software Foundation, Inc. @include config.texi @@ -29,7 +29,7 @@ END-INFO-DIR-ENTRY @ifinfo @c man begin COPYRIGHT -Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. +Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 @@ -53,7 +53,7 @@ notice identical to this one except for @c This file documents the GNU binary utilities "ar", "ld", "objcopy", @c "objdump", "nm", "size", "strings", "strip", "readelf" and "ranlib". @c -@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. +@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. @c @c This text may be freely distributed under the terms of the GNU @c Free Documentation License. @@ -78,7 +78,7 @@ notice identical to this one except for @end tex @vskip 0pt plus 1filll -Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001 Free Software Foundation, Inc. +Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 @@ -1685,6 +1685,7 @@ relocation entries. Using @option{-x} i @itemx --wide @cindex wide output, printing Format some lines for output devices that have more than 80 columns. +Also do not truncate symbol names when they are displayed. @end table @c man end @@ -1756,7 +1757,9 @@ ar(1), nm(1), and the Info entries for @ @smallexample @c man begin SYNOPSIS size size [@option{-A}|@option{-B}|@option{--format=}@var{compatibility}] - [@option{--help}] [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}] + [@option{--help}] + [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}] + [@option{-t}|@option{--totals}] [@option{--target=}@var{bfdname}] [@option{-V}|@option{--version}] [@var{objfile}@dots{}] @c man end @@ -1839,6 +1842,10 @@ values (8, 10, 16) are supported. The t radices; decimal and hexadecimal for @option{-d} or @option{-x} output, or octal and hexadecimal if you're using @option{-o}. +@item -t +@itemx --totals +Show totals of all objects listed (Berkeley format listing mode only). + @item --target=@var{bfdname} @cindex object code format Specify that the object-code format for @var{objfile} is @@ -1970,7 +1977,7 @@ and the Info entries for @file{binutils} strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname} ] [@option{-I} @var{bfdname} |@option{--input-target=}@var{bfdname} ] [@option{-O} @var{bfdname} |@option{--output-target=}@var{bfdname} ] - [@option{-s}|@option{--strip-all}] [@option{-S}|@option{-g}|@option{--strip-debug}] + [@option{-s}|@option{--strip-all}] [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}] [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname} ] [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname} ] [@option{-x}|@option{--discard-all} ] [@option{-X} |@option{--discard-locals}] @@ -2027,6 +2034,7 @@ Remove all symbols. @item -g @itemx -S +@itemx -d @itemx --strip-debug Remove debugging symbols only. @@ -2731,14 +2739,14 @@ when @option{--export-all-symbols} is us Specifies the path, including the filename, of the assembler to be used to create the exports file. -@item -f @var{switches} -@itemx --as-flags @var{switches} -Specifies any specific command line switches to be passed to the +@item -f @var{options} +@itemx --as-flags @var{options} +Specifies any specific command line options to be passed to the assembler when building the exports file. This option will work even if the @option{-S} option is not used. This option only takes one argument, and if it occurs more than once on the command line, then later occurrences will override earlier occurrences. So if it is necessary to -pass multiple switches to the assembler they should be enclosed in +pass multiple options to the assembler they should be enclosed in double quotes. @item -D @var{name} diff -uprN binutils-2.11.92.0.12.3/binutils/nlmconv.c binutils-2.11.93.0.2/binutils/nlmconv.c --- binutils-2.11.92.0.12.3/binutils/nlmconv.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/nlmconv.c Sun Feb 3 11:22:30 2002 @@ -1,22 +1,22 @@ /* nlmconv.c -- NLM conversion program - 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. -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. */ /* Written by Ian Lance Taylor . @@ -122,7 +122,6 @@ static struct option long_options[] = /* Local routines. */ -static void show_help PARAMS ((void)); static void show_usage PARAMS ((FILE *, int)); static const char *select_output_format PARAMS ((enum bfd_architecture, unsigned long, boolean)); @@ -226,7 +225,7 @@ main (argc, argv) bfd_init (); set_default_bfd_target (); - while ((opt = getopt_long (argc, argv, "dhI:l:O:T:V", long_options, + while ((opt = getopt_long (argc, argv, "dHhI:l:O:T:Vv", long_options, (int *) NULL)) != EOF) { @@ -235,9 +234,10 @@ main (argc, argv) case 'd': debug = 1; break; + case 'H': case 'h': - show_help (); - /*NOTREACHED*/ + show_usage (stdout, 0); + break; case 'I': input_format = optarg; break; @@ -250,14 +250,15 @@ main (argc, argv) case 'T': header_file = optarg; break; + case 'v': case 'V': print_version ("nlmconv"); - /*NOTREACHED*/ + break; case 0: break; default: show_usage (stderr, 1); - /*NOTREACHED*/ + break; } } @@ -1093,15 +1094,6 @@ main (argc, argv) return 0; } -/* Display a help message and exit. */ - -static void -show_help () -{ - printf (_("%s: Convert an object file into a NetWare Loadable Module\n"), - program_name); - show_usage (stdout, 0); -} /* Show a usage message and exit. */ @@ -1110,13 +1102,17 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, _("\ -Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n\ - [--input-target=bfdname] [--output-target=bfdname]\n\ - [--header-file=file] [--linker=linker] [--debug]\n\ - [--help] [--version]\n\ - [in-file [out-file]]\n"), - program_name); + fprintf (file, _("Usage: %s [option(s)] [in-file [out-file]]\n"), program_name); + fprintf (file, _(" Convert an object file into a NetWare Loadable Module\n")); + fprintf (file, _(" The options are:\n\ + -I --input-target= Set the input binary file format\n\ + -O --output-target= Set the output binary file format\n\ + -T --header-file= Read for NLM header information\n\ + -l --linker= Use for any linking\n\ + -d --debug Display on stderr the linker command line\n\ + -h --help Display this information\n\ + -v --version Display the program's version\n\ +")); if (status == 0) fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); exit (status); diff -uprN binutils-2.11.92.0.12.3/binutils/nm.c binutils-2.11.93.0.2/binutils/nm.c --- binutils-2.11.92.0.12.3/binutils/nm.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/nm.c Sun Feb 3 11:22:30 2002 @@ -299,9 +299,9 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("Usage: %s [OPTION]... [FILE]...\n"), program_name); - fprintf (stream, _("List symbols from FILEs (a.out by default).\n")); - fprintf (stream, _("\n\ + fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name); + fprintf (stream, _(" List symbols in [file(s)] (a.out by default).\n")); + fprintf (stream, _(" The options are:\n\ -a, --debug-syms Display debugger-only symbols\n\ -A, --print-file-name Print name of the input file before every symbol\n\ -B Same as --format=bsd\n\ @@ -316,7 +316,6 @@ usage (stream, status) -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n\ `sysv' or `posix'. The default is `bsd'\n\ -g, --extern-only Display only external symbols\n\ - -h, --help Display this information\n\ -l, --line-numbers Use debugging information to find a filename and\n\ line number for each symbol\n\ -n, --numeric-sort Sort symbols numerically by address\n\ @@ -329,8 +328,9 @@ usage (stream, status) -t, --radix=RADIX Use RADIX for printing symbol values\n\ --target=BFDNAME Specify the target object format as BFDNAME\n\ -u, --undefined-only Display only undefined symbols\n\ - -V, --version Display this program's version number\n\ -X 32_64 (ignored)\n\ + -h, --help Display this information\n\ + -V, --version Display this program's version number\n\ \n"), get_demangler_list ()); list_supported_targets (program_name, stream); if (status == 0) @@ -397,6 +397,8 @@ set_output_format (f) format = &formats[i]; } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -423,7 +425,7 @@ main (argc, argv) bfd_init (); set_default_bfd_target (); - while ((c = getopt_long (argc, argv, "aABCDef:glnopPrst:uvVX:", + while ((c = getopt_long (argc, argv, "aABCDef:gHhlnopPrst:uvVvX:", long_options, (int *) 0)) != EOF) { switch (c) @@ -455,6 +457,7 @@ main (argc, argv) case 'g': external_only = 1; break; + case 'H': case 'h': usage (stdout, 0); case 'l': @@ -1451,7 +1454,7 @@ print_symbol_filename_posix (archive_bfd static void print_value (abfd, val) - bfd *abfd; + bfd *abfd ATTRIBUTE_UNUSED; bfd_vma val; { #if ! defined (BFD64) || BFD_HOST_64BIT_LONG diff -uprN binutils-2.11.92.0.12.3/binutils/objcopy.c binutils-2.11.93.0.2/binutils/objcopy.c --- binutils-2.11.92.0.12.3/binutils/objcopy.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/objcopy.c Sun Feb 3 11:22:30 2002 @@ -360,8 +360,9 @@ copy_usage (stream, exit_status) FILE *stream; int exit_status; { - fprintf (stream, _("Usage: %s in-file [out-file]\n"), program_name); - fprintf (stream, _(" The switches are:\n")); + fprintf (stream, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name); + fprintf (stream, _(" Copies a binary file, possibly transforming it in the process\n")); + fprintf (stream, _(" The options are:\n")); fprintf (stream, _("\ -I --input-target Assume input file is in format \n\ -O --output-target Create an output file in format \n\ @@ -429,19 +430,20 @@ strip_usage (stream, exit_status) FILE *stream; int exit_status; { - fprintf (stream, _("Usage: %s in-file(s)\n"), program_name); - fprintf (stream, _(" The switches are:\n")); + fprintf (stream, _("Usage: %s in-file(s)\n"), program_name); + fprintf (stream, _(" Removes symbols and sections from files\n")); + fprintf (stream, _(" The options are:\n")); fprintf (stream, _("\ - -I --input-target Assume input file is in format \n\ - -O --output-target Create an output file in format \n\ - -F --target Set both input and output format to \n\ + -I --input-target= Assume input file is in format \n\ + -O --output-target= Create an output file in format \n\ + -F --target= Set both input and output format to \n\ -p --preserve-dates Copy modified/access timestamps to the output\n\ - -R --remove-section Remove section from the output\n\ + -R --remove-section= Remove section from the output\n\ -s --strip-all Remove all symbol and relocation information\n\ - -g -S --strip-debug Remove all debugging symbols\n\ + -g -S -d --strip-debug Remove all debugging symbols\n\ --strip-unneeded Remove all symbols not needed by relocations\n\ - -N --strip-symbol Do not copy symbol \n\ - -K --keep-symbol Only copy symbol \n\ + -N --strip-symbol= Do not copy symbol \n\ + -K --keep-symbol= Only copy symbol \n\ -x --discard-all Remove all non-global symbols\n\ -X --discard-locals Remove any compiler-generated symbols\n\ -v --verbose List all object files modified\n\ @@ -958,11 +960,16 @@ copy_object (ibfd, obfd) start = bfd_get_start_address (ibfd); start += change_start; - if (!bfd_set_start_address (obfd, start) - || !bfd_set_file_flags (obfd, - (bfd_get_file_flags (ibfd) - & bfd_applicable_file_flags (obfd)))) - RETURN_NONFATAL (bfd_get_filename (ibfd)); + /* 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) + || !bfd_set_file_flags (obfd, + (bfd_get_file_flags (ibfd) + & bfd_applicable_file_flags (obfd)))) + RETURN_NONFATAL (bfd_get_filename (ibfd)); + } /* Copy architecture of input file to output file. */ if (!bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), @@ -1296,6 +1303,9 @@ copy_archive (ibfd, obfd, output_target) this_element = bfd_openr_next_archived_file (ibfd, NULL); + if (!bfd_set_format (obfd, bfd_get_format (ibfd))) + RETURN_NONFATAL (bfd_get_filename (obfd)); + while (!status && this_element != (bfd *) NULL) { /* Create an output file for this member. */ @@ -1323,9 +1333,6 @@ copy_archive (ibfd, obfd, output_target) if (output_bfd == (bfd *) NULL) RETURN_NONFATAL (output_name); - if (!bfd_set_format (obfd, bfd_get_format (ibfd))) - RETURN_NONFATAL (bfd_get_filename (obfd)); - if (bfd_check_format (this_element, bfd_object) == true) copy_object (this_element, output_bfd); @@ -1403,7 +1410,8 @@ copy_file (input_filename, output_filena copy_archive (ibfd, obfd, output_target); } - else if (bfd_check_format_matches (ibfd, bfd_object, &matching)) + else if (bfd_check_format_matches (ibfd, bfd_object, &matching) + || bfd_check_format_matches (ibfd, bfd_core, &matching)) { bfd *obfd; @@ -1595,13 +1603,16 @@ setup_section (ibfd, isection, obfdarg) } if (p != NULL && p->set_flags) - flags = p->flags | (flags & SEC_HAS_CONTENTS); + flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC)); if (!bfd_set_section_flags (obfd, osection, flags)) { err = _("flags"); goto loser; } + /* Copy merge entity size. */ + osection->entsize = isection->entsize; + /* This used to be mangle_section; we do here to avoid using bfd_get_section_by_name since some formats allow multiple sections with the same name. */ @@ -1671,7 +1682,12 @@ copy_section (ibfd, isection, obfdarg) if (size == 0 || osection == 0) return; - relsize = bfd_get_reloc_upper_bound (ibfd, isection); + /* Core files do not need to be relocated. */ + if (bfd_get_format (obfd) == bfd_core) + relsize = 0; + else + relsize = bfd_get_reloc_upper_bound (ibfd, isection); + if (relsize < 0) RETURN_NONFATAL (bfd_get_filename (ibfd)); @@ -1710,7 +1726,8 @@ 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); @@ -1932,7 +1949,7 @@ strip_main (argc, argv) struct section_list *p; char *output_file = NULL; - while ((c = getopt_long (argc, argv, "I:O:F:K:N:R:o:sSpdgxXVv", + while ((c = getopt_long (argc, argv, "I:O:F:K:N:R:o:sSpdgxXHhVv", strip_options, (int *) 0)) != EOF) { switch (c) @@ -1989,6 +2006,7 @@ strip_main (argc, argv) case 0: /* We've been given a long option. */ break; + case 'H': case 'h': strip_usage (stdout, 0); default: @@ -2066,7 +2084,7 @@ copy_main (argc, argv) struct section_list *p; struct stat statbuf; - while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:G:R:SpgxXVvW:", + while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:G:R:SpgxXHhVvW:", copy_options, (int *) 0)) != EOF) { switch (c) @@ -2482,6 +2500,7 @@ copy_main (argc, argv) case 0: break; /* we've been given a long option */ + case 'H': case 'h': copy_usage (stdout, 0); @@ -2599,6 +2618,8 @@ copy_main (argc, argv) return 0; } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; diff -uprN binutils-2.11.92.0.12.3/binutils/objdump.c binutils-2.11.93.0.2/binutils/objdump.c --- binutils-2.11.92.0.12.3/binutils/objdump.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/objdump.c Sun Feb 3 11:22:30 2002 @@ -20,9 +20,9 @@ along with this program; if not, write t Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "bfd.h" -#include "getopt.h" #include "progress.h" #include "bucomm.h" +#include "getopt.h" #include "safe-ctype.h" #include "dis-asm.h" #include "libiberty.h" @@ -161,9 +161,9 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("Usage: %s OPTION... FILE...\n"), program_name); - fprintf (stream, _("Display information from object FILE.\n")); - fprintf (stream, _("\n At least one of the following switches must be given:\n")); + fprintf (stream, _("Usage: %s \n"), program_name); + fprintf (stream, _(" Display information from object .\n")); + fprintf (stream, _(" At least one of the following switches must be given:\n")); fprintf (stream, _("\ -a, --archive-headers Display archive header information\n\ -f, --file-headers Display the contents of the overall file header\n\ @@ -180,7 +180,7 @@ usage (stream, status) -T, --dynamic-syms Display the contents of the dynamic symbol table\n\ -r, --reloc Display the relocation entries in the file\n\ -R, --dynamic-reloc Display the dynamic relocation entries in the file\n\ - -V, --version Display this program's version number\n\ + -v, --version Display this program's version number\n\ -i, --info List object formats and architectures supported\n\ -H, --help Display this information\n\ ")); @@ -2740,6 +2740,8 @@ display_info () display_target_tables (); } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -2767,14 +2769,14 @@ main (argc, argv) bfd_init (); set_default_bfd_target (); - while ((c = getopt_long (argc, argv, "pib:m:M:VCdDlfahHrRtTxsSj:wE:zgG", + while ((c = getopt_long (argc, argv, "pib:m:M:VvCdDlfaHhrRtTxsSj:wE:zgG", long_options, (int *) 0)) != EOF) { switch (c) { case 0: - break; /* we've been given a long option */ + break; /* We've been given a long option. */ case 'm': machine = optarg; break; @@ -2829,7 +2831,7 @@ main (argc, argv) usage (stderr, 1); } break; - + case 'f': dump_file_header = true; seenflag = true; @@ -2910,6 +2912,7 @@ main (argc, argv) case 'H': usage (stdout, 0); seenflag = true; + case 'v': case 'V': show_version = true; seenflag = true; diff -uprN binutils-2.11.92.0.12.3/binutils/po/.cvsignore binutils-2.11.93.0.2/binutils/po/.cvsignore --- binutils-2.11.92.0.12.3/binutils/po/.cvsignore Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/binutils/po/.cvsignore Sun Feb 3 11:22:31 2002 @@ -0,0 +1 @@ +*.gmo diff -uprN binutils-2.11.92.0.12.3/binutils/po/binutils.pot binutils-2.11.93.0.2/binutils/po/binutils.pot --- binutils-2.11.92.0.12.3/binutils/po/binutils.pot Tue Jun 19 11:57:57 2001 +++ binutils-2.11.93.0.2/binutils/po/binutils.pot Sun Feb 3 11:22:31 2002 @@ -6,15 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2001-06-13 12:52+0100\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" +"Content-Transfer-Encoding: 8bit\n" -#: addr2line.c:76 +#: addr2line.c:73 #, c-format msgid "" "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" @@ -22,175 +22,175 @@ msgid "" " [--basenames] [--functions] [addr addr ...]\n" msgstr "" -#: addr2line.c:83 ar.c:288 nlmconv.c:1119 objcopy.c:399 objcopy.c:431 -#: readelf.c:2017 size.c:91 strings.c:533 windres.c:737 +#: addr2line.c:80 ar.c:289 nlmconv.c:1121 objcopy.c:423 objcopy.c:455 +#: readelf.c:2181 size.c:91 strings.c:655 windres.c:737 #, c-format msgid "Report bugs to %s\n" msgstr "" -#: addr2line.c:243 +#: addr2line.c:240 #, c-format msgid "%s: can not get addresses from archive" msgstr "" -#: addr2line.c:310 nm.c:437 objdump.c:2861 +#: addr2line.c:312 nm.c:447 objdump.c:2800 #, c-format msgid "unknown demangling style `%s'" msgstr "" -#: ar.c:236 +#: ar.c:237 #, c-format msgid "no entry %s in archive\n" msgstr "" -#: ar.c:253 +#: ar.c:254 #, c-format msgid "" "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] " "archive-file file...\n" msgstr "" -#: ar.c:256 +#: ar.c:257 #, c-format msgid " %s -M [ \n" msgstr "" @@ -731,225 +735,223 @@ msgstr "" msgid " -F --linker-flags Pass to the linker.\n" msgstr "" -#: dlltool.c:3312 +#: dlltool.c:3315 #, c-format msgid "Unable to open base-file: %s" msgstr "" -#: dlltool.c:3341 +#: dlltool.c:3344 #, c-format msgid "Machine '%s' not supported" msgstr "" -#: dlltool.c:3444 dllwrap.c:241 +#: dlltool.c:3447 dllwrap.c:240 #, c-format msgid "Tried file: %s" msgstr "" -#: dlltool.c:3451 dllwrap.c:248 +#: dlltool.c:3454 dllwrap.c:247 #, c-format msgid "Using file: %s" msgstr "" -#: dllwrap.c:335 +#: dllwrap.c:334 #, c-format msgid "Keeping temporary base file %s" msgstr "" -#: dllwrap.c:337 +#: dllwrap.c:336 #, c-format msgid "Deleting temporary base file %s" msgstr "" -#: dllwrap.c:351 +#: dllwrap.c:350 #, c-format msgid "Keeping temporary exp file %s" msgstr "" -#: dllwrap.c:353 +#: dllwrap.c:352 #, c-format msgid "Deleting temporary exp file %s" msgstr "" -#: dllwrap.c:366 +#: dllwrap.c:365 #, c-format msgid "Keeping temporary def file %s" msgstr "" -#: dllwrap.c:368 +#: dllwrap.c:367 #, c-format msgid "Deleting temporary def file %s" msgstr "" -#: dllwrap.c:521 +#: dllwrap.c:520 msgid " Generic options:\n" msgstr "" -#: dllwrap.c:522 +#: dllwrap.c:521 msgid " --quiet, -q Work quietly\n" msgstr "" -#: dllwrap.c:523 +#: dllwrap.c:522 msgid " --verbose, -v Verbose\n" msgstr "" -#: dllwrap.c:524 +#: dllwrap.c:523 msgid " --version Print dllwrap version\n" msgstr "" -#: dllwrap.c:525 +#: dllwrap.c:524 msgid " --implib Synonym for --output-lib\n" msgstr "" -#: dllwrap.c:526 +#: dllwrap.c:525 #, c-format msgid " Options for %s:\n" msgstr "" -#: dllwrap.c:527 +#: dllwrap.c:526 msgid " --driver-name Defaults to \"gcc\"\n" msgstr "" -#: dllwrap.c:528 +#: dllwrap.c:527 msgid " --driver-flags Override default ld flags\n" msgstr "" -#: dllwrap.c:529 +#: dllwrap.c:528 msgid " --dlltool-name Defaults to \"dlltool\"\n" msgstr "" -#: dllwrap.c:530 +#: dllwrap.c:529 msgid " --entry Specify alternate DLL entry point\n" msgstr "" -#: dllwrap.c:531 +#: dllwrap.c:530 msgid " --image-base Specify image base address\n" msgstr "" -#: dllwrap.c:532 +#: dllwrap.c:531 msgid " --target i386-cygwin32 or i386-mingw32\n" msgstr "" -#: dllwrap.c:533 +#: dllwrap.c:532 msgid " --dry-run Show what needs to be run\n" msgstr "" -#: dllwrap.c:534 +#: dllwrap.c:533 msgid " --mno-cygwin Create Mingw DLL\n" msgstr "" -#: dllwrap.c:535 +#: dllwrap.c:534 msgid " Options passed to DLLTOOL:\n" msgstr "" -#: dllwrap.c:536 +#: dllwrap.c:535 msgid " --machine \n" msgstr "" -#: dllwrap.c:537 +#: dllwrap.c:536 msgid " --output-exp Generate export file.\n" msgstr "" -#: dllwrap.c:538 +#: dllwrap.c:537 msgid " --output-lib Generate input library.\n" msgstr "" -#: dllwrap.c:539 +#: dllwrap.c:538 msgid " --add-indirect Add dll indirects to export file.\n" msgstr "" -#: dllwrap.c:540 +#: dllwrap.c:539 msgid " --dllname Name of input dll to put into output lib.\n" msgstr "" -#: dllwrap.c:541 +#: dllwrap.c:540 msgid " --def Name input .def file\n" msgstr "" -#: dllwrap.c:542 +#: dllwrap.c:541 msgid " --output-def Name output .def file\n" msgstr "" -#: dllwrap.c:543 +#: dllwrap.c:542 msgid " --export-all-symbols Export all symbols to .def\n" msgstr "" -#: dllwrap.c:544 +#: dllwrap.c:543 msgid " --no-export-all-symbols Only export .drectve symbols\n" msgstr "" -#: dllwrap.c:545 +#: dllwrap.c:544 msgid " --exclude-symbols Exclude from .def\n" msgstr "" -#: dllwrap.c:546 +#: dllwrap.c:545 msgid " --no-default-excludes Zap default exclude symbols\n" msgstr "" -#: dllwrap.c:547 +#: dllwrap.c:546 msgid " --base-file Read linker generated base file\n" msgstr "" -#: dllwrap.c:548 +#: dllwrap.c:547 msgid " --no-idata4 Don't generate idata$4 section\n" msgstr "" -#: dllwrap.c:549 +#: dllwrap.c:548 msgid " --no-idata5 Don't generate idata$5 section\n" msgstr "" -#: dllwrap.c:550 +#: dllwrap.c:549 msgid " -U Add underscores to .lib\n" msgstr "" -#: dllwrap.c:551 +#: dllwrap.c:550 msgid " -k Kill @ from exported names\n" msgstr "" -#: dllwrap.c:552 +#: dllwrap.c:551 msgid " --add-stdcall-alias Add aliases without @\n" msgstr "" -#: dllwrap.c:553 +#: dllwrap.c:552 msgid " --as Use for assembler\n" msgstr "" -#: dllwrap.c:554 +#: dllwrap.c:553 msgid " --nodelete Keep temp files.\n" msgstr "" -#: dllwrap.c:555 +#: dllwrap.c:554 msgid " Rest are passed unmodified to the language driver\n" msgstr "" -#: dllwrap.c:816 +#: dllwrap.c:824 msgid "Must provide at least one of -o or --dllname options" msgstr "" -#: dllwrap.c:844 -msgid "no export definition file provided" -msgstr "" - -#: dllwrap.c:845 -msgid "creating one, but that may not be what you want" +#: dllwrap.c:852 +msgid "" +"no export definition file provided.\n" +"Creating one, but that may not be what you want" msgstr "" -#: dllwrap.c:1006 +#: dllwrap.c:1014 #, c-format msgid "DLLTOOL name : %s\n" msgstr "" -#: dllwrap.c:1007 +#: dllwrap.c:1015 #, c-format msgid "DLLTOOL options : %s\n" msgstr "" -#: dllwrap.c:1008 +#: dllwrap.c:1016 #, c-format msgid "DRIVER name : %s\n" msgstr "" -#: dllwrap.c:1009 +#: dllwrap.c:1017 #, c-format msgid "DRIVER options : %s\n" msgstr "" @@ -1189,119 +1191,119 @@ msgstr "" msgid "IEEE unsupported complex type size %u\n" msgstr "" -#: nlmconv.c:275 srconv.c:1967 +#: nlmconv.c:278 srconv.c:2020 msgid "input and output files must be different" msgstr "" -#: nlmconv.c:322 +#: nlmconv.c:325 msgid "input file named both on command line and with INPUT" msgstr "" -#: nlmconv.c:331 +#: nlmconv.c:334 msgid "no input file" msgstr "" -#: nlmconv.c:361 +#: nlmconv.c:364 msgid "no name for output file" msgstr "" -#: nlmconv.c:374 +#: nlmconv.c:377 msgid "warning: input and output formats are not compatible" msgstr "" -#: nlmconv.c:403 +#: nlmconv.c:406 msgid "make .bss section" msgstr "" -#: nlmconv.c:412 +#: nlmconv.c:415 msgid "make .nlmsections section" msgstr "" -#: nlmconv.c:414 +#: nlmconv.c:417 msgid "set .nlmsections flags" msgstr "" -#: nlmconv.c:442 +#: nlmconv.c:445 msgid "set .bss vma" msgstr "" -#: nlmconv.c:449 +#: nlmconv.c:452 msgid "set .data size" msgstr "" -#: nlmconv.c:629 +#: nlmconv.c:632 #, c-format msgid "warning: symbol %s imported but not in import list" msgstr "" -#: nlmconv.c:649 +#: nlmconv.c:652 msgid "set start address" msgstr "" -#: nlmconv.c:698 +#: nlmconv.c:701 #, c-format msgid "warning: START procedure %s not defined" msgstr "" -#: nlmconv.c:700 +#: nlmconv.c:703 #, c-format msgid "warning: EXIT procedure %s not defined" msgstr "" -#: nlmconv.c:702 +#: nlmconv.c:705 #, c-format msgid "warning: CHECK procedure %s not defined" msgstr "" -#: nlmconv.c:723 nlmconv.c:912 +#: nlmconv.c:726 nlmconv.c:915 msgid "custom section" msgstr "" -#: nlmconv.c:744 nlmconv.c:941 +#: nlmconv.c:747 nlmconv.c:944 msgid "help section" msgstr "" -#: nlmconv.c:766 nlmconv.c:959 +#: nlmconv.c:769 nlmconv.c:962 msgid "message section" msgstr "" -#: nlmconv.c:782 nlmconv.c:992 +#: nlmconv.c:785 nlmconv.c:995 msgid "module section" msgstr "" -#: nlmconv.c:802 nlmconv.c:1008 +#: nlmconv.c:805 nlmconv.c:1011 msgid "rpc section" msgstr "" #. There is no place to record this information. -#: nlmconv.c:838 +#: nlmconv.c:841 #, c-format msgid "%s: warning: shared libraries can not have uninitialized data" msgstr "" -#: nlmconv.c:859 nlmconv.c:1027 +#: nlmconv.c:862 nlmconv.c:1030 msgid "shared section" msgstr "" -#: nlmconv.c:867 +#: nlmconv.c:870 msgid "warning: No version number given" msgstr "" -#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022 +#: nlmconv.c:910 nlmconv.c:939 nlmconv.c:957 nlmconv.c:1006 nlmconv.c:1025 #, c-format msgid "%s: read: %s" msgstr "" -#: nlmconv.c:929 +#: nlmconv.c:932 msgid "warning: MAP and FULLMAP are not supported; try ld -M" msgstr "" -#: nlmconv.c:1099 +#: nlmconv.c:1101 #, c-format msgid "%s: Convert an object file into a NetWare Loadable Module\n" msgstr "" -#: nlmconv.c:1111 +#: nlmconv.c:1113 #, c-format msgid "" "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n" @@ -1311,73 +1313,73 @@ msgid "" " [in-file [out-file]]\n" msgstr "" -#: nlmconv.c:1151 +#: nlmconv.c:1153 #, c-format msgid "support not compiled in for %s" msgstr "" -#: nlmconv.c:1191 +#: nlmconv.c:1193 msgid "make section" msgstr "" -#: nlmconv.c:1205 +#: nlmconv.c:1207 msgid "set section size" msgstr "" -#: nlmconv.c:1211 +#: nlmconv.c:1213 msgid "set section alignment" msgstr "" -#: nlmconv.c:1215 +#: nlmconv.c:1217 msgid "set section flags" msgstr "" -#: nlmconv.c:1226 +#: nlmconv.c:1228 msgid "set .nlmsections size" msgstr "" -#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336 +#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 msgid "set .nlmsection contents" msgstr "" -#: nlmconv.c:1839 +#: nlmconv.c:1841 msgid "stub section sizes" msgstr "" -#: nlmconv.c:1888 +#: nlmconv.c:1890 msgid "writing stub" msgstr "" -#: nlmconv.c:1978 +#: nlmconv.c:1980 #, c-format msgid "unresolved PC relative reloc against %s" msgstr "" -#: nlmconv.c:2042 +#: nlmconv.c:2044 #, c-format msgid "overflow when adjusting relocation against %s" msgstr "" -#: nlmconv.c:2159 +#: nlmconv.c:2161 #, c-format msgid "%s: execution of %s failed: " msgstr "" -#: nlmconv.c:2174 +#: nlmconv.c:2176 #, c-format msgid "Execution of %s failed" msgstr "" -#: nm.c:295 +#: nm.c:300 #, c-format msgid "Usage: %s [OPTION]... [FILE]...\n" msgstr "" -#: nm.c:296 +#: nm.c:301 msgid "List symbols from FILEs (a.out by default).\n" msgstr "" -#: nm.c:297 +#: nm.c:302 msgid "" "\n" " -a, --debug-syms Display debugger-only symbols\n" @@ -1387,8 +1389,8 @@ msgid "" "names\n" " The STYLE, if specified, can be `auto' (the " "default),\n" -" `gnu', 'lucid', 'arm', 'hp', 'edg' or " -"'gnu-new-abi'\n" +" `gnu', 'lucid', 'arm', 'hp', 'edg' or 'gnu-new-" +"abi'\n" " --no-demangle Do not demangle low-level symbol names\n" " -D, --dynamic Display dynamic symbols instead of normal symbols\n" " --defined-only Display only defined symbols\n" @@ -1415,31 +1417,31 @@ msgid "" "\n" msgstr "" -#: nm.c:329 objdump.c:275 +#: nm.c:334 objdump.c:216 #, c-format msgid "Report bugs to %s.\n" msgstr "" -#: nm.c:362 +#: nm.c:367 #, c-format msgid "%s: invalid radix" msgstr "" -#: nm.c:387 +#: nm.c:392 #, c-format msgid "%s: invalid output format" msgstr "" -#: nm.c:494 +#: nm.c:504 msgid "Only -X 32_64 is supported" msgstr "" -#: nm.c:536 +#: nm.c:546 #, c-format msgid "data size %ld" msgstr "" -#: nm.c:1326 +#: nm.c:1340 #, c-format msgid "" "\n" @@ -1448,7 +1450,7 @@ msgid "" "\n" msgstr "" -#: nm.c:1328 +#: nm.c:1342 #, c-format msgid "" "\n" @@ -1457,14 +1459,14 @@ msgid "" "\n" msgstr "" -#: nm.c:1329 nm.c:1383 +#: nm.c:1343 nm.c:1397 msgid "" "Name Value Class Type Size Line " "Section\n" "\n" msgstr "" -#: nm.c:1380 +#: nm.c:1394 #, c-format msgid "" "\n" @@ -1473,7 +1475,7 @@ msgid "" "\n" msgstr "" -#: nm.c:1382 +#: nm.c:1396 #, c-format msgid "" "\n" @@ -1482,22 +1484,22 @@ msgid "" "\n" msgstr "" -#: nm.c:1550 +#: nm.c:1564 msgid "" "\n" "Archive index:\n" msgstr "" -#: objcopy.c:341 +#: objcopy.c:363 #, c-format -msgid "Usage: %s in-file [out-file]\n" +msgid "Usage: %s in-file [out-file]\n" msgstr "" -#: objcopy.c:342 objcopy.c:409 -msgid " The switches are:\n" +#: objcopy.c:364 objcopy.c:433 +msgid " The options are:\n" msgstr "" -#: objcopy.c:343 +#: objcopy.c:365 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format " @@ -1557,6 +1559,7 @@ msgid "" "\n" " --add-section = Add section found in to " "output\n" +" --rename-section =[,] Rename section to \n" " --change-leading-char Force output format's leading character " "style\n" " --remove-leading-char Remove leading character from global " @@ -1571,17 +1574,18 @@ msgid "" " --localize-symbols -L for all symbols listed in \n" " --keep-global-symbols -G for all symbols listed in \n" " --weaken-symbols -W for all symbols listed in \n" +" --alt-machine-code Use alternate machine code for output\n" " -v --verbose List all object files modified\n" " -V --version Display this program's version number\n" " -h --help Display this output\n" msgstr "" -#: objcopy.c:408 +#: objcopy.c:432 #, c-format -msgid "Usage: %s in-file(s)\n" +msgid "Usage: %s in-file(s)\n" msgstr "" -#: objcopy.c:410 +#: objcopy.c:434 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format " @@ -1606,202 +1610,216 @@ msgid "" " -o Place stripped output into \n" msgstr "" -#: objcopy.c:480 +#: objcopy.c:504 #, c-format msgid "unrecognized section flag `%s'" msgstr "" -#: objcopy.c:481 +#: objcopy.c:505 #, c-format msgid "supported flags: %s" msgstr "" -#: objcopy.c:558 objcopy.c:2098 +#: objcopy.c:582 objcopy.c:2206 #, c-format msgid "cannot stat: %s: %s" msgstr "" -#: objcopy.c:565 objcopy.c:2116 +#: objcopy.c:589 objcopy.c:2224 #, c-format msgid "cannot open: %s: %s" msgstr "" -#: objcopy.c:568 objcopy.c:2120 +#: objcopy.c:592 objcopy.c:2228 #, c-format msgid "%s: fread failed" msgstr "" -#: objcopy.c:641 +#: objcopy.c:665 #, c-format msgid "Ignoring rubbish found on line %d of %s" msgstr "" -#: objcopy.c:862 +#: objcopy.c:886 #, c-format msgid "%s: Multiple redefinition of symbol \"%s\"" msgstr "" -#: objcopy.c:869 +#: objcopy.c:891 #, c-format msgid "%s: Symbol \"%s\" is target of more than one redefinition" msgstr "" -#: objcopy.c:922 +#: objcopy.c:943 msgid "Unable to change endianness of input file(s)" msgstr "" -#: objcopy.c:930 +#: objcopy.c:951 #, c-format msgid "copy from %s(%s) to %s(%s)\n" msgstr "" -#: objcopy.c:949 +#: objcopy.c:975 #, c-format msgid "Warning: Output file cannot represent architecture %s" msgstr "" -#: objcopy.c:976 +#: objcopy.c:1002 #, c-format msgid "can't create section `%s': %s" msgstr "" -#: objcopy.c:1062 +#: objcopy.c:1088 #, c-format msgid "Can't fill gap after %s: %s" msgstr "" -#: objcopy.c:1087 +#: objcopy.c:1113 #, c-format msgid "Can't add padding to %s: %s" msgstr "" -#: objcopy.c:1226 +#: objcopy.c:1252 #, c-format msgid "%s: error copying private BFD data: %s" msgstr "" -#: objcopy.c:1260 +#: objcopy.c:1265 +msgid "unknown alternate machine code, ignored" +msgstr "" + +#: objcopy.c:1295 #, c-format msgid "cannot mkdir %s for archive copying (error: %s)" msgstr "" -#: objcopy.c:1449 +#: objcopy.c:1466 +#, c-format +msgid "Multiple renames of section %s" +msgstr "" + +#: objcopy.c:1550 msgid "making" msgstr "" -#: objcopy.c:1458 +#: objcopy.c:1559 msgid "size" msgstr "" -#: objcopy.c:1472 +#: objcopy.c:1573 msgid "vma" msgstr "" -#: objcopy.c:1498 +#: objcopy.c:1599 msgid "alignment" msgstr "" -#: objcopy.c:1507 +#: objcopy.c:1607 msgid "flags" msgstr "" -#: objcopy.c:1521 +#: objcopy.c:1624 msgid "private data" msgstr "" -#: objcopy.c:1529 +#: objcopy.c:1632 #, c-format msgid "%s: section `%s': error in %s: %s" msgstr "" -#: objcopy.c:1803 +#: objcopy.c:1910 #, c-format msgid "%s: can't create debugging section: %s" msgstr "" -#: objcopy.c:1818 +#: objcopy.c:1925 #, c-format msgid "%s: can't set debugging section contents: %s" msgstr "" -#: objcopy.c:1827 +#: objcopy.c:1934 #, c-format msgid "%s: don't know how to write debugging information for %s" msgstr "" -#: objcopy.c:1933 +#: objcopy.c:2041 #, c-format msgid "%s: cannot stat: %s" msgstr "" -#: objcopy.c:1984 +#: objcopy.c:2092 msgid "byte number must be non-negative" msgstr "" -#: objcopy.c:1994 +#: objcopy.c:2102 msgid "interleave must be positive" msgstr "" -#: objcopy.c:2014 objcopy.c:2022 +#: objcopy.c:2122 objcopy.c:2130 #, c-format msgid "%s both copied and removed" msgstr "" -#: objcopy.c:2095 objcopy.c:2165 objcopy.c:2266 objcopy.c:2294 +#: objcopy.c:2203 objcopy.c:2273 objcopy.c:2373 objcopy.c:2400 objcopy.c:2424 +#: objcopy.c:2428 objcopy.c:2448 #, c-format msgid "bad format for %s" msgstr "" -#: objcopy.c:2234 +#: objcopy.c:2342 #, c-format msgid "Warning: truncating gap-fill from 0x%s to 0x%x" msgstr "" -#: objcopy.c:2356 +#: objcopy.c:2494 +msgid "alternate machine code index must be positive" +msgstr "" + +#: objcopy.c:2512 msgid "byte number must be less than interleave" msgstr "" -#: objcopy.c:2383 +#: objcopy.c:2539 #, c-format msgid "architecture %s unknown" msgstr "" -#: objcopy.c:2387 +#: objcopy.c:2543 msgid "" "Warning: input target 'binary' required for binary architecture parameter." msgstr "" -#: objcopy.c:2388 +#: objcopy.c:2544 #, c-format msgid " Argument %s ignored" msgstr "" -#: objcopy.c:2394 +#: objcopy.c:2550 #, c-format msgid "Cannot stat: %s: %s" msgstr "" -#: objcopy.c:2433 objcopy.c:2447 +#: objcopy.c:2590 objcopy.c:2604 #, c-format msgid "%s %s%c0x%s never used" msgstr "" -#: objdump.c:224 +#: objdump.c:164 #, c-format msgid "Usage: %s OPTION... FILE...\n" msgstr "" -#: objdump.c:225 +#: objdump.c:165 msgid "Display information from object FILE.\n" msgstr "" -#: objdump.c:226 +#: objdump.c:166 msgid "" "\n" " At least one of the following switches must be given:\n" msgstr "" -#: objdump.c:227 +#: objdump.c:167 msgid "" " -a, --archive-headers Display archive header information\n" " -f, --file-headers Display the contents of the overall file header\n" @@ -1827,13 +1845,13 @@ msgid "" " -H, --help Display this information\n" msgstr "" -#: objdump.c:249 +#: objdump.c:189 msgid "" "\n" " The following switches are optional:\n" msgstr "" -#: objdump.c:250 +#: objdump.c:190 msgid "" " -b, --target=BFDNAME Specify the target object format as " "BFDNAME\n" @@ -1844,15 +1862,15 @@ msgid "" "disassembling\n" " -EL --endian=little Assume little endian format when " "disassembling\n" -" --file-start-context Include context from start of file (with " -"-S)\n" +" --file-start-context Include context from start of file (with -" +"S)\n" " -l, --line-numbers Include line numbers and filenames in " "output\n" " -C, --demangle[=STYLE] Decode mangled/processed symbol names\n" " The STYLE, if specified, can be `auto', " "'gnu',\n" -" 'lucid', 'arm', 'hp', 'edg', or " -"'gnu-new-abi'\n" +" 'lucid', 'arm', 'hp', 'edg', or 'gnu-new-" +"abi'\n" " -w, --wide Format output for more than 80 columns\n" " -z, --disassemble-zeroes Do not skip blocks of zeroes when " "disassembling\n" @@ -1866,130 +1884,130 @@ msgid "" "\n" msgstr "" -#: objdump.c:420 +#: objdump.c:359 msgid "Sections:\n" msgstr "" -#: objdump.c:423 +#: objdump.c:362 msgid "Idx Name Size VMA LMA File off Algn" msgstr "" -#: objdump.c:425 +#: objdump.c:364 msgid "" "Idx Name Size VMA LMA File off " "Algn" msgstr "" -#: objdump.c:429 +#: objdump.c:368 msgid " Flags" msgstr "" -#: objdump.c:479 +#: objdump.c:418 #, c-format msgid "%s: not a dynamic object" msgstr "" -#: objdump.c:495 +#: objdump.c:434 #, c-format msgid "%s: No dynamic symbols" msgstr "" -#: objdump.c:1198 +#: objdump.c:1124 msgid "Out of virtual memory" msgstr "" -#: objdump.c:1620 +#: objdump.c:1553 #, c-format msgid "Can't use supplied machine %s" msgstr "" -#: objdump.c:1638 +#: objdump.c:1571 #, c-format msgid "Can't disassemble for architecture %s\n" msgstr "" -#: objdump.c:1720 +#: objdump.c:1653 #, c-format msgid "Disassembly of section %s:\n" msgstr "" -#: objdump.c:1894 +#: objdump.c:1828 #, c-format msgid "" "No %s section present\n" "\n" msgstr "" -#: objdump.c:1901 +#: objdump.c:1835 #, c-format msgid "%s has no %s section" msgstr "" -#: objdump.c:1915 +#: objdump.c:1849 #, c-format msgid "Reading %s section of %s failed: %s" msgstr "" -#: objdump.c:1927 +#: objdump.c:1861 #, c-format msgid "Reading %s section of %s failed: %s\n" msgstr "" -#: objdump.c:1970 +#: objdump.c:1904 #, c-format msgid "" "Contents of %s section:\n" "\n" msgstr "" -#: objdump.c:2070 +#: objdump.c:2004 #, c-format msgid "architecture: %s, " msgstr "" -#: objdump.c:2073 +#: objdump.c:2007 #, c-format msgid "flags 0x%08x:\n" msgstr "" -#: objdump.c:2086 +#: objdump.c:2020 msgid "" "\n" "start address 0x" msgstr "" -#: objdump.c:2118 +#: objdump.c:2052 #, c-format msgid "" "\n" "%s: file format %s\n" msgstr "" -#: objdump.c:2160 +#: objdump.c:2094 #, c-format msgid "%s: printing debugging information failed" msgstr "" -#: objdump.c:2237 +#: objdump.c:2171 #, c-format msgid "In archive %s:\n" msgstr "" -#: objdump.c:2289 +#: objdump.c:2223 #, c-format msgid "Contents of section %s:\n" msgstr "" -#: objdump.c:2802 +#: objdump.c:2736 #, c-format msgid "BFD header file version %s\n" msgstr "" -#: objdump.c:2886 +#: objdump.c:2825 msgid "unrecognized -E option" msgstr "" -#: objdump.c:2897 +#: objdump.c:2836 #, c-format msgid "unrecognized --endian type `%s'" msgstr "" @@ -2028,991 +2046,1065 @@ msgstr "" msgid "Last stabs entries before error:\n" msgstr "" -#: readelf.c:316 readelf.c:342 +#: readelf.c:318 #, c-format msgid "%s: Error: " msgstr "" -#: readelf.c:328 readelf.c:357 +#: readelf.c:329 #, c-format msgid "%s: Warning: " msgstr "" -#: readelf.c:410 readelf.c:549 +#: readelf.c:351 +#, c-format +msgid "Unable to seek to %x for %s\n" +msgstr "" + +#: readelf.c:362 +#, c-format +msgid "Out of memory allocating %d bytes for %s\n" +msgstr "" + +#: readelf.c:370 +#, c-format +msgid "Unable to read in %d bytes of %s\n" +msgstr "" + +#: readelf.c:423 readelf.c:581 #, c-format msgid "Unhandled data length: %d\n" msgstr "" -#: readelf.c:615 +#: readelf.c:660 msgid "Don't know about relocations on this machine architecture\n" msgstr "" -#: readelf.c:646 readelf.c:673 readelf.c:716 readelf.c:741 +#: readelf.c:682 readelf.c:711 readelf.c:757 readelf.c:784 +msgid "relocs" +msgstr "" + +#: readelf.c:693 readelf.c:722 readelf.c:767 readelf.c:794 msgid "out of memory parsing relocs" msgstr "" -#: readelf.c:790 +#: readelf.c:845 msgid "" -" Offset Info Type Symbol's Value Symbol's Name " +" Offset Info Type Symbol's Value Symbol's Name " "Addend\n" msgstr "" -#: readelf.c:793 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" +#: readelf.c:848 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr "" + +#: readelf.c:854 +msgid "" +" Offset Info Type Symbol's Value " +"Symbol's Name Addend\n" +msgstr "" + +#: readelf.c:857 +msgid "" +" Offset Info Type Symbol's Value " +"Symbol's Name\n" msgstr "" -#: readelf.c:958 readelf.c:960 +#: readelf.c:1061 readelf.c:1063 #, c-format msgid "unrecognised: %-7lx" msgstr "" -#: readelf.c:985 +#: readelf.c:1085 #, c-format msgid "" msgstr "" -#: readelf.c:1201 +#: readelf.c:1315 #, c-format msgid "Processor Specific: %lx" msgstr "" -#: readelf.c:1220 +#: readelf.c:1334 #, c-format msgid "Operating System specific: %lx" msgstr "" -#: readelf.c:1223 readelf.c:1799 +#: readelf.c:1337 readelf.c:1961 #, c-format msgid ": %lx" msgstr "" -#: readelf.c:1237 +#: readelf.c:1351 msgid "NONE (None)" msgstr "" -#: readelf.c:1238 +#: readelf.c:1352 msgid "REL (Relocatable file)" msgstr "" -#: readelf.c:1239 +#: readelf.c:1353 msgid "EXEC (Executable file)" msgstr "" -#: readelf.c:1240 +#: readelf.c:1354 msgid "DYN (Shared object file)" msgstr "" -#: readelf.c:1241 +#: readelf.c:1355 msgid "CORE (Core file)" msgstr "" -#: readelf.c:1245 +#: readelf.c:1359 #, c-format msgid "Processor Specific: (%x)" msgstr "" -#: readelf.c:1247 +#: readelf.c:1361 #, c-format msgid "OS Specific: (%x)" msgstr "" -#: readelf.c:1249 readelf.c:1337 readelf.c:1950 +#: readelf.c:1363 readelf.c:1460 readelf.c:2112 #, c-format msgid ": %x" msgstr "" -#: readelf.c:1262 +#: readelf.c:1376 msgid "None" msgstr "" -#: readelf.c:1989 +#: readelf.c:2152 msgid "Usage: readelf {options} elf-file(s)\n" msgstr "" -#: readelf.c:1990 +#: readelf.c:2153 msgid " Options are:\n" msgstr "" -#: readelf.c:1991 +#: readelf.c:2154 msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" msgstr "" -#: readelf.c:1992 +#: readelf.c:2155 msgid " -h or --file-header Display the ELF file header\n" msgstr "" -#: readelf.c:1993 +#: readelf.c:2156 msgid " -l or --program-headers or --segments\n" msgstr "" -#: readelf.c:1994 +#: readelf.c:2157 msgid " Display the program headers\n" msgstr "" -#: readelf.c:1995 +#: readelf.c:2158 msgid " -S or --section-headers or --sections\n" msgstr "" -#: readelf.c:1996 +#: readelf.c:2159 msgid " Display the sections' header\n" msgstr "" -#: readelf.c:1997 +#: readelf.c:2160 msgid " -e or --headers Equivalent to: -h -l -S\n" msgstr "" -#: readelf.c:1998 +#: readelf.c:2161 msgid " -s or --syms or --symbols Display the symbol table\n" msgstr "" -#: readelf.c:1999 +#: readelf.c:2162 msgid " -n or --notes Display the core notes (if present)\n" msgstr "" -#: readelf.c:2000 +#: readelf.c:2163 msgid " -r or --relocs Display the relocations (if present)\n" msgstr "" -#: readelf.c:2001 +#: readelf.c:2164 msgid " -u or --unwind Display the unwind info (if present)\n" msgstr "" -#: readelf.c:2002 +#: readelf.c:2165 msgid " -d or --dynamic Display the dynamic segment (if present)\n" msgstr "" -#: readelf.c:2003 +#: readelf.c:2166 msgid " -V or --version-info Display the version sections (if present)\n" msgstr "" -#: readelf.c:2004 +#: readelf.c:2167 msgid "" " -A or --arch-specific Display architecture specific information (if " "any).\n" msgstr "" -#: readelf.c:2005 +#: readelf.c:2168 msgid "" " -D or --use-dynamic Use the dynamic section info when displaying " "symbols\n" msgstr "" -#: readelf.c:2006 +#: readelf.c:2169 msgid " -x or --hex-dump=\n" msgstr "" -#: readelf.c:2007 +#: readelf.c:2170 msgid " Dump the contents of section \n" msgstr "" -#: readelf.c:2008 +#: readelf.c:2171 msgid "" -" -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" +" -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro," +"=frames,=str]\n" msgstr "" -#: readelf.c:2009 +#: readelf.c:2172 msgid "" " Display the contents of DWARF2 debug sections\n" msgstr "" -#: readelf.c:2011 +#: readelf.c:2174 msgid " -i or --instruction-dump=\n" msgstr "" -#: readelf.c:2012 +#: readelf.c:2175 msgid "" " Disassemble the contents of section \n" msgstr "" -#: readelf.c:2014 +#: readelf.c:2177 msgid " -I or --histogram Display histogram of bucket list lengths\n" msgstr "" -#: readelf.c:2015 +#: readelf.c:2178 msgid " -v or --version Display the version number of readelf\n" msgstr "" -#: readelf.c:2016 +#: readelf.c:2179 +msgid "" +" -W or --wide Don't split lines or truncate symbols to fit " +"into 80 columns\n" +msgstr "" + +#: readelf.c:2180 msgid " -H or --help Display this information\n" msgstr "" -#: readelf.c:2034 +#: readelf.c:2198 msgid "Out of memory allocating dump request table." msgstr "" -#: readelf.c:2179 +#: readelf.c:2357 #, c-format msgid "Unrecognised debug option '%s'\n" msgstr "" -#: readelf.c:2204 +#: readelf.c:2385 #, c-format msgid "Invalid option '-%c'\n" msgstr "" -#: readelf.c:2217 +#: readelf.c:2398 msgid "Nothing to do.\n" msgstr "" -#: readelf.c:2230 readelf.c:2247 readelf.c:4310 +#: readelf.c:2411 readelf.c:2428 readelf.c:4700 msgid "none" msgstr "" -#: readelf.c:2231 -msgid "ELF32" -msgstr "" - -#: readelf.c:2232 -msgid "ELF64" -msgstr "" - -#: readelf.c:2234 readelf.c:2251 readelf.c:2279 +#: readelf.c:2415 readelf.c:2432 readelf.c:2460 #, c-format msgid "" msgstr "" -#: readelf.c:2248 +#: readelf.c:2429 msgid "2's complement, little endian" msgstr "" -#: readelf.c:2249 +#: readelf.c:2430 msgid "2's complement, big endian" msgstr "" -#: readelf.c:2264 -msgid "UNIX - System V" -msgstr "" - -#: readelf.c:2265 -msgid "UNIX - HP-UX" -msgstr "" - -#: readelf.c:2266 -msgid "UNIX - NetBSD" -msgstr "" - -#: readelf.c:2267 -msgid "UNIX - Linux" -msgstr "" - -#: readelf.c:2268 -msgid "GNU/Hurd" -msgstr "" - -#: readelf.c:2269 -msgid "UNIX - Solaris" -msgstr "" - -#: readelf.c:2270 -msgid "UNIX - AIX" -msgstr "" - -#: readelf.c:2271 -msgid "UNIX - IRIX" -msgstr "" - -#: readelf.c:2272 -msgid "UNIX - FreeBSD" -msgstr "" - -#: readelf.c:2273 -msgid "UNIX - TRU64" -msgstr "" - -#: readelf.c:2274 -msgid "Novell - Modesto" -msgstr "" - -#: readelf.c:2275 -msgid "UNIX - OpenBSD" -msgstr "" - -#: readelf.c:2276 +#: readelf.c:2457 msgid "Standalone App" msgstr "" -#: readelf.c:2277 -msgid "ARM" -msgstr "" - -#: readelf.c:2294 +#: readelf.c:2475 msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "" -#: readelf.c:2302 +#: readelf.c:2483 msgid "ELF Header:\n" msgstr "" -#: readelf.c:2303 +#: readelf.c:2484 msgid " Magic: " msgstr "" -#: readelf.c:2307 +#: readelf.c:2488 #, c-format msgid " Class: %s\n" msgstr "" -#: readelf.c:2309 +#: readelf.c:2490 #, c-format msgid " Data: %s\n" msgstr "" -#: readelf.c:2311 +#: readelf.c:2492 #, c-format msgid " Version: %d %s\n" msgstr "" -#: readelf.c:2318 +#: readelf.c:2499 #, c-format msgid " OS/ABI: %s\n" msgstr "" -#: readelf.c:2320 +#: readelf.c:2501 #, c-format msgid " ABI Version: %d\n" msgstr "" -#: readelf.c:2322 +#: readelf.c:2503 #, c-format msgid " Type: %s\n" msgstr "" -#: readelf.c:2324 +#: readelf.c:2505 #, c-format msgid " Machine: %s\n" msgstr "" -#: readelf.c:2326 +#: readelf.c:2507 #, c-format msgid " Version: 0x%lx\n" msgstr "" -#: readelf.c:2329 +#: readelf.c:2510 msgid " Entry point address: " msgstr "" -#: readelf.c:2331 +#: readelf.c:2512 msgid "" "\n" " Start of program headers: " msgstr "" -#: readelf.c:2333 +#: readelf.c:2514 msgid "" " (bytes into file)\n" " Start of section headers: " msgstr "" -#: readelf.c:2335 +#: readelf.c:2516 msgid " (bytes into file)\n" msgstr "" -#: readelf.c:2337 +#: readelf.c:2518 #, c-format msgid " Flags: 0x%lx%s\n" msgstr "" -#: readelf.c:2340 +#: readelf.c:2521 #, c-format msgid " Size of this header: %ld (bytes)\n" msgstr "" -#: readelf.c:2342 +#: readelf.c:2523 #, c-format msgid " Size of program headers: %ld (bytes)\n" msgstr "" -#: readelf.c:2344 +#: readelf.c:2525 #, c-format msgid " Number of program headers: %ld\n" msgstr "" -#: readelf.c:2346 +#: readelf.c:2527 #, c-format msgid " Size of section headers: %ld (bytes)\n" msgstr "" -#: readelf.c:2348 +#: readelf.c:2529 #, c-format -msgid " Number of section headers: %ld\n" +msgid " Number of section headers: %ld" msgstr "" -#: readelf.c:2350 +#: readelf.c:2534 #, c-format -msgid " Section header string table index: %ld\n" +msgid " Section header string table index: %ld" msgstr "" -#: readelf.c:2435 +#: readelf.c:2568 readelf.c:2604 +msgid "program headers" +msgstr "" + +#: readelf.c:2638 msgid "" "\n" "There are no program headers in this file.\n" msgstr "" -#: readelf.c:2441 +#: readelf.c:2644 #, c-format msgid "" "\n" "Elf file type is %s\n" msgstr "" -#: readelf.c:2442 +#: readelf.c:2645 msgid "Entry point " msgstr "" -#: readelf.c:2444 +#: readelf.c:2647 #, c-format msgid "" "\n" "There are %d program headers, starting at offset " msgstr "" -#: readelf.c:2455 readelf.c:2631 readelf.c:2673 readelf.c:2716 readelf.c:2757 -#: readelf.c:3703 readelf.c:3744 readelf.c:3920 readelf.c:4841 readelf.c:4855 -#: readelf.c:8294 readelf.c:8334 +#: readelf.c:2658 readelf.c:2883 readelf.c:2929 readelf.c:2992 readelf.c:3059 +#: readelf.c:4087 readelf.c:4130 readelf.c:4310 readelf.c:5246 readelf.c:5260 +#: readelf.c:9246 readelf.c:9286 msgid "Out of memory\n" msgstr "" -#: readelf.c:2473 +#: readelf.c:2676 #, c-format msgid "" "\n" "Program Header%s:\n" msgstr "" -#: readelf.c:2477 +#: readelf.c:2680 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" msgstr "" -#: readelf.c:2481 +#: readelf.c:2683 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align\n" +msgstr "" + +#: readelf.c:2687 msgid " Type Offset VirtAddr PhysAddr\n" msgstr "" -#: readelf.c:2483 +#: readelf.c:2689 msgid " FileSiz MemSiz Flags Align\n" msgstr "" -#: readelf.c:2541 +#: readelf.c:2789 msgid "more than one dynamic segment\n" msgstr "" -#: readelf.c:2549 +#: readelf.c:2797 msgid "Unable to find program interpreter name\n" msgstr "" -#: readelf.c:2556 +#: readelf.c:2804 #, c-format msgid "" "\n" " [Requesting program interpreter: %s]" msgstr "" -#: readelf.c:2574 +#: readelf.c:2822 msgid "" "\n" " Section to Segment mapping:\n" msgstr "" -#: readelf.c:2575 +#: readelf.c:2823 msgid " Segment Sections...\n" msgstr "" -#: readelf.c:2839 +#: readelf.c:2874 readelf.c:2920 +msgid "section headers" +msgstr "" + +#: readelf.c:2968 readelf.c:3035 +msgid "symbols" +msgstr "" + +#: readelf.c:2979 readelf.c:3046 +msgid "symtab shndx" +msgstr "" + +#: readelf.c:3147 msgid "" "\n" "There are no sections in this file.\n" msgstr "" -#: readelf.c:2845 +#: readelf.c:3153 #, c-format msgid "There are %d section headers, starting at offset 0x%lx:\n" msgstr "" -#: readelf.c:2883 +#: readelf.c:3170 readelf.c:3479 readelf.c:3826 readelf.c:5397 +msgid "string table" +msgstr "" + +#: readelf.c:3191 msgid "File contains multiple dynamic symbol tables\n" msgstr "" -#: readelf.c:2896 +#: readelf.c:3203 msgid "File contains multiple dynamic string tables\n" msgstr "" -#: readelf.c:2931 +#: readelf.c:3209 +msgid "dynamic strings" +msgstr "" + +#: readelf.c:3215 +msgid "File contains multiple symtab shndx tables\n" +msgstr "" + +#: readelf.c:3250 #, c-format msgid "" "\n" "Section Header%s:\n" msgstr "" -#: readelf.c:2935 +#: readelf.c:3254 msgid "" " [Nr] Name Type Addr Off Size ES Flg Lk " "Inf Al\n" msgstr "" -#: readelf.c:2938 -msgid " [Nr] Name Type Address Offset\n" -msgstr "" - -#: readelf.c:2939 -msgid " Size EntSize Flags Link Info Align\n" -msgstr "" - -#: readelf.c:2986 -msgid "Key to Flags:\n" +#: readelf.c:3257 +msgid "" +" [Nr] Name Type Address Off Size ES " +"Flg Lk Inf Al\n" msgstr "" -#: readelf.c:2987 -msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" +#: readelf.c:3260 +msgid " [Nr] Name Type Address Offset\n" msgstr "" -#: readelf.c:2988 -msgid " I (info), L (link order), G (group), x (unknown)\n" +#: readelf.c:3261 +msgid " Size EntSize Flags Link Info Align\n" msgstr "" -#: readelf.c:2989 +#: readelf.c:3356 msgid "" +"Key to Flags:\n" +" W (write), A (alloc), X (execute), M (merge), S (strings)\n" +" I (info), L (link order), G (group), x (unknown)\n" " O (extra OS processing required) o (OS specific), p (processor specific)\n" msgstr "" -#: readelf.c:3047 +#: readelf.c:3417 #, c-format msgid "" "\n" "Relocation section at offset 0x%lx contains %ld bytes:\n" msgstr "" -#: readelf.c:3054 +#: readelf.c:3424 msgid "" "\n" "There are no dynamic relocations in this file.\n" msgstr "" -#: readelf.c:3082 +#: readelf.c:3451 msgid "" "\n" "Relocation section " msgstr "" -#: readelf.c:3089 readelf.c:3523 +#: readelf.c:3458 readelf.c:3905 #, c-format msgid " at offset 0x%lx contains %lu entries:\n" msgstr "" -#: readelf.c:3117 +#: readelf.c:3496 msgid "" "\n" "There are no relocations in this file.\n" msgstr "" -#: readelf.c:3361 readelf.c:3373 +#: readelf.c:3692 +msgid "unwind table" +msgstr "" + +#: readelf.c:3743 readelf.c:3755 readelf.c:7608 readelf.c:7619 #, c-format -msgid "Skipping unexpected symbol type %u" +msgid "Skipping unexpected symbol type %u\n" msgstr "" -#: readelf.c:3381 +#: readelf.c:3763 #, c-format -msgid "Skipping unexpected relocation type %s" +msgid "Skipping unexpected relocation type %s\n" msgstr "" -#: readelf.c:3426 readelf.c:3451 +#: readelf.c:3808 readelf.c:3833 msgid "" "\n" "There are no unwind sections in this file.\n" msgstr "" -#: readelf.c:3502 +#: readelf.c:3884 msgid "" "\n" "Could not find unwind info section for " msgstr "" -#: readelf.c:3516 +#: readelf.c:3896 +msgid "unwind info" +msgstr "" + +#: readelf.c:3898 msgid "" "\n" "Unwind section " msgstr "" -#: readelf.c:3797 +#: readelf.c:4071 readelf.c:4114 +msgid "dynamic segment" +msgstr "" + +#: readelf.c:4183 msgid "" "\n" "There is no dynamic segment in this file.\n" msgstr "" -#: readelf.c:3831 +#: readelf.c:4217 msgid "Unable to seek to end of file!" msgstr "" -#: readelf.c:3840 +#: readelf.c:4228 msgid "Unable to determine the number of symbols to load\n" msgstr "" -#: readelf.c:3870 +#: readelf.c:4258 msgid "Unable to seek to end of file\n" msgstr "" -#: readelf.c:3876 +#: readelf.c:4264 msgid "Unable to determine the length of the dynamic string table\n" msgstr "" -#: readelf.c:3937 +#: readelf.c:4269 +msgid "dynamic string table" +msgstr "" + +#: readelf.c:4303 +msgid "symbol information" +msgstr "" + +#: readelf.c:4327 #, c-format msgid "" "\n" "Dynamic segment at offset 0x%x contains %ld entries:\n" msgstr "" -#: readelf.c:3940 +#: readelf.c:4330 msgid " Tag Type Name/Value\n" msgstr "" -#: readelf.c:3976 +#: readelf.c:4366 msgid "Auxiliary library" msgstr "" -#: readelf.c:3980 +#: readelf.c:4370 msgid "Filter library" msgstr "" -#: readelf.c:3984 +#: readelf.c:4374 msgid "Configuration file" msgstr "" -#: readelf.c:3988 +#: readelf.c:4378 msgid "Dependency audit library" msgstr "" -#: readelf.c:3992 +#: readelf.c:4382 msgid "Audit library" msgstr "" -#: readelf.c:4010 readelf.c:4036 readelf.c:4062 +#: readelf.c:4400 readelf.c:4426 readelf.c:4452 msgid "Flags:" msgstr "" -#: readelf.c:4012 readelf.c:4038 readelf.c:4064 +#: readelf.c:4402 readelf.c:4428 readelf.c:4454 msgid " None\n" msgstr "" -#: readelf.c:4183 +#: readelf.c:4573 #, c-format msgid "Shared library: [%s]" msgstr "" -#: readelf.c:4186 +#: readelf.c:4576 msgid " program interpreter" msgstr "" -#: readelf.c:4190 +#: readelf.c:4580 #, c-format msgid "Library soname: [%s]" msgstr "" -#: readelf.c:4194 +#: readelf.c:4584 #, c-format msgid "Library rpath: [%s]" msgstr "" -#: readelf.c:4198 +#: readelf.c:4588 #, c-format msgid "Library runpath: [%s]" msgstr "" -#: readelf.c:4259 +#: readelf.c:4649 #, c-format msgid "Not needed object: [%s]\n" msgstr "" -#: readelf.c:4356 +#: readelf.c:4746 #, c-format msgid "" "\n" "Version definition section '%s' contains %ld entries:\n" msgstr "" -#: readelf.c:4359 +#: readelf.c:4749 msgid " Addr: 0x" msgstr "" -#: readelf.c:4361 readelf.c:4549 +#: readelf.c:4751 readelf.c:4946 #, c-format msgid " Offset: %#08lx Link: %lx (%s)\n" msgstr "" -#: readelf.c:4391 +#: readelf.c:4758 +msgid "version definition section" +msgstr "" + +#: readelf.c:4784 #, c-format msgid " %#06x: Rev: %d Flags: %s" msgstr "" -#: readelf.c:4394 +#: readelf.c:4787 #, c-format msgid " Index: %d Cnt: %d " msgstr "" -#: readelf.c:4405 +#: readelf.c:4798 #, c-format msgid "Name: %s\n" msgstr "" -#: readelf.c:4407 +#: readelf.c:4800 #, c-format msgid "Name index: %ld\n" msgstr "" -#: readelf.c:4422 +#: readelf.c:4815 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr "" -#: readelf.c:4425 +#: readelf.c:4818 #, c-format msgid " %#06x: Parent %d, name index: %ld\n" msgstr "" -#: readelf.c:4444 +#: readelf.c:4837 #, c-format msgid "" "\n" "Version needs section '%s' contains %ld entries:\n" msgstr "" -#: readelf.c:4447 +#: readelf.c:4840 msgid " Addr: 0x" msgstr "" -#: readelf.c:4449 +#: readelf.c:4842 #, c-format msgid " Offset: %#08lx Link to section: %ld (%s)\n" msgstr "" -#: readelf.c:4475 +#: readelf.c:4848 +msgid "version need section" +msgstr "" + +#: readelf.c:4870 #, c-format msgid " %#06x: Version: %d" msgstr "" -#: readelf.c:4478 +#: readelf.c:4873 #, c-format msgid " File: %s" msgstr "" -#: readelf.c:4480 +#: readelf.c:4875 #, c-format msgid " File: %lx" msgstr "" -#: readelf.c:4482 +#: readelf.c:4877 #, c-format msgid " Cnt: %d\n" msgstr "" -#: readelf.c:4500 +#: readelf.c:4895 #, c-format msgid " %#06x: Name: %s" msgstr "" -#: readelf.c:4503 +#: readelf.c:4898 #, c-format msgid " %#06x: Name index: %lx" msgstr "" -#: readelf.c:4506 +#: readelf.c:4901 #, c-format msgid " Flags: %s Version: %d\n" msgstr "" -#: readelf.c:4544 +#: readelf.c:4937 +msgid "version string table" +msgstr "" + +#: readelf.c:4941 #, c-format msgid "" "\n" "Version symbols section '%s' contains %d entries:\n" msgstr "" -#: readelf.c:4547 +#: readelf.c:4944 msgid " Addr: " msgstr "" -#: readelf.c:4578 +#: readelf.c:4954 +msgid "version symbol data" +msgstr "" + +#: readelf.c:4981 msgid " 0 (*local*) " msgstr "" -#: readelf.c:4582 +#: readelf.c:4985 msgid " 1 (*global*) " msgstr "" -#: readelf.c:4716 +#: readelf.c:5020 readelf.c:5454 +msgid "version need" +msgstr "" + +#: readelf.c:5030 +msgid "version need aux (2)" +msgstr "" + +#: readelf.c:5071 readelf.c:5516 +msgid "version def" +msgstr "" + +#: readelf.c:5090 readelf.c:5531 +msgid "version def aux" +msgstr "" + +#: readelf.c:5121 msgid "" "\n" "No version information found in this file.\n" msgstr "" -#: readelf.c:4734 readelf.c:4769 +#: readelf.c:5139 readelf.c:5174 #, c-format msgid ": %d" msgstr "" -#: readelf.c:4736 readelf.c:4781 +#: readelf.c:5141 readelf.c:5186 #, c-format msgid ": %d" msgstr "" -#: readelf.c:4738 readelf.c:4784 +#: readelf.c:5143 readelf.c:5189 #, c-format msgid ": %d" msgstr "" -#: readelf.c:4847 +#: readelf.c:5252 msgid "Unable to read in dynamic data\n" msgstr "" -#: readelf.c:4889 +#: readelf.c:5294 msgid "Unable to seek to start of dynamic information" msgstr "" -#: readelf.c:4895 +#: readelf.c:5300 msgid "Failed to read in number of buckets\n" msgstr "" -#: readelf.c:4901 +#: readelf.c:5306 msgid "Failed to read in number of chains\n" msgstr "" -#: readelf.c:4921 +#: readelf.c:5326 msgid "" "\n" "Symbol table for image:\n" msgstr "" -#: readelf.c:4923 +#: readelf.c:5328 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: readelf.c:4925 +#: readelf.c:5330 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: readelf.c:4969 +#: readelf.c:5375 #, c-format msgid "" "\n" "Symbol table '%s' contains %lu entries:\n" msgstr "" -#: readelf.c:4973 +#: readelf.c:5379 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: readelf.c:4975 +#: readelf.c:5381 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: readelf.c:5085 +#: readelf.c:5427 +msgid "version data" +msgstr "" + +#: readelf.c:5467 +msgid "version need aux (3)" +msgstr "" + +#: readelf.c:5492 msgid "bad dynamic symbol" msgstr "" -#: readelf.c:5145 +#: readelf.c:5554 msgid "" "\n" "Dynamic symbol information is not available for displaying symbols.\n" msgstr "" -#: readelf.c:5157 +#: readelf.c:5566 #, c-format msgid "" "\n" "Histogram for bucket list length (total of %d buckets):\n" msgstr "" -#: readelf.c:5159 +#: readelf.c:5568 +#, c-format msgid " Length Number %% of total Coverage\n" msgstr "" -#: readelf.c:5164 readelf.c:5183 readelf.c:7976 readelf.c:8169 +#: readelf.c:5573 readelf.c:5592 readelf.c:8825 readelf.c:9017 msgid "Out of memory" msgstr "" -#: readelf.c:5232 +#: readelf.c:5641 #, c-format msgid "" "\n" "Dynamic info segment at offset 0x%lx contains %d entries:\n" msgstr "" -#: readelf.c:5235 +#: readelf.c:5644 msgid " Num: Name BoundTo Flags\n" msgstr "" -#: readelf.c:5283 +#: readelf.c:5696 #, c-format msgid "" "\n" "Assembly dump of section %s\n" msgstr "" -#: readelf.c:5306 +#: readelf.c:5719 #, c-format msgid "" "\n" "Section '%s' has no data to dump.\n" msgstr "" -#: readelf.c:5311 +#: readelf.c:5724 #, c-format msgid "" "\n" "Hex dump of section '%s':\n" msgstr "" -#: readelf.c:5463 -msgid "badly formed extended line op encountered!" +#: readelf.c:5729 +msgid "section data" +msgstr "" + +#: readelf.c:5878 +msgid "badly formed extended line op encountered!\n" msgstr "" -#: readelf.c:5470 +#: readelf.c:5885 #, c-format msgid " Extended opcode %d: " msgstr "" -#: readelf.c:5475 +#: readelf.c:5890 msgid "" "End of Sequence\n" "\n" msgstr "" -#: readelf.c:5481 +#: readelf.c:5896 #, c-format msgid "set Address to 0x%lx\n" msgstr "" -#: readelf.c:5486 +#: readelf.c:5901 msgid " define new File Table entry\n" msgstr "" -#: readelf.c:5487 readelf.c:5609 +#: readelf.c:5902 readelf.c:6031 msgid " Entry\tDir\tTime\tSize\tName\n" msgstr "" -#: readelf.c:5489 +#: readelf.c:5904 #, c-format msgid " %d\t" msgstr "" -#: readelf.c:5492 readelf.c:5494 readelf.c:5496 readelf.c:5621 readelf.c:5623 -#: readelf.c:5625 +#: readelf.c:5907 readelf.c:5909 readelf.c:5911 readelf.c:6043 readelf.c:6045 +#: readelf.c:6047 #, c-format msgid "%lu\t" msgstr "" -#: readelf.c:5497 +#: readelf.c:5912 #, c-format msgid "" "%s\n" "\n" msgstr "" -#: readelf.c:5501 +#: readelf.c:5916 #, c-format msgid "UNKNOWN: length %d\n" msgstr "" -#: readelf.c:5527 +#: readelf.c:5942 #, c-format msgid "" "\n" @@ -3020,503 +3112,629 @@ msgid "" "\n" msgstr "" -#: readelf.c:5539 +#: readelf.c:5954 +msgid "64-bit DWARF line info is not supported yet.\n" +msgstr "" + +#: readelf.c:5961 msgid "The line info appears to be corrupt - the section is too small\n" msgstr "" -#: readelf.c:5547 +#: readelf.c:5969 msgid "Only DWARF version 2 line info is currently supported.\n" msgstr "" -#: readelf.c:5562 +#: readelf.c:5984 #, c-format msgid " Length: %ld\n" msgstr "" -#: readelf.c:5563 +#: readelf.c:5985 #, c-format msgid " DWARF Version: %d\n" msgstr "" -#: readelf.c:5564 +#: readelf.c:5986 #, c-format msgid " Prologue Length: %d\n" msgstr "" -#: readelf.c:5565 +#: readelf.c:5987 #, c-format msgid " Minimum Instruction Length: %d\n" msgstr "" -#: readelf.c:5566 +#: readelf.c:5988 #, c-format msgid " Initial value of 'is_stmt': %d\n" msgstr "" -#: readelf.c:5567 +#: readelf.c:5989 #, c-format msgid " Line Base: %d\n" msgstr "" -#: readelf.c:5568 +#: readelf.c:5990 #, c-format msgid " Line Range: %d\n" msgstr "" -#: readelf.c:5569 +#: readelf.c:5991 #, c-format msgid " Opcode Base: %d\n" msgstr "" -#: readelf.c:5578 +#: readelf.c:6000 msgid "" "\n" " Opcodes:\n" msgstr "" -#: readelf.c:5581 +#: readelf.c:6003 #, c-format msgid " Opcode %d has %d args\n" msgstr "" -#: readelf.c:5587 +#: readelf.c:6009 msgid "" "\n" " The Directory Table is empty.\n" msgstr "" -#: readelf.c:5590 +#: readelf.c:6012 msgid "" "\n" " The Directory Table:\n" msgstr "" -#: readelf.c:5594 +#: readelf.c:6016 #, c-format msgid " %s\n" msgstr "" -#: readelf.c:5605 +#: readelf.c:6027 msgid "" "\n" " The File Name Table is empty.\n" msgstr "" -#: readelf.c:5608 +#: readelf.c:6030 msgid "" "\n" " The File Name Table:\n" msgstr "" -#: readelf.c:5616 +#: readelf.c:6038 #, c-format msgid " %d\t" msgstr "" -#: readelf.c:5627 +#: readelf.c:6049 #, c-format msgid "%s\n" msgstr "" #. Now display the statements. -#: readelf.c:5635 +#: readelf.c:6057 msgid "" "\n" " Line Number Statements:\n" msgstr "" -#: readelf.c:5654 +#: readelf.c:6073 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr "" + +#: readelf.c:6077 +#, c-format +msgid " and Line by %d to %d\n" +msgstr "" + +#: readelf.c:6088 msgid " Copy\n" msgstr "" -#: readelf.c:5661 +#: readelf.c:6095 #, c-format msgid " Advance PC by %d to %lx\n" msgstr "" -#: readelf.c:5669 +#: readelf.c:6103 #, c-format msgid " Advance Line by %d to %d\n" msgstr "" -#: readelf.c:5676 +#: readelf.c:6110 #, c-format msgid " Set File Name to entry %d in the File Name Table\n" msgstr "" -#: readelf.c:5684 +#: readelf.c:6118 #, c-format msgid " Set column to %d\n" msgstr "" -#: readelf.c:5691 +#: readelf.c:6125 #, c-format msgid " Set is_stmt to %d\n" msgstr "" -#: readelf.c:5696 +#: readelf.c:6130 msgid " Set basic block\n" msgstr "" -#: readelf.c:5704 +#: readelf.c:6138 #, c-format msgid " Advance PC by constant %d to 0x%lx\n" msgstr "" -#: readelf.c:5712 +#: readelf.c:6146 #, c-format msgid " Advance PC by fixed size amount %d to 0x%lx\n" msgstr "" -#: readelf.c:5720 +#: readelf.c:6151 +msgid " Set prologue_end to true\n" +msgstr "" + +#: readelf.c:6155 +msgid " Set epilogue_begin to true\n" +msgstr "" + +#: readelf.c:6161 #, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgid " Set ISA to %d\n" msgstr "" -#: readelf.c:5724 +#: readelf.c:6165 #, c-format -msgid " and Line by %d to %d\n" +msgid " Unknown opcode %d with operands: " msgstr "" -#: readelf.c:5747 readelf.c:6176 +#: readelf.c:6197 readelf.c:6658 readelf.c:6730 #, c-format msgid "" "Contents of the %s section:\n" "\n" msgstr "" -#: readelf.c:5770 +#: readelf.c:6216 +msgid "64-bit DWARF pubnames are not supported yet.\n" +msgstr "" + +#: readelf.c:6226 msgid "Only DWARF 2 pubnames are currently supported\n" msgstr "" -#: readelf.c:5777 +#: readelf.c:6233 #, c-format msgid " Length: %ld\n" msgstr "" -#: readelf.c:5779 +#: readelf.c:6235 #, c-format msgid " Version: %d\n" msgstr "" -#: readelf.c:5781 +#: readelf.c:6237 #, c-format msgid " Offset into .debug_info section: %ld\n" msgstr "" -#: readelf.c:5783 +#: readelf.c:6239 #, c-format msgid " Size of area in .debug_info section: %ld\n" msgstr "" -#: readelf.c:5786 +#: readelf.c:6242 msgid "" "\n" " Offset\tName\n" msgstr "" -#: readelf.c:5868 +#: readelf.c:6333 #, c-format msgid "Unknown TAG value: %lx" msgstr "" -#: readelf.c:5963 +#: readelf.c:6443 #, c-format msgid "Unknown AT value: %lx" msgstr "" -#: readelf.c:6000 +#: readelf.c:6480 #, c-format msgid "Unknown FORM value: %lx" msgstr "" -#: readelf.c:6182 +#: readelf.c:6679 +#, c-format +msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" +msgstr "" + +#: readelf.c:6684 +msgid " DW_MACINFO_end_file\n" +msgstr "" + +#: readelf.c:6692 +#, c-format +msgid " DW_MACINFO_define - lineno : %d macro : %s\n" +msgstr "" + +#: readelf.c:6700 +#, c-format +msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" +msgstr "" + +#: readelf.c:6711 +#, c-format +msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" +msgstr "" + +#: readelf.c:6739 msgid " Number TAG\n" msgstr "" -#: readelf.c:6188 +#: readelf.c:6745 #, c-format msgid " %ld %s [%s]\n" msgstr "" -#: readelf.c:6191 +#: readelf.c:6748 msgid "has children" msgstr "" -#: readelf.c:6191 +#: readelf.c:6748 msgid "no children" msgstr "" -#: readelf.c:6195 +#: readelf.c:6752 #, c-format msgid " %-18s %s\n" msgstr "" -#: readelf.c:6214 +#: readelf.c:6773 #, c-format msgid " %lu byte block: " msgstr "" -#: readelf.c:6521 +#: readelf.c:7096 msgid "(User defined location op)" msgstr "" -#: readelf.c:6523 +#: readelf.c:7098 msgid "(Unknown location op)" msgstr "" -#: readelf.c:6650 +#: readelf.c:7137 +msgid "debug_str section data" +msgstr "" + +#: readelf.c:7156 +msgid "" +msgstr "" + +#: readelf.c:7159 +msgid "" +msgstr "" + +#: readelf.c:7179 +msgid "" +"\n" +"The .debug_str section is empty.\n" +msgstr "" + +#: readelf.c:7183 +msgid "" +"Contents of the .debug_str section:\n" +"\n" +msgstr "" + +#: readelf.c:7354 #, c-format -msgid "Unable to handle FORM: %d" +msgid " (indirect string, offset: 0x%lx): " msgstr "" -#: readelf.c:6654 +#: readelf.c:7363 #, c-format -msgid "Unrecognised form: %d" +msgid "Unrecognised form: %d\n" msgstr "" -#: readelf.c:6667 +#: readelf.c:7376 msgid "(not inlined)" msgstr "" -#: readelf.c:6668 +#: readelf.c:7377 msgid "(inlined)" msgstr "" -#: readelf.c:6669 +#: readelf.c:7378 msgid "(declared as inline but ignored)" msgstr "" -#: readelf.c:6670 +#: readelf.c:7379 msgid "(declared as inline and inlined)" msgstr "" -#: readelf.c:6671 +#: readelf.c:7380 #, c-format msgid " (Unknown inline attribute value: %lx)" msgstr "" -#: readelf.c:6800 readelf.c:6926 +#: readelf.c:7545 readelf.c:7746 #, c-format msgid "" "The section %s contains:\n" "\n" msgstr "" -#: readelf.c:6822 +#: readelf.c:7568 +msgid "64-bit DWARF debug info is not supported yet.\n" +msgstr "" + +#: readelf.c:7637 #, c-format msgid " Compilation Unit @ %lx:\n" msgstr "" -#: readelf.c:6823 +#: readelf.c:7638 #, c-format msgid " Length: %ld\n" msgstr "" -#: readelf.c:6824 +#: readelf.c:7639 #, c-format msgid " Version: %d\n" msgstr "" -#: readelf.c:6825 +#: readelf.c:7640 #, c-format msgid " Abbrev Offset: %ld\n" msgstr "" -#: readelf.c:6826 +#: readelf.c:7641 #, c-format msgid " Pointer Size: %d\n" msgstr "" -#: readelf.c:6830 +#: readelf.c:7645 msgid "Only version 2 DWARF debug information is currently supported.\n" msgstr "" -#: readelf.c:6852 +#: readelf.c:7666 msgid "Unable to locate .debug_abbrev section!\n" msgstr "" -#: readelf.c:6892 +#: readelf.c:7672 +msgid "debug_abbrev section data" +msgstr "" + +#: readelf.c:7709 #, c-format msgid "Unable to locate entry %lu in the abbreviation table\n" msgstr "" -#: readelf.c:6897 +#: readelf.c:7714 #, c-format -msgid " <%d><%x>: Abbrev Number: %lu (%s)\n" +msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" msgstr "" -#: readelf.c:6947 +#: readelf.c:7767 +msgid "64-bit DWARF aranges are not supported yet.\n" +msgstr "" + +#: readelf.c:7773 msgid "Only DWARF 2 aranges are currently supported.\n" msgstr "" -#: readelf.c:6951 +#: readelf.c:7777 #, c-format msgid " Length: %ld\n" msgstr "" -#: readelf.c:6952 +#: readelf.c:7778 #, c-format msgid " Version: %d\n" msgstr "" -#: readelf.c:6953 +#: readelf.c:7779 #, c-format msgid " Offset into .debug_info: %lx\n" msgstr "" -#: readelf.c:6954 +#: readelf.c:7780 #, c-format msgid " Pointer Size: %d\n" msgstr "" -#: readelf.c:6955 +#: readelf.c:7781 #, c-format msgid " Segment Size: %d\n" msgstr "" -#: readelf.c:6957 +#: readelf.c:7783 msgid "" "\n" " Address Length\n" msgstr "" -#: readelf.c:7135 +#: readelf.c:7965 #, c-format msgid "The section %s contains:\n" msgstr "" -#: readelf.c:7663 +#: readelf.c:7988 +msgid "64-bit DWARF format frames are not supported yet.\n" +msgstr "" + +#: readelf.c:8499 #, c-format msgid "Displaying the debug contents of section %s is not yet supported.\n" msgstr "" -#: readelf.c:7726 +#: readelf.c:8565 #, c-format msgid "" "\n" "Section '%s' has no debugging data.\n" msgstr "" -#: readelf.c:7745 +#: readelf.c:8570 readelf.c:8632 +msgid "debug section data" +msgstr "" + +#: readelf.c:8586 #, c-format msgid "Unrecognised debug section: %s\n" msgstr "" -#: readelf.c:7817 +#: readelf.c:8660 msgid "Some sections were not dumped because they do not exist!\n" msgstr "" -#: readelf.c:8000 +#: readelf.c:8733 +msgid "liblist" +msgstr "" + +#: readelf.c:8818 +msgid "options" +msgstr "" + +#: readelf.c:8849 #, c-format msgid "" "\n" "Section '%s' contains %d entries:\n" msgstr "" -#: readelf.c:8162 +#: readelf.c:9010 msgid "conflict list with without table" msgstr "" -#: readelf.c:8190 +#: readelf.c:9028 readelf.c:9044 +msgid "conflict" +msgstr "" + +#: readelf.c:9054 #, c-format msgid "" "\n" -"Section '.conflict' contains %d entries:\n" +"Section '.conflict' contains %ld entries:\n" msgstr "" -#: readelf.c:8191 +#: readelf.c:9056 msgid " Num: Index Value Name" msgstr "" -#: readelf.c:8216 +#: readelf.c:9083 msgid "NT_PRSTATUS (prstatus structure)" msgstr "" -#: readelf.c:8217 +#: readelf.c:9084 msgid "NT_FPREGSET (floating point registers)" msgstr "" -#: readelf.c:8218 +#: readelf.c:9085 msgid "NT_PRPSINFO (prpsinfo structure)" msgstr "" -#: readelf.c:8219 +#: readelf.c:9086 msgid "NT_TASKSTRUCT (task structure)" msgstr "" -#: readelf.c:8220 +#: readelf.c:9087 msgid "NT_PRXFPREG (user_xfpregs structure)" msgstr "" -#: readelf.c:8221 +#: readelf.c:9088 msgid "NT_PSTATUS (pstatus structure)" msgstr "" -#: readelf.c:8222 +#: readelf.c:9089 msgid "NT_FPREGS (floating point registers)" msgstr "" -#: readelf.c:8223 +#: readelf.c:9090 msgid "NT_PSINFO (psinfo structure)" msgstr "" -#: readelf.c:8224 +#: readelf.c:9091 msgid "NT_LWPSTATUS (lwpstatus_t structure)" msgstr "" -#: readelf.c:8225 +#: readelf.c:9092 msgid "NT_LWPSINFO (lwpsinfo_t structure)" msgstr "" -#: readelf.c:8226 +#: readelf.c:9093 msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" msgstr "" -#: readelf.c:8228 +#: readelf.c:9095 readelf.c:9119 #, c-format msgid "Unknown note type: (0x%08x)" msgstr "" -#: readelf.c:8266 +#. NetBSD core "procinfo" structure. +#: readelf.c:9109 +msgid "NetBSD procinfo structure" +msgstr "" + +#: readelf.c:9136 readelf.c:9150 +msgid "PT_GETREGS (reg structure)" +msgstr "" + +#: readelf.c:9138 readelf.c:9152 +msgid "PT_GETFPREGS (fpreg structure)" +msgstr "" + +#: readelf.c:9158 +#, c-format +msgid "PT_FIRSTMACH+%d" +msgstr "" + +#: readelf.c:9212 +msgid "notes" +msgstr "" + +#: readelf.c:9218 #, c-format msgid "" "\n" "Notes at offset 0x%08lx with length 0x%08lx:\n" msgstr "" -#: readelf.c:8268 +#: readelf.c:9220 msgid " Owner\t\tData size\tDescription\n" msgstr "" -#: readelf.c:8379 +#: readelf.c:9331 msgid "No note segments present in the core file.\n" msgstr "" -#: readelf.c:8457 -msgid "This instance of readelf has been built without support for a\n" -msgstr "" - -#: readelf.c:8458 -msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" +#: readelf.c:9409 +msgid "" +"This instance of readelf has been built without support for a\n" +"64 bit data type and so it cannot read 64 bit ELF files.\n" msgstr "" -#: readelf.c:8493 +#: readelf.c:9452 #, c-format msgid "Cannot stat input file %s.\n" msgstr "" -#: readelf.c:8500 +#: readelf.c:9459 #, c-format msgid "Input file %s not found.\n" msgstr "" -#: readelf.c:8506 +#: readelf.c:9465 #, c-format msgid "%s: Failed to read file header\n" msgstr "" -#: readelf.c:8520 +#: readelf.c:9479 #, c-format msgid "" "\n" @@ -3921,27 +4139,27 @@ msgstr "" msgid "default is --format=sysv\n" msgstr "" -#: size.c:141 +#: size.c:146 #, c-format msgid "invalid argument to --format: %s" msgstr "" -#: size.c:168 +#: size.c:173 #, c-format msgid "Invalid radix: %s\n" msgstr "" -#: srconv.c:1881 +#: srconv.c:1931 #, c-format msgid "Usage: %s [-dhVq] in-file [out-file]\n" msgstr "" -#: srconv.c:1888 +#: srconv.c:1938 #, c-format msgid "%s: Convert a COFF object file into a SYSROFF object file\n" msgstr "" -#: srconv.c:2021 +#: srconv.c:2074 #, c-format msgid "unable to open output file %s" msgstr "" @@ -4041,39 +4259,40 @@ msgstr "" msgid "no argument types in mangled string\n" msgstr "" -#: strings.c:180 +#: strings.c:199 #, c-format msgid "invalid number %s" msgstr "" -#: strings.c:516 +#: strings.c:638 #, c-format msgid "invalid integer argument %s" msgstr "" -#: strings.c:526 +#: strings.c:648 #, c-format msgid "" -"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n" -" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" -" [--target=bfdname] [--help] [--version] file...\n" +"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] " +"file...\n" msgstr "" -#: sysdump.c:712 +#: sysdump.c:733 #, c-format msgid "Usage: %s [-hV] in-file\n" msgstr "" -#: sysdump.c:781 +#: sysdump.c:805 #, c-format msgid "cannot open input file %s" msgstr "" -#: version.c:40 -msgid "Copyright 1997, 98, 99, 2000, 2001 Free Software Foundation, Inc.\n" +#: version.c:35 +msgid "Copyright 2001 Free Software Foundation, Inc.\n" msgstr "" -#: version.c:41 +#: version.c:36 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" @@ -4160,7 +4379,7 @@ msgid "" "No input-file is stdin, default rc. No output-file is stdout, default rc.\n" msgstr "" -#: windres.c:980 +#: windres.c:983 msgid "no resources" msgstr "" diff -uprN binutils-2.11.92.0.12.3/binutils/po/es.po binutils-2.11.93.0.2/binutils/po/es.po --- binutils-2.11.92.0.12.3/binutils/po/es.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/binutils/po/es.po Sun Feb 3 11:22:31 2002 @@ -0,0 +1,4478 @@ +# Mensajes en español para binutils 2.12-pre020121. +# Copyright (C) 2002 Free Software Foundation, Inc. +# Cristian Othón Martínez Vera , 2002. +# +msgid "" +msgstr "" +"Project-Id-Version: binutils 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" +"PO-Revision-Date: 2002-01-24 11:14-0600\n" +"Last-Translator: Cristian Othón Martínez Vera \n" +"Language-Team: Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addr2line.c:73 +#, c-format +msgid "" +"Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" +" [-e executable] [--exe=executable] [--demangle[=style]]\n" +" [--basenames] [--functions] [addr addr ...]\n" +msgstr "" +"Modo de empleo: %s [-CfsHV] [-b nombrebfd] [--target=nombrebfd]\n" +" [-e ejecutable] [--exe=ejecutable] [--demangle[=estilo]]\n" +" [--basenames] [--functions] [dirección dirección ...]\n" + +#: addr2line.c:80 ar.c:289 nlmconv.c:1121 objcopy.c:423 objcopy.c:455 +#: readelf.c:2181 size.c:91 strings.c:655 windres.c:737 +#, c-format +msgid "Report bugs to %s\n" +msgstr "Reportar bichos a %s\n" + +#: addr2line.c:240 +#, c-format +msgid "%s: can not get addresses from archive" +msgstr "%s: no se pueden obtener las direcciones del archivo" + +#: addr2line.c:312 nm.c:447 objdump.c:2800 +#, c-format +msgid "unknown demangling style `%s'" +msgstr "estilo de desenredo `%s' desconocido" + +#: ar.c:237 +#, c-format +msgid "no entry %s in archive\n" +msgstr "no existe la entrada %s en el archivo\n" + +#: ar.c:254 +#, c-format +msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" +msgstr "Modo de empleo: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n" + +#: ar.c:257 +#, c-format +msgid " %s -M []\n" + +#: ar.c:258 +msgid " commands:\n" +msgstr " órdenes:\n" + +#: ar.c:259 +msgid " d - delete file(s) from the archive\n" +msgstr " d - borra fichero(s) del archivo\n" + +#: ar.c:260 +msgid " m[ab] - move file(s) in the archive\n" +msgstr " m[ab] - mueve fichero(s) en el archivo\n" + +#: ar.c:261 +msgid " p - print file(s) found in the archive\n" +msgstr " p - muestra fichero(s) encontrados en el archivo\n" + +#: ar.c:262 +msgid " q[f] - quick append file(s) to the archive\n" +msgstr " q[f] - agrega rápidamente fichero(s) al archivo\n" + +#: ar.c:263 +msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n" +msgstr " r[ab][f][u] - reemplaza fichero(s) existente(s) o inserta fichero(s) nuevo(s) en el archivo\n" + +#: ar.c:264 +msgid " t - display contents of archive\n" +msgstr " t - muestra los contenidos del archivo\n" + +#: ar.c:265 +msgid " x[o] - extract file(s) from the archive\n" +msgstr " x[o] - extrae fichero(s) del archivo\n" + +#: ar.c:266 +msgid " command specific modifiers:\n" +msgstr " modificadores específicos de la orden:\n" + +#: ar.c:267 +msgid " [a] - put file(s) after [member-name]\n" +msgstr " [a] - coloca fichero(s) despúes de [nombre-miembro]\n" + +#: ar.c:268 +msgid " [b] - put file(s) before [member-name] (same as [i])\n" +msgstr " [b] - coloca fichero(s) antes de [nombre-miembro] (igual que [i])\n" + +#: ar.c:269 +msgid " [N] - use instance [count] of name\n" +msgstr " [N] - usa la instancia [cuenta] del nombre\n" + +#: ar.c:270 +msgid " [f] - truncate inserted file names\n" +msgstr " [f] - trunca los nombres de fichero insertados\n" + +#: ar.c:271 +msgid " [P] - use full path names when matching\n" +msgstr " [P] - utiliza nombres completos de ruta cuando se buscan coincidencias\n" + +#: ar.c:272 +msgid " [o] - preserve original dates\n" +msgstr " [o] - conserva las fechas originales\n" + +#: ar.c:273 +msgid " [u] - only replace files that are newer than current archive contents\n" +msgstr " [u] - sólo reemplaza ficheros que sean más nuevos que el contenido actual del archivo\n" + +#: ar.c:274 +msgid " generic modifiers:\n" +msgstr " modificadores genéricos:\n" + +#: ar.c:275 +msgid " [c] - do not warn if the library had to be created\n" +msgstr " [c] - no avisa si se tiene que crear la biblioteca\n" + +#: ar.c:276 +msgid " [s] - create an archive index (cf. ranlib)\n" +msgstr " [s] - crea un índice del archivo (cf. ranlib)\n" + +#: ar.c:277 +msgid " [S] - do not build a symbol table\n" +msgstr " [S] - no construye una tabla de símbolos\n" + +#: ar.c:278 +msgid " [v] - be verbose\n" +msgstr " [v] - detallado\n" + +#: ar.c:279 +msgid " [V] - display the version number\n" +msgstr " [V] - muestra el número de versión\n" + +#: ar.c:280 +msgid " [-X32_64] - (ignored)\n" +msgstr " [-X32_64] - (ignorado)\n" + +#: ar.c:284 +#, c-format +msgid "Usage: %s [-vV] archive\n" +msgstr "Modo de empleo: %s [-vV] archivo\n" + +#: ar.c:505 +msgid "two different operation options specified" +msgstr "se especificaron dos opciones de operación diferentes" + +#: ar.c:580 +#, c-format +msgid "illegal option -- %c" +msgstr "opción ilegal -- %c" + +#: ar.c:612 +msgid "no operation specified" +msgstr "no se especificó una operación" + +#: ar.c:615 +msgid "`u' is only meaningful with the `r' option." +msgstr "`u' sólo tiene significado con la opción `r'." + +#: ar.c:625 +msgid "`N' is only meaningful with the `x' and `d' options." +msgstr "`N' sólo tiene significado con las opciones `x' y `d'." + +#: ar.c:628 +msgid "Value for `N' must be positive." +msgstr "El valor para `N' debe ser positivo." + +#: ar.c:711 +#, c-format +msgid "internal error -- this option not implemented" +msgstr "error interno -- esta opción no está implementada" + +#: ar.c:830 ar.c:881 ar.c:1327 objcopy.c:1322 +#, c-format +msgid "internal stat error on %s" +msgstr "error interno de stat en %s" + +#: ar.c:834 +#, c-format +msgid "\n\n\n" +msgstr "\n\n\n" + +#: ar.c:850 ar.c:918 +#, c-format +msgid "%s is not a valid archive" +msgstr "%s no es un archivo válido" + +#: ar.c:886 +#, c-format +msgid "stat returns negative size for %s" +msgstr "stat devuelve un valor negativo para %s" + +#: ar.c:1013 +#, c-format +msgid "%s is not an archive" +msgstr "%s no es un archivo" + +#: ar.c:1020 +#, c-format +msgid "creating %s" +msgstr "creando %s" + +#: ar.c:1226 +#, c-format +msgid "No member named `%s'\n" +msgstr "No hay un miembro llamado `%s'\n" + +#: ar.c:1278 +#, c-format +msgid "no entry %s in archive %s!" +msgstr "¡no hay una entrada %s en el archivo %s!" + +#: ar.c:1439 +#, c-format +msgid "%s: no archive map to update" +msgstr "%s: no hay un mapa de archivo para actualizar" + +#: arsup.c:88 +#, c-format +msgid "No entry %s in archive.\n" +msgstr "No hay una entrada %s en el archivo.\n" + +#: arsup.c:120 +#, c-format +msgid "Can't open file %s\n" +msgstr "No se puede abrir el fichero %s\n" + +#: arsup.c:171 +#, c-format +msgid "%s: Can't open output archive %s\n" +msgstr "%s: No se puede abrir el fichero de salida %s\n" + +#: arsup.c:183 +#, c-format +msgid "%s: Can't open input archive %s\n" +msgstr "%s: No se puede abrir el fichero de entrada %s\n" + +#: arsup.c:189 +#, c-format +msgid "%s: file %s is not an archive\n" +msgstr "%s: el fichero %s no es un archivo\n" + +#: arsup.c:230 +#, c-format +msgid "%s: no output archive specified yet\n" +msgstr "%s: no se ha especificado aún un archivo de salida\n" + +#: arsup.c:250 arsup.c:285 arsup.c:321 arsup.c:341 arsup.c:399 +#, c-format +msgid "%s: no open output archive\n" +msgstr "%s: no hay un archivo de salida abierto\n" + +#: arsup.c:258 arsup.c:359 arsup.c:379 +#, c-format +msgid "%s: can't open file %s\n" +msgstr "%s: no se puede abrir el fichero %s\n" + +#: arsup.c:306 arsup.c:375 arsup.c:454 +#, c-format +msgid "%s: can't find module file %s\n" +msgstr "%s: no se puede encontrar el fichero de módulo %s\n" + +#: arsup.c:406 +#, c-format +msgid "Current open archive is %s\n" +msgstr "El archivo actualmente abierto es %s\n" + +#: arsup.c:433 +#, c-format +msgid "%s: no open archive\n" +msgstr "%s: no hay un archivo abierto\n" + +#: bucomm.c:106 +#, c-format +msgid "can't set BFD default target to `%s': %s" +msgstr "no se puede establecer el objetivo BFD por omisión a `%s': %s" + +#: bucomm.c:118 +#, c-format +msgid "%s: Matching formats:" +msgstr "%s: Formatos coincidentes:" + +#: bucomm.c:135 +msgid "Supported targets:" +msgstr "Objetivos con soporte:" + +#: bucomm.c:137 +#, c-format +msgid "%s: supported targets:" +msgstr "%s: objetivos con soporte:" + +#: bucomm.c:153 +msgid "Supported architectures:" +msgstr "Arquitecturas con soporte:" + +#: bucomm.c:155 +#, c-format +msgid "%s: supported architectures:" +msgstr "%s: arquitecturas con soporte:" + +#: bucomm.c:262 +#, c-format +msgid "%s: bad number: %s" +msgstr "%s: número erróneo: %s" + +#: coffdump.c:106 +#, c-format +msgid "#lines %d " +msgstr "#líneas %d " + +#: coffdump.c:468 sysdump.c:740 +#, c-format +msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" +msgstr "%s: Muestra una interpretación legible por humanos de un fichero objeto SYSROFF\n" + +#: coffdump.c:531 srconv.c:2029 sysdump.c:799 +msgid "no input file specified" +msgstr "no se especificó un fichero de entrada" + +#: debug.c:653 +msgid "debug_add_to_current_namespace: no current file" +msgstr "debug_add_to_current_namespace: no hay un fichero actual" + +#: debug.c:736 +msgid "debug_start_source: no debug_set_filename call" +msgstr "debug_start_source: no hay una llamada debug_set_filename" + +#: debug.c:795 +msgid "debug_record_function: no debug_set_filename call" +msgstr "debug_record_function: no hay una llamada debug_set_filename" + +#: debug.c:851 +msgid "debug_record_parameter: no current function" +msgstr "debug_record_parameter: no hay una función actual" + +#: debug.c:885 +msgid "debug_end_function: no current function" +msgstr "debug_end_function: no hay una función actual" + +#: debug.c:891 +msgid "debug_end_function: some blocks were not closed" +msgstr "debug_end_function: algunos bloques no fueron cerrados" + +#: debug.c:921 +msgid "debug_start_block: no current block" +msgstr "debug_start_block: no hay un bloque actual" + +#: debug.c:959 +msgid "debug_end_block: no current block" +msgstr "debug_end_block: no hay un bloque actual" + +#: debug.c:966 +msgid "debug_end_block: attempt to close top level block" +msgstr "debug_end_block: intento de cerrar el bloque del nivel principal" + +#: debug.c:992 +msgid "debug_record_line: no current unit" +msgstr "debug_record_line: no hay una unidad actual" + +#. FIXME +#: debug.c:1046 +msgid "debug_start_common_block: not implemented" +msgstr "debug_start_common_block: no está implementado" + +#. FIXME +#: debug.c:1058 +msgid "debug_end_common_block: not implemented" +msgstr "debug_end_common_block: no está implementado" + +#. FIXME. +#: debug.c:1152 +msgid "debug_record_label not implemented" +msgstr "debug_record_label no está implementado" + +#: debug.c:1178 +msgid "debug_record_variable: no current file" +msgstr "debug_record_variable: no hay un fichero actual" + +#: debug.c:1194 +msgid "debug_record_variable: no current block" +msgstr "debug_record_variable: no hay un bloque actual" + +#: debug.c:1764 +msgid "debug_make_undefined_type: unsupported kind" +msgstr "debug_make_undefined_type: género sin soporte" + +#: debug.c:1970 +msgid "debug_name_type: no current file" +msgstr "debug_name_type: no hay fichero actual" + +#: debug.c:2018 +msgid "debug_tag_type: no current file" +msgstr "debug_tag_type: no hay fichero actual" + +#: debug.c:2026 +msgid "debug_tag_type: extra tag attempted" +msgstr "debug_tag_type: se intentó una marca extra" + +#: debug.c:2066 +#, c-format +msgid "Warning: changing type size from %d to %d\n" +msgstr "Aviso: cambiando el tamaño del tipo de %d a %d\n" + +#: debug.c:2090 +msgid "debug_find_named_type: no current compilation unit" +msgstr "debug_find_named_type: no hay una unidad de compilación actual" + +#: debug.c:2197 +#, c-format +msgid "debug_get_real_type: circular debug information for %s\n" +msgstr "debug_get_real_type: información de depuración circular para %s\n" + +#: debug.c:2662 +msgid "debug_write_type: illegal type encountered" +msgstr "debug_write_type: se encontró un tipo ilegal" + +#: dlltool.c:743 dlltool.c:768 dlltool.c:794 +#, c-format +msgid "Internal error: Unknown machine type: %d" +msgstr "Error interno: Tipo de máquina desconocido: %d" + +#: dlltool.c:831 +#, c-format +msgid "Can't open def file: %s" +msgstr "No se puede abrir el fichero def: %s" + +#: dlltool.c:836 +#, c-format +msgid "Processing def file: %s" +msgstr "Procesando el fichero def: %s" + +#: dlltool.c:840 +msgid "Processed def file" +msgstr "Fichero def procesado" + +#: dlltool.c:866 +#, c-format +msgid "Syntax error in def file %s:%d" +msgstr "Error sintáctico en el fichero def %s:%d" + +#: dlltool.c:905 +#, c-format +msgid "NAME: %s base: %x" +msgstr "NOMBRE: %s base: %x" + +#: dlltool.c:908 dlltool.c:927 +msgid "Can't have LIBRARY and NAME" +msgstr "No se puede tener BIBLIOTECA y NOMBRE" + +#: dlltool.c:924 +#, c-format +msgid "LIBRARY: %s base: %x" +msgstr "BIBLIOTECA: %s base %x" + +#: dlltool.c:1182 resrc.c:271 +#, c-format +msgid "wait: %s" +msgstr "espera: %s" + +#: dlltool.c:1187 dllwrap.c:455 resrc.c:276 +#, c-format +msgid "subprocess got fatal signal %d" +msgstr "el subproceso recibió la señal fatal %d" + +#: dlltool.c:1193 dllwrap.c:462 resrc.c:283 +#, c-format +msgid "%s exited with status %d" +msgstr "%s terminó con estado %d" + +#: dlltool.c:1225 +#, c-format +msgid "Sucking in info from %s section in %s" +msgstr "Succionando la información de la sección %s en %s" + +#: dlltool.c:1349 +#, c-format +msgid "Excluding symbol: %s" +msgstr "Excluyendo el símbolo: %s" + +#: dlltool.c:1444 dlltool.c:1455 nm.c:958 nm.c:969 objdump.c:383 objdump.c:400 +#, c-format +msgid "%s: no symbols" +msgstr "%s: no hay símbolos" + +#. FIXME: we ought to read in and block out the base relocations +#: dlltool.c:1482 +#, c-format +msgid "Done reading %s" +msgstr "%s leído" + +#: dlltool.c:1493 +#, c-format +msgid "Unable to open object file: %s" +msgstr "No se puede abrir el fichero objeto: %s" + +#: dlltool.c:1496 +#, c-format +msgid "Scanning object file %s" +msgstr "Revisando el fichero objeto %s" + +#: dlltool.c:1511 +#, c-format +msgid "Cannot produce mcore-elf dll from archive file: %s" +msgstr "No se puede producir una dll mcore-elf del fichero archivo: %s" + +#: dlltool.c:1603 +msgid "Adding exports to output file" +msgstr "Agregando exportaciones al fichero de salida" + +#: dlltool.c:1648 +msgid "Added exports to output file" +msgstr "Exportaciones agregadas al fichero de salida" + +#: dlltool.c:1772 +#, c-format +msgid "Generating export file: %s" +msgstr "Generando el fichero de exportación: %s" + +#: dlltool.c:1777 +#, c-format +msgid "Unable to open temporary assembler file: %s" +msgstr "No se puede abrir el fichero temporal de ensamblador: %s" + +#: dlltool.c:1780 +#, c-format +msgid "Opened temporary file: %s" +msgstr "Se abrió el fichero temporal: %s" + +#: dlltool.c:2004 +msgid "Generated exports file" +msgstr "Fichero de exportación generado" + +#: dlltool.c:2266 +#, c-format +msgid "bfd_open failed open stub file: %s" +msgstr "falló bfd_open al abrirl el fichero de cabos: %s" + +#: dlltool.c:2269 +#, c-format +msgid "Creating stub file: %s" +msgstr "Creando el ficheor de cabos: %s" + +#: dlltool.c:2658 +#, c-format +msgid "failed to open temporary head file: %s" +msgstr "falló la apertura del inicio del fichero temporal: %s" + +#: dlltool.c:2717 +#, c-format +msgid "failed to open temporary tail file: %s" +msgstr "falló la apertura del final del fichero temporal: %s" + +#: dlltool.c:2785 +#, c-format +msgid "Can't open .lib file: %s" +msgstr "No se puede abrir el fichero .lib: %s" + +#: dlltool.c:2788 +#, c-format +msgid "Creating library file: %s" +msgstr "Creando el fichero de biblioteca: %s" + +#: dlltool.c:2847 +#, c-format +msgid "cannot delete %s: %s" +msgstr "no se puede borrar %s: %s" + +#: dlltool.c:2851 +msgid "Created lib file" +msgstr "Fichero de biblioteca creado" + +#: dlltool.c:2956 +#, c-format +msgid "Warning, ignoring duplicate EXPORT %s %d,%d" +msgstr "Aviso, ignorando las EXPORTaciones duplicadas %s %d,%d" + +#: dlltool.c:2962 +#, c-format +msgid "Error, duplicate EXPORT with oridinals: %s" +msgstr "Error, EXPORTaciones duplicadas con ordinales: %s" + +#: dlltool.c:3089 +msgid "Processing definitions" +msgstr "Procesando definiciones" + +#: dlltool.c:3127 +msgid "Processed definitions" +msgstr "Definiciones procesadas" + +#. xgetext:c-format +#: dlltool.c:3138 dllwrap.c:519 +#, c-format +msgid "Usage %s \n" +msgstr "Modo de empleo %s \n" + +#. xgetext:c-format +#: dlltool.c:3140 +#, c-format +msgid " -m --machine Create as DLL for . [default: %s]\n" +msgstr " -m --machine Crear una DLL para la . [por omisión: %s]\n" + +#: dlltool.c:3141 +msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" +msgstr " posible: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" + +#: dlltool.c:3142 +msgid " -e --output-exp Generate an export file.\n" +msgstr " -e --output-exp Generar un fichero de exportación.\n" + +#: dlltool.c:3143 +msgid " -l --output-lib Generate an interface library.\n" +msgstr " -l --output-lib Generar un fichero de interfaz.\n" + +#: dlltool.c:3144 +msgid " -a --add-indirect Add dll indirects to export file.\n" +msgstr " -a --add-indirect Agregar indirecciones dll al fichero de exportación.\n" + +#: dlltool.c:3145 +msgid " -D --dllname Name of input dll to put into interface lib.\n" +msgstr " -D --dllname Nombre de la dll de entrada a colocar en la biblioteca de interfaz.\n" + +#: dlltool.c:3146 +msgid " -d --input-def Name of .def file to be read in.\n" +msgstr " -d --input-def Nombre del fichero .def para leer.\n" + +#: dlltool.c:3147 +msgid " -z --output-def Name of .def file to be created.\n" +msgstr " -z --output-def Nombre del fichero .def para crear.\n" + +#: dlltool.c:3148 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols Exportar todos los símbolos a un .def\n" + +#: dlltool.c:3149 +msgid " --no-export-all-symbols Only export listed symbols\n" +msgstr " --no-export-all-symbols Sólo exportar los símbolos enlistados\n" + +#: dlltool.c:3150 +msgid " --exclude-symbols Don't export \n" +msgstr " --exclude-symbols No exportar la a\n" + +#: dlltool.c:3151 +msgid " --no-default-excludes Clear default exclude symbols\n" +msgstr " --no-default-excludes Limpiar los símbolos excluídos por omisión\n" + +#: dlltool.c:3152 +msgid " -b --base-file Read linker generated base file.\n" +msgstr " -b --base-file Leer el fichero base generado por el enlazador.\n" + +#: dlltool.c:3153 +msgid " -x --no-idata4 Don't generate idata$4 section.\n" +msgstr " -x --no-idata4 No generar la sección idata$4.\n" + +#: dlltool.c:3154 +msgid " -c --no-idata5 Don't generate idata$5 section.\n" +msgstr " -c --no-idata5 No generar la sección idata$5.\n" + +#: dlltool.c:3155 +msgid " -U --add-underscore Add underscores to symbols in interface library.\n" +msgstr " -U --add-underscore Agregar subrayado a los símbolos en la biblioteca de interfaz.\n" + +#: dlltool.c:3156 +msgid " -k --kill-at Kill @ from exported names.\n" +msgstr " -k --kill-at Eliminar @ de los nombres exportados.\n" + +#: dlltool.c:3157 +msgid " -A --add-stdcall-alias Add aliases without @.\n" +msgstr " -A --add-stdcall-alias Agregar aliases sin @.\n" + +#: dlltool.c:3158 +msgid " -S --as Use for assembler.\n" +msgstr " -S --as Usar para ensamblador.\n" + +#: dlltool.c:3159 +msgid " -f --as-flags Pass to the assembler.\n" +msgstr " -f --as-flags Pasar al ensamblador.\n" + +#: dlltool.c:3160 +msgid " -C --compat-implib Create backward compatible import library.\n" +msgstr " -C --compat-implib Crear biblioteca de importación compatible hacia atrás.\n" + +#: dlltool.c:3161 +msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" +msgstr " -n --no-delete Conservar los ficheros temporales (repetir para conservación extra).\n" + +#: dlltool.c:3162 +msgid " -v --verbose Be verbose.\n" +msgstr " -v --verbose Detallado.\n" + +#: dlltool.c:3163 +msgid " -V --version Display the program version.\n" +msgstr " -V --version Muestra la versión del programa.\n" + +#: dlltool.c:3164 +msgid " -h --help Display this information.\n" +msgstr " -h --help Muestra esta información.\n" + +#: dlltool.c:3166 +msgid " -M --mcore-elf Process mcore-elf object files into .\n" +msgstr " -M --mcore-elf Procesa los ficheros objeto mcore-elf hacia .\n" + +#: dlltool.c:3167 +msgid " -L --linker Use as the linker.\n" +msgstr " -L --linker Usa como el enlazador.\n" + +#: dlltool.c:3168 +msgid " -F --linker-flags Pass to the linker.\n" +msgstr " -F --linker-flags Pasa al enlazador.\n" + +#: dlltool.c:3315 +#, c-format +msgid "Unable to open base-file: %s" +msgstr "No se puede abrir el fichero-base: %s" + +#: dlltool.c:3344 +#, c-format +msgid "Machine '%s' not supported" +msgstr "La máquina '%s' no tiene soporte" + +#: dlltool.c:3447 dllwrap.c:240 +#, c-format +msgid "Tried file: %s" +msgstr "Fichero intentado: %s" + +#: dlltool.c:3454 dllwrap.c:247 +#, c-format +msgid "Using file: %s" +msgstr "Usando el fichero: %s" + +#: dllwrap.c:334 +#, c-format +msgid "Keeping temporary base file %s" +msgstr "Conservando el fichero base temporal %s" + +#: dllwrap.c:336 +#, c-format +msgid "Deleting temporary base file %s" +msgstr "Borrando el fichero base temporal %s" + +#: dllwrap.c:350 +#, c-format +msgid "Keeping temporary exp file %s" +msgstr "Conservando el fichero exp temporal %s" + +#: dllwrap.c:352 +#, c-format +msgid "Deleting temporary exp file %s" +msgstr "Borrando el fichero exp temporal %s" + +#: dllwrap.c:365 +#, c-format +msgid "Keeping temporary def file %s" +msgstr "Conservando el fichero def temporal %s" + +#: dllwrap.c:367 +#, c-format +msgid "Deleting temporary def file %s" +msgstr "Borrando el fichero def temporal %s" + +#: dllwrap.c:520 +msgid " Generic options:\n" +msgstr " Opciones genéricas:\n" + +#: dllwrap.c:521 +msgid " --quiet, -q Work quietly\n" +msgstr " --quiet, -q Trabajar silenciosamente\n" + +#: dllwrap.c:522 +msgid " --verbose, -v Verbose\n" +msgstr " --verbose, -v Con detalle\n" + +#: dllwrap.c:523 +msgid " --version Print dllwrap version\n" +msgstr " --version Muestra la versión de dllwrap\n" + +#: dllwrap.c:524 +msgid " --implib Synonym for --output-lib\n" +msgstr " --impllib Sinónimo para --output-lib\n" + +#: dllwrap.c:525 +#, c-format +msgid " Options for %s:\n" +msgstr " Opciones para %s:\n" + +#: dllwrap.c:526 +msgid " --driver-name Defaults to \"gcc\"\n" +msgstr " --driver-name Por omisión es \"gcc\"\n" + +#: dllwrap.c:527 +msgid " --driver-flags Override default ld flags\n" +msgstr " --driver-flags Cambia las opciones por omisión de ld\n" + +#: dllwrap.c:528 +msgid " --dlltool-name Defaults to \"dlltool\"\n" +msgstr " --dlltool-name Por omisión es \"dlltool\"\n" + +#: dllwrap.c:529 +msgid " --entry Specify alternate DLL entry point\n" +msgstr " --entry Especifica un punto de entrada alternativo para la DLL\n" + +#: dllwrap.c:530 +msgid " --image-base Specify image base address\n" +msgstr " --image-base Especifica la dirección de la imagen base\n" + +#: dllwrap.c:531 +msgid " --target i386-cygwin32 or i386-mingw32\n" +msgstr " --target i386-cygwin32 ó i386-mingw32\n" + +#: dllwrap.c:532 +msgid " --dry-run Show what needs to be run\n" +msgstr " --dry-run Muestra lo que se necesita ejecutar\n" + +#: dllwrap.c:533 +msgid " --mno-cygwin Create Mingw DLL\n" +msgstr " --mno-cygwin Crea una DLL Mingw\n" + +#: dllwrap.c:534 +msgid " Options passed to DLLTOOL:\n" +msgstr " Opciones pasadas a DLLTOOL:\n" + +#: dllwrap.c:535 +msgid " --machine \n" +msgstr " --machine \n" + +#: dllwrap.c:536 +msgid " --output-exp Generate export file.\n" +msgstr " --output-exp Genera un fichero de exportación.\n" + +# ¿No será acaso una biblioteca de salida? cfuga +#: dllwrap.c:537 +msgid " --output-lib Generate input library.\n" +msgstr " --output-lib Genera una biblioteca de entrada.\n" + +#: dllwrap.c:538 +msgid " --add-indirect Add dll indirects to export file.\n" +msgstr " --add-indirect Agrega indirecciones de dll al fichero de exportación.\n" + +#: dllwrap.c:539 +msgid " --dllname Name of input dll to put into output lib.\n" +msgstr " --dllname Nombre del fichero dll de entrada a colocar en la biblioteca de salida.\n" + +#: dllwrap.c:540 +msgid " --def Name input .def file\n" +msgstr " --def Nombre del fichero .def de entrada\n" + +#: dllwrap.c:541 +msgid " --output-def Name output .def file\n" +msgstr " --output-def Nombre del fichero .def de salida\n" + +#: dllwrap.c:542 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols Exporta todos los símbolos a un .def\n" + +#: dllwrap.c:543 +msgid " --no-export-all-symbols Only export .drectve symbols\n" +msgstr " --no-export-all-symbols Sólo exporta los símbolos .drectve\n" + +#: dllwrap.c:544 +msgid " --exclude-symbols Exclude from .def\n" +msgstr " --exclude-symbols Excluye la a del .def\n" + +#: dllwrap.c:545 +msgid " --no-default-excludes Zap default exclude symbols\n" +msgstr " --no-default-excludes Elimina los símbolos excluídos por omisión\n" + +#: dllwrap.c:546 +msgid " --base-file Read linker generated base file\n" +msgstr " --base-file Lee el fichero base generado por el enlazador\n" + +#: dllwrap.c:547 +msgid " --no-idata4 Don't generate idata$4 section\n" +msgstr " --no-idata4 No genera la sección idata$4\n" + +#: dllwrap.c:548 +msgid " --no-idata5 Don't generate idata$5 section\n" +msgstr " --no-idata5 No genera la sección idata$5\n" + +#: dllwrap.c:549 +msgid " -U Add underscores to .lib\n" +msgstr " -U Agrega subrayados a .lib\n" + +#: dllwrap.c:550 +msgid " -k Kill @ from exported names\n" +msgstr " -k Elimina @ de los nombres exportados\n" + +#: dllwrap.c:551 +msgid " --add-stdcall-alias Add aliases without @\n" +msgstr " --add-stdcall-alias Agrega aliases sin @\n" + +#: dllwrap.c:552 +msgid " --as Use for assembler\n" +msgstr " --as Usa como ensamblador\n" + +#: dllwrap.c:553 +msgid " --nodelete Keep temp files.\n" +msgstr " --nodelete Conserva los ficheros temporales.\n" + +#: dllwrap.c:554 +msgid " Rest are passed unmodified to the language driver\n" +msgstr " El resto se pasa sin modificación al controlador del lenguaje\n" + +#: dllwrap.c:824 +msgid "Must provide at least one of -o or --dllname options" +msgstr "Se debe proveer por lo menos una de las opciones -o ó --dllname" + +#: dllwrap.c:852 +msgid "" +"no export definition file provided.\n" +"Creating one, but that may not be what you want" +msgstr "" +"no se provee un fichero de definición de exportación.\n" +"Creando uno, pero tal vez eso no es lo que quiere" + +#: dllwrap.c:1014 +#, c-format +msgid "DLLTOOL name : %s\n" +msgstr "nombre DLLTOOL : %s\n" + +#: dllwrap.c:1015 +#, c-format +msgid "DLLTOOL options : %s\n" +msgstr "opciones DLLTOOL: %s\n" + +#: dllwrap.c:1016 +#, c-format +msgid "DRIVER name : %s\n" +msgstr "nombre DRIVER : %s\n" + +#: dllwrap.c:1017 +#, c-format +msgid "DRIVER options : %s\n" +msgstr "opciones DRIVER : %s\n" + +#: ieee.c:317 +msgid "unexpected end of debugging information" +msgstr "fin inesperado de la información de depuración" + +#: ieee.c:412 +msgid "invalid number" +msgstr "número inválido" + +#: ieee.c:471 +msgid "invalid string length" +msgstr "longitud de cadena inválida" + +#: ieee.c:528 ieee.c:569 +msgid "expression stack overflow" +msgstr "desbordamiento de la pila de expresión" + +#: ieee.c:548 +msgid "unsupported IEEE expression operator" +msgstr "operador de expresión IEEE sin soporte" + +#: ieee.c:563 +msgid "unknown section" +msgstr "sección desconocida" + +#: ieee.c:584 +msgid "expression stack underflow" +msgstr "desbordamiento por debajo de la pila de expresión" + +#: ieee.c:598 +msgid "expression stack mismatch" +msgstr "no hay coincidencia en la pila de expresión" + +#: ieee.c:637 +msgid "unknown builtin type" +msgstr "tipo interno desconocido" + +#: ieee.c:782 +msgid "BCD float type not supported" +msgstr "tipo de coma flotante BCD sin soporte" + +#: ieee.c:928 +msgid "unexpected number" +msgstr "número inesperado" + +#: ieee.c:935 +msgid "unexpected record type" +msgstr "tipo de grabación inesperado" + +#: ieee.c:968 +msgid "blocks left on stack at end" +msgstr "se dejaron bloques en la pila al final" + +#: ieee.c:1233 +msgid "unknown BB type" +msgstr "typo BB desconocido" + +#: ieee.c:1242 +msgid "stack overflow" +msgstr "desbordamiento de la pila" + +#: ieee.c:1267 +msgid "stack underflow" +msgstr "desbordamiento de la pila por debajo" + +#: ieee.c:1381 ieee.c:1453 ieee.c:2152 +msgid "illegal variable index" +msgstr "índice de variable ilegal" + +#: ieee.c:1431 +msgid "illegal type index" +msgstr "índice de tipo ilegal" + +#: ieee.c:1441 ieee.c:1478 +msgid "unknown TY code" +msgstr "código TY desconocido" + +#: ieee.c:1460 +msgid "undefined variable in TY" +msgstr "variable indefinida en TY" + +#. Pascal file name. FIXME. +#: ieee.c:1871 +msgid "Pascal file name not supported" +msgstr "El nombre de fichero Pascal no tiene soporte" + +#: ieee.c:1919 +msgid "unsupported qualifer" +msgstr "calificador sin soporte" + +#: ieee.c:2190 +msgid "undefined variable in ATN" +msgstr "variable indefinida en ATN" + +#: ieee.c:2233 +msgid "unknown ATN type" +msgstr "tipo ATN desconocido" + +#. Reserved for FORTRAN common. +#: ieee.c:2355 +msgid "unsupported ATN11" +msgstr "ATN11 sin soporte" + +#. We have no way to record this information. FIXME. +#: ieee.c:2382 +msgid "unsupported ATN12" +msgstr "ATN12 sin soporte" + +#: ieee.c:2442 +msgid "unexpected string in C++ misc" +msgstr "cadena inesperada en misc de C++" + +#: ieee.c:2455 +msgid "bad misc record" +msgstr "grabación misc errónea" + +#: ieee.c:2498 +msgid "unrecognized C++ misc record" +msgstr "grabación misc de C++ no reconocida" + +#: ieee.c:2615 +msgid "undefined C++ object" +msgstr "objeto C++ no definido" + +#: ieee.c:2649 +msgid "unrecognized C++ object spec" +msgstr "especificación de objeto C++ no reconocida" + +#: ieee.c:2685 +msgid "unsupported C++ object type" +msgstr "tipo de objeto C++ sin soporte" + +#: ieee.c:2695 +msgid "C++ base class not defined" +msgstr "no está definida la clase base de C++" + +#: ieee.c:2707 ieee.c:2812 +msgid "C++ object has no fields" +msgstr "el objeto C++ no tiene campos" + +#: ieee.c:2726 +msgid "C++ base class not found in container" +msgstr "no se encuentra la clase base C++ en el contenedor" + +#: ieee.c:2833 +msgid "C++ data member not found in container" +msgstr "no se encuentra los datos miembros C++ en el contenedor" + +#: ieee.c:2874 ieee.c:3024 +msgid "unknown C++ visibility" +msgstr "visibilidad C++ desconocida" + +#: ieee.c:2908 +msgid "bad C++ field bit pos or size" +msgstr "posición o tamaño erróneo del campo de bit C++" + +#: ieee.c:3000 +msgid "bad type for C++ method function" +msgstr "tipo erróneo para la función del método C++" + +#: ieee.c:3010 +msgid "no type information for C++ method function" +msgstr "no hay información de tipo para la función del método C++" + +#: ieee.c:3049 +msgid "C++ static virtual method" +msgstr "método virtual static de C++" + +#: ieee.c:3144 +msgid "unrecognized C++ object overhead spec" +msgstr "especificación de adelanto de objeto C++ no reconocida" + +#: ieee.c:3183 +msgid "undefined C++ vtable" +msgstr "vtable C++ no definida" + +#: ieee.c:3254 +msgid "C++ default values not in a function" +msgstr "valores C++ por omisión no están en una función" + +#: ieee.c:3294 +msgid "unrecognized C++ default type" +msgstr "tipo por omisión de C++ no reconocido" + +#: ieee.c:3325 +msgid "reference parameter is not a pointer" +msgstr "el parámetro de referencia no es un apuntador" + +#: ieee.c:3410 +msgid "unrecognized C++ reference type" +msgstr "tipo de referencia de C++ no reconocido" + +#: ieee.c:3492 +msgid "C++ reference not found" +msgstr "no se encontró la referencia C++" + +#: ieee.c:3500 +msgid "C++ reference is not pointer" +msgstr "la referencia C++ no es un apuntador" + +#: ieee.c:3529 ieee.c:3537 +msgid "missing required ASN" +msgstr "falta el ASN requerido" + +#: ieee.c:3567 ieee.c:3575 +msgid "missing required ATN65" +msgstr "falta el ATN65 requerido" + +#: ieee.c:3589 +msgid "bad ATN65 record" +msgstr "registro ATN65 erróneo" + +#: ieee.c:4236 +msgid "IEEE numeric overflow: 0x" +msgstr "desbordamiento numérico IEEE: 0x" + +#: ieee.c:4282 +#, c-format +msgid "IEEE string length overflow: %u\n" +msgstr "desbordamiento de longitud de cadena IEEE: %u\n" + +#: ieee.c:5333 +#, c-format +msgid "IEEE unsupported integer type size %u\n" +msgstr "tamaño de tipo entero IEEE %u sin soporte\n" + +#: ieee.c:5369 +#, c-format +msgid "IEEE unsupported float type size %u\n" +msgstr "tamaño de tipo coma flotante IEEE %u sin soporte\n" + +#: ieee.c:5405 +#, c-format +msgid "IEEE unsupported complex type size %u\n" +msgstr "tamaño de tipo complejo IEEE %u sin soporte\n" + +#: nlmconv.c:278 srconv.c:2020 +msgid "input and output files must be different" +msgstr "los ficheros de entrada y salida deben ser diferentes" + +#: nlmconv.c:325 +msgid "input file named both on command line and with INPUT" +msgstr "fichero de entrada nombrado en la línea de comandos y con INPUT" + +#: nlmconv.c:334 +msgid "no input file" +msgstr "no hay fichero de entrada" + +#: nlmconv.c:364 +msgid "no name for output file" +msgstr "no hay nombre para el fichero de salida" + +#: nlmconv.c:377 +msgid "warning: input and output formats are not compatible" +msgstr "aviso: los formatos de entrada y salida no son compatibles" + +#: nlmconv.c:406 +msgid "make .bss section" +msgstr "hacer sección .bss" + +#: nlmconv.c:415 +msgid "make .nlmsections section" +msgstr "hacer sección .nlmsections" + +#: nlmconv.c:417 +msgid "set .nlmsections flags" +msgstr "establecer opciones .nlmsections" + +#: nlmconv.c:445 +msgid "set .bss vma" +msgstr "establecer vma .bss" + +#: nlmconv.c:452 +msgid "set .data size" +msgstr "establecer tamaño de .data" + +#: nlmconv.c:632 +#, c-format +msgid "warning: symbol %s imported but not in import list" +msgstr "aviso: se importó el símbolo %s pero no está en la lista de importación" + +#: nlmconv.c:652 +msgid "set start address" +msgstr "establecer la dirección de inicio" + +#: nlmconv.c:701 +#, c-format +msgid "warning: START procedure %s not defined" +msgstr "aviso: el procedimiento START %s no está definido" + +#: nlmconv.c:703 +#, c-format +msgid "warning: EXIT procedure %s not defined" +msgstr "aviso: el procedimiento EXIT %s no está definido" + +#: nlmconv.c:705 +#, c-format +msgid "warning: CHECK procedure %s not defined" +msgstr "aviso: el procedimiento CHECK %s no está definido" + +#: nlmconv.c:726 nlmconv.c:915 +msgid "custom section" +msgstr "sección a la medida" + +#: nlmconv.c:747 nlmconv.c:944 +msgid "help section" +msgstr "sección de ayuda" + +#: nlmconv.c:769 nlmconv.c:962 +msgid "message section" +msgstr "sección de mensajes" + +#: nlmconv.c:785 nlmconv.c:995 +msgid "module section" +msgstr "sección de módulos" + +#: nlmconv.c:805 nlmconv.c:1011 +msgid "rpc section" +msgstr "sección de rpc" + +#. There is no place to record this information. +#: nlmconv.c:841 +#, c-format +msgid "%s: warning: shared libraries can not have uninitialized data" +msgstr "%s: aviso: las bibliotecas compartidas no pueden tener datos sin iniciar" + +#: nlmconv.c:862 nlmconv.c:1030 +msgid "shared section" +msgstr "sección compartida" + +#: nlmconv.c:870 +msgid "warning: No version number given" +msgstr "aviso: No se dió un número de versión" + +#: nlmconv.c:910 nlmconv.c:939 nlmconv.c:957 nlmconv.c:1006 nlmconv.c:1025 +#, c-format +msgid "%s: read: %s" +msgstr "%s: leído: %s" + +#: nlmconv.c:932 +msgid "warning: MAP and FULLMAP are not supported; try ld -M" +msgstr "aviso: MAP y FULLMAP no tienen soporte; pruebe ld -M" + +#: nlmconv.c:1101 +#, c-format +msgid "%s: Convert an object file into a NetWare Loadable Module\n" +msgstr "%s: Convertir un fichero objeto en un Módulo Cargable de NetWare (NLM)\n" + +#: nlmconv.c:1113 +#, c-format +msgid "" +"Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n" +" [--input-target=bfdname] [--output-target=bfdname]\n" +" [--header-file=file] [--linker=linker] [--debug]\n" +" [--help] [--version]\n" +" [in-file [out-file]]\n" +msgstr "" +"Modo de empleo: %s [-dhV] [-I nombrebfd] [-O nombrebfd] [-T fichero-encabezado] [-l enlazador]\n" +" [--input-target=nombrebfd] [--output-target=nombrebfd]\n" +" [--header-file=fichero] [--linker=enlazador] [--debug]\n" +" [--help] [--version]\n" +" [fichero-entrada [fichero-salida]]\n" + +#: nlmconv.c:1153 +#, c-format +msgid "support not compiled in for %s" +msgstr "soporte no compilado para %s" + +#: nlmconv.c:1193 +msgid "make section" +msgstr "sección make" + +#: nlmconv.c:1207 +msgid "set section size" +msgstr "establecer el tamaño de la sección" + +#: nlmconv.c:1213 +msgid "set section alignment" +msgstr "establecer la alineación de la sección" + +#: nlmconv.c:1217 +msgid "set section flags" +msgstr "establecer las opciones de la sección" + +#: nlmconv.c:1228 +msgid "set .nlmsections size" +msgstr "establecer el tamaño de .nlmsections" + +#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 +msgid "set .nlmsection contents" +msgstr "establecer el contenido de .nlmsection" + +#: nlmconv.c:1841 +msgid "stub section sizes" +msgstr "tamaños de la sección de cabos" + +#: nlmconv.c:1890 +msgid "writing stub" +msgstr "escribiendo cabo" + +#: nlmconv.c:1980 +#, c-format +msgid "unresolved PC relative reloc against %s" +msgstr "reubicación relativa PC contra %s sin resolver" + +#: nlmconv.c:2044 +#, c-format +msgid "overflow when adjusting relocation against %s" +msgstr "desbordamiento al ajustar la reubicación contra %s" + +#: nlmconv.c:2161 +#, c-format +msgid "%s: execution of %s failed: " +msgstr "%s: falló la ejecución de %s: " + +#: nlmconv.c:2176 +#, c-format +msgid "Execution of %s failed" +msgstr "Falló la ejecución de %s" + +#: nm.c:300 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n" + +#: nm.c:301 +msgid "List symbols from FILEs (a.out by default).\n" +msgstr "Enumera los símbolos de los FICHEROs (a.out por omisión).\n" + +#: nm.c:302 +msgid "" +"\n" +" -a, --debug-syms Display debugger-only symbols\n" +" -A, --print-file-name Print name of the input file before every symbol\n" +" -B Same as --format=bsd\n" +" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n" +" The STYLE, if specified, can be `auto' (the default),\n" +" `gnu', 'lucid', 'arm', 'hp', 'edg' or 'gnu-new-abi'\n" +" --no-demangle Do not demangle low-level symbol names\n" +" -D, --dynamic Display dynamic symbols instead of normal symbols\n" +" --defined-only Display only defined symbols\n" +" -e (ignored)\n" +" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n" +" `sysv' or `posix'. The default is `bsd'\n" +" -g, --extern-only Display only external symbols\n" +" -h, --help Display this information\n" +" -l, --line-numbers Use debugging information to find a filename and\n" +" line number for each symbol\n" +" -n, --numeric-sort Sort symbols numerically by address\n" +" -o Same as -A\n" +" -p, --no-sort Do not sort the symbols\n" +" -P, --portability Same as --format=posix\n" +" -r, --reverse-sort Reverse the sense of the sort\n" +" -s, --print-armap Include index for symbols from archive members\n" +" --size-sort Sort symbols by size\n" +" -t, --radix=RADIX Use RADIX for printing symbol values\n" +" --target=BFDNAME Specify the target object format as BFDNAME\n" +" -u, --undefined-only Display only undefined symbols\n" +" -V, --version Display this program's version number\n" +" -X 32_64 (ignored)\n" +"\n" +msgstr "" +"\n" +" -a, --debug-syms Muestra símbolos sólo para el depurador\n" +" -A, --print-file-name Muestra el nombre del fichero de entrada antes de\n" +" cada símbolo\n" +" -B Igual que --format=bsd\n" +" -C, --demangle[=ESTILO] Decodifica los nombres de símbolo de bajo nivel en\n" +" nombres de nivel de usuario\n" +" El ESTILO, si se especifica, puede ser `auto'\n" +" (por omisión), `gnu', 'lucid', 'arm', 'hp', 'edg'\n" +" o 'gnu-new-abi'\n" +" --no-demangle No decodifica los nombres de símbolo de bajo nivel\n" +" -D, --dynamic Muestra los símbolos dinámicos en lugar de los\n" +" símbolos normales\n" +" --defined-only Muestra solamente los símbolos definidos\n" +" -e (ignorado)\n" +" -f, --format=FORMATO Usa el formato de salida FORMATO. FORMATO puede ser\n" +" `bsd', `sysv' o `posix'. Por omisión es `bsd'\n" +" -g, --extern-only Muestra solamente los símbolos externos\n" +" -h, --help Muestra esta información\n" +" -l, --line-numbers Utiliza la información de depuración para encontrar\n" +" un nombre de fichero y un número de línea para cada\n" +" símbolo\n" +" -n, --numeric-sort Ordena los símbolos numéricamente por dirección\n" +" -o Igual que -A\n" +" -p, --no-sort No ordena los símbolos\n" +" -P, --portability Igual que --format=posix\n" +" -r, --reverse-sort Cambia el sentido de la ordenación\n" +" -s, --print-armap Incluye el índice de los símbolos de miembros\n" +" del archivo\n" +" --size-sort Ordena los símbolos por tamaño\n" +" -t, --radix=RADICAL Utiliza el RADICAL para mostrar los valores de\n" +" los símbolos\n" +" --target=NOMBREBFD Especifica el formato de objeto objetivo como\n" +" NOMBREBFD\n" +" -u, --undefined-only Muestra sólo los símbolos indefinidos\n" +" -V, --version Muestra el número de versión de este programa\n" +" -X 32_64 (ignorado)\n" +"\n" + +#: nm.c:334 objdump.c:216 +#, c-format +msgid "Report bugs to %s.\n" +msgstr "Reportar bichos a %s.\n" + +#: nm.c:367 +#, c-format +msgid "%s: invalid radix" +msgstr "%s: radical inválido" + +#: nm.c:392 +#, c-format +msgid "%s: invalid output format" +msgstr "%s: formato de salida inválido" + +#: nm.c:504 +msgid "Only -X 32_64 is supported" +msgstr "Solamente -X 32_64 tiene soporte" + +#: nm.c:546 +#, c-format +msgid "data size %ld" +msgstr "tamaño de datos %ld" + +#: nm.c:1340 +#, c-format +msgid "\n\nUndefined symbols from %s:\n\n" +msgstr "\n\nSímbolos indefinidos de %s:\n\n" + +#: nm.c:1342 +#, c-format +msgid "\n\nSymbols from %s:\n\n" +msgstr "\n\nSímbolos de %s:\n\n" + +#: nm.c:1343 nm.c:1397 +msgid "Name Value Class Type Size Line Section\n\n" +msgstr "Nombre Valor Clase Tipo Tamaño Línea Sección\n\n" + +#: nm.c:1394 +#, c-format +msgid "\n\nUndefined symbols from %s[%s]:\n\n" +msgstr "\n\nSímbolos indefinidos de %s[%s]:\n\n" + +#: nm.c:1396 +#, c-format +msgid "\n\nSymbols from %s[%s]:\n\n" +msgstr "\n\nSímbolos de %s[%s]:\n\n" + +#: nm.c:1564 +msgid "\nArchive index:\n" +msgstr "\nÍndice del archivo:\n" + +#: objcopy.c:363 +#, c-format +msgid "Usage: %s in-file [out-file]\n" +msgstr "Modo de empleo %s fichero-entrada [fichero-salida]\n" + +#: objcopy.c:364 objcopy.c:433 +msgid " The options are:\n" +msgstr " Las opciones son:\n" + +#: objcopy.c:365 +msgid "" +" -I --input-target Assume input file is in format \n" +" -O --output-target Create an output file in format \n" +" -B --binary-architecture Set arch of output file, when input is binary\n" +" -F --target Set both input and output format to \n" +" --debugging Convert debugging information, if possible\n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -j --only-section Only copy section into the output\n" +" -R --remove-section Remove section from the output\n" +" -S --strip-all Remove all symbol and relocation information\n" +" -g --strip-debug Remove all debugging symbols\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol Do not copy symbol \n" +" -K --keep-symbol Only copy symbol \n" +" -L --localize-symbol Force symbol to be marked as a local\n" +" -G --keep-global-symbol Localize all symbols except \n" +" -W --weaken-symbol Force symbol to be marked as a weak\n" +" --weaken Force all global symbols to be marked as weak\n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -i --interleave Only copy one out of every bytes\n" +" -b --byte Select byte in every interleaved block\n" +" --gap-fill Fill gaps between sections with \n" +" --pad-to Pad the last section up to address \n" +" --set-start Set the start address to \n" +" {--change-start|--adjust-start} \n" +" Add to the start address\n" +" {--change-addresses|--adjust-vma} \n" +" Add to LMA, VMA and start addresses\n" +" {--change-section-address|--adjust-section-vma} {=|+|-}\n" +" Change LMA and VMA of section by \n" +" --change-section-lma {=|+|-}\n" +" Change the LMA of section by \n" +" --change-section-vma {=|+|-}\n" +" Change the VMA of section by \n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" Warn if a named section does not exist\n" +" --set-section-flags =\n" +" Set section 's properties to \n" +" --add-section = Add section found in to output\n" +" --rename-section =[,] Rename section to \n" +" --change-leading-char Force output format's leading character style\n" +" --remove-leading-char Remove leading character from global symbols\n" +" --redefine-sym = Redefine symbol name to \n" +" --srec-len Restrict the length of generated Srecords\n" +" --srec-forceS3 Restrict the type of generated Srecords to S3\n" +" --strip-symbols -N for all symbols listed in \n" +" --keep-symbols -K for all symbols listed in \n" +" --localize-symbols -L for all symbols listed in \n" +" --keep-global-symbols -G for all symbols listed in \n" +" --weaken-symbols -W for all symbols listed in \n" +" --alt-machine-code Use alternate machine code for output\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +msgstr "" +" -I --input-target Asume que el fichero de entrada está en\n" +" el formato \n" +" -O --output-target Crea un fichero de salida en el formato\n" +" \n" +" -B --binary-architecture Establece la arquitectura del fichero de\n" +" salida, cuando la entrada es binaria\n" +" -F --target Establece tanto el formato de salida como\n" +" el de entrada a \n" +" --debugging Convertir la información de depuración, si\n" +" es posible\n" +" -p --preserve-dates Copiar las marcas de tiempo de modificación y\n" +" acceso a la salida\n" +" -j --only-section Sólo copiar la sección en la salida\n" +" -R --remove-section Borrar la sección de la salida\n" +" -S --strip-all Borrar todos los símbolos y la información de\n" +" reubicación\n" +" -g --strip-debug Borrar todos los símbolos de depuración\n" +" --strip-unneeded Borrar todos los símbolos innecesarios para\n" +" las reubicaciones\n" +" -N --strip-symbol No copiar el símbolo \n" +" -K --keep-symbol Sólo copiar el símbolo \n" +" -L --localize-symbol Fuerza que el símbolo se marque como local\n" +" -G --keep-global-symbol Volver locales todos los símbolos excepto \n" +" -W --weaken-symbol Fuerza que el símbolo se marque como débil\n" +" --weaken Fuerza que todos los símbolos se marquen como débiles\n" +" -x --discard-all Borra todos los símbolos que no son globales\n" +" -X --discard-locals Borra cualquier símbolo generado por el compilador\n" +" -i --interleave Sólo copia uno de cada bytes\n" +" -b --byte Selecciona el byte en cada bloque espaciado\n" +" --gap-fill Rellena los huecos entre secciones con \n" +" --pad-to Rellena la última sección hasta la dirección \n" +" --set-start Establece la dirección de inicio en \n" +" {--change-start|--adjust-start} \n" +" Agrega a la dirección de inicio\n" +" {--change-addresses|--adjust-vma} \n" +" Agrega a las direcciones LMA, VMA y la de inicio\n" +" {--change-section-address|--adjust-section-vma} {=|+|-}\n" +" Cambia el LMA y el VMA de la sección por \n" +" --change-section-lma {=|+|-}\n" +" Cambia el LMA de la sección por \n" +" --change-section-vma {=|+|-}\n" +" Cambia el VMA de la sección por \n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" Avisar si no existe una sección nombrada\n" +" --set-section-flags =\n" +" Establece las propiedades de la sección \n" +" a \n" +" --add-section =\n" +" Agrega la sección que se encuentra\n" +" en el a la salida\n" +" --rename-section =[,] Renombra la sección a \n" +" --change-leading-char Fuerza el carácter de estilo inicial en\n" +" el formato de salida\n" +" --remove-leading-char Borra el carácter inicial de los símbolos globales\n" +" --redefine-sym =\n" +" Redefine el nombre de símbolo a \n" +" --srec-len Restringe la longitud de los Srecords generados\n" +" --srec-forceS3 Restringe el tipo de los Srecords generados a S3\n" +" --strip-symbols -N para todos los símbolos enlistados en el \n" +" --keep-symbols -K para todos los símbolos enlistados en el \n" +" --localize-symbols -L para todos los símbolos enlistados en el \n" +" --keep-global-symbols -G para todos los símbolos enlistados en el ero\n" +" --weaken-symbols -W para todos los símbolos enlistados en el \n" +" --alt-machine-code <índice> Utiliza código máquina alternativo para la salida\n" +" -v --verbose Enlista todos los ficheros objeto modificados\n" +" -V --version Muestra el número de versión de este programa\n" +" -h --help Muestra esta salida\n" + +#: objcopy.c:432 +#, c-format +msgid "Usage: %s in-file(s)\n" +msgstr "Modo de empleo %s fichero(s)-entrada\n" + +#: objcopy.c:434 +msgid "" +" -I --input-target Assume input file is in format \n" +" -O --output-target Create an output file in format \n" +" -F --target Set both input and output format to \n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -R --remove-section Remove section from the output\n" +" -s --strip-all Remove all symbol and relocation information\n" +" -g -S --strip-debug Remove all debugging symbols\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol Do not copy symbol \n" +" -K --keep-symbol Only copy symbol \n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +" -o Place stripped output into \n" +msgstr "" +" -I --input-target Asume que el fichero de entrada está en\n" +" el formato \n" +" -O --output-target Crea un fichero de salida en el formato\n" +" \n" +" -F --target Establece tanto el formato de salida como\n" +" el de entrada a \n" +" -p --preserve-dates Copiar las marcas de tiempo de modificación y\n" +" acceso a la salida\n" +" -R --remove-section Borrar la sección de la salida\n" +" --strip-all Borrar todos los símbolos y la información de\n" +" reubicación\n" +" -g -S --strip-debug Borrar todos los símbolos de depuración\n" +" --strip-unneeded Borrar todos los símbolos innecesarios para\n" +" las reubicaciones\n" +" -N --strip-symbol No copiar el símbolo \n" +" -K --keep-symbol Sólo copiar el símbolo \n" +" -x --discard-all Borra todos los símbolos que no son globales\n" +" -X --discard-locals Borra cualquier símbolo generado por el compilador\n" +" -v --verbose Enlista todos los ficheros objeto modificados\n" +" -V --version Muestra el número de versión de este programa\n" +" -h --help Muestra esta salida\n" +" -o Coloca la salida limpia en el \n" + +#: objcopy.c:504 +#, c-format +msgid "unrecognized section flag `%s'" +msgstr "opción de sección `%s' desconocida" + +#: objcopy.c:505 +#, c-format +msgid "supported flags: %s" +msgstr "opciones con soporte: %s" + +#: objcopy.c:582 objcopy.c:2206 +#, c-format +msgid "cannot stat: %s: %s" +msgstr "no se puede obtener la información de stat: %s: %s" + +#: objcopy.c:589 objcopy.c:2224 +#, c-format +msgid "cannot open: %s: %s" +msgstr "no se puede abrir: %s: %s" + +#: objcopy.c:592 objcopy.c:2228 +#, c-format +msgid "%s: fread failed" +msgstr "%s: fread falló" + +#: objcopy.c:665 +#, c-format +msgid "Ignoring rubbish found on line %d of %s" +msgstr "Ignorando la basura encontrada en la línea %d de %s" + +#: objcopy.c:886 +#, c-format +msgid "%s: Multiple redefinition of symbol \"%s\"" +msgstr "%s: Redefiniciones múltiples del símbolo \"%s\"" + +#: objcopy.c:891 +#, c-format +msgid "%s: Symbol \"%s\" is target of more than one redefinition" +msgstr "%s: El símbolo \"%s\" es objetivo de más de una redefinición" + +#: objcopy.c:943 +msgid "Unable to change endianness of input file(s)" +msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada" + +#: objcopy.c:951 +#, c-format +msgid "copy from %s(%s) to %s(%s)\n" +msgstr "copiar de %s(%s) a %s(%s)\n" + +#: objcopy.c:975 +#, c-format +msgid "Warning: Output file cannot represent architecture %s" +msgstr "Aviso: El fichero de salida no puede representar a la arquitectura %s" + +#: objcopy.c:1002 +#, c-format +msgid "can't create section `%s': %s" +msgstr "no se puede crear la sección `%s' %s" + +#: objcopy.c:1088 +#, c-format +msgid "Can't fill gap after %s: %s" +msgstr "No se puede llenar el espacio después de %s: %s" + +#: objcopy.c:1113 +#, c-format +msgid "Can't add padding to %s: %s" +msgstr "No se puede agregar relleno a %s: %s" + +#: objcopy.c:1252 +#, c-format +msgid "%s: error copying private BFD data: %s" +msgstr "%s: error al copiar los datos privados BFD: %s" + +#: objcopy.c:1265 +msgid "unknown alternate machine code, ignored" +msgstr "código máquina alternativo desconocido, ignorado" + +#: objcopy.c:1295 +#, c-format +msgid "cannot mkdir %s for archive copying (error: %s)" +msgstr "no se puede crear el directorio %s para copiar el archivo (error: %s)" + +#: objcopy.c:1466 +#, c-format +msgid "Multiple renames of section %s" +msgstr "Renombrado múltiple de la sección %s" + +#: objcopy.c:1550 +msgid "making" +msgstr "haciendo" + +#: objcopy.c:1559 +msgid "size" +msgstr "tamaño" + +#: objcopy.c:1573 +msgid "vma" +msgstr "vma" + +#: objcopy.c:1599 +msgid "alignment" +msgstr "alineación" + +#: objcopy.c:1607 +msgid "flags" +msgstr "opciones" + +#: objcopy.c:1624 +msgid "private data" +msgstr "datos privados" + +#: objcopy.c:1632 +#, c-format +msgid "%s: section `%s': error in %s: %s" +msgstr "%s: sección `%s': error en %s: %s" + +#: objcopy.c:1910 +#, c-format +msgid "%s: can't create debugging section: %s" +msgstr "%s: no se puede crear la sección de depuración: %s" + +#: objcopy.c:1925 +#, c-format +msgid "%s: can't set debugging section contents: %s" +msgstr "%s: no se puede establecer el contenido de la sección de depuración: %s" + +#: objcopy.c:1934 +#, c-format +msgid "%s: don't know how to write debugging information for %s" +msgstr "%s: se ignora cómo escribir la información de depuración para %s" + +#: objcopy.c:2041 +#, c-format +msgid "%s: cannot stat: %s" +msgstr "%s: no se puede obtener la información de stat: %s" + +#: objcopy.c:2092 +msgid "byte number must be non-negative" +msgstr "el número de bytes no debe ser negativo" + +#: objcopy.c:2102 +msgid "interleave must be positive" +msgstr "el espacio debe ser positivo" + +#: objcopy.c:2122 objcopy.c:2130 +#, c-format +msgid "%s both copied and removed" +msgstr "%s copiado y borrado" + +#: objcopy.c:2203 objcopy.c:2273 objcopy.c:2373 objcopy.c:2400 objcopy.c:2424 +#: objcopy.c:2428 objcopy.c:2448 +#, c-format +msgid "bad format for %s" +msgstr "formato erróneo para %s" + +#: objcopy.c:2342 +#, c-format +msgid "Warning: truncating gap-fill from 0x%s to 0x%x" +msgstr "Aviso: truncando el relleno de espacio de 0x%s a 0x%x" + +#: objcopy.c:2494 +msgid "alternate machine code index must be positive" +msgstr "el índice de código máquina alternativo debe ser positivo" + +#: objcopy.c:2512 +msgid "byte number must be less than interleave" +msgstr "el número de bytes debe ser menor al espacio" + +#: objcopy.c:2539 +#, c-format +msgid "architecture %s unknown" +msgstr "arquitectura %s desconocida" + +#: objcopy.c:2543 +msgid "Warning: input target 'binary' required for binary architecture parameter." +msgstr "Aviso: se requiere el objetivo de entrada 'binary' para el parámeto binario de arquitectura." + +#: objcopy.c:2544 +#, c-format +msgid " Argument %s ignored" +msgstr " Se ignora el argumento %s" + +#: objcopy.c:2550 +#, c-format +msgid "Cannot stat: %s: %s" +msgstr "No se puede obtener la información de stat: %s: %s" + +#: objcopy.c:2590 objcopy.c:2604 +#, c-format +msgid "%s %s%c0x%s never used" +msgstr "%s nunca se usa %s%c0x%s" + +#: objdump.c:164 +#, c-format +msgid "Usage: %s OPTION... FILE...\n" +msgstr "Modo de empleo: %s OPCIÓN... FICHERO...\n" + +#: objdump.c:165 +msgid "Display information from object FILE.\n" +msgstr "Muestra la información del FICHERO objeto.\n" + +#: objdump.c:166 +msgid "\n At least one of the following switches must be given:\n" +msgstr "\n Por lo menos se necesita uno de los siguientes interruptores:\n" + +#: objdump.c:167 +msgid "" +" -a, --archive-headers Display archive header information\n" +" -f, --file-headers Display the contents of the overall file header\n" +" -p, --private-headers Display object format specific file header contents\n" +" -h, --[section-]headers Display the contents of the section headers\n" +" -x, --all-headers Display the contents of all headers\n" +" -d, --disassemble Display assembler contents of executable sections\n" +" -D, --disassemble-all Display assembler contents of all sections\n" +" -S, --source Intermix source code with disassembly\n" +" -s, --full-contents Display the full contents of all sections requested\n" +" -g, --debugging Display debug information in object file\n" +" -G, --stabs Display (in raw form) any STABS info in the file\n" +" -t, --syms Display the contents of the symbol table(s)\n" +" -T, --dynamic-syms Display the contents of the dynamic symbol table\n" +" -r, --reloc Display the relocation entries in the file\n" +" -R, --dynamic-reloc Display the dynamic relocation entries in the file\n" +" -V, --version Display this program's version number\n" +" -i, --info List object formats and architectures supported\n" +" -H, --help Display this information\n" +msgstr "" +" -a, --archive-headers Muestra información de los encabezados del archivo\n" +" -f, --file-headers Muestra el contenido de todos los encabezados del\n" +" fichero\n" +" -p, --private-headers Muestra el contenido de los encabezados del fichero\n" +" específicos del formato objeto\n" +" -h, --[section-]headers Muestra el contenido de los encabezados de sección\n" +" -x, --all-headers Muestra el contenido de todos los encabezados\n" +" -d, --disassemble Muestra el contenido de ensamblador de las secciones\n" +" ejecutables\n" +" -D, --disassemble-all Muestra el contenido de ensamblador de todas las\n" +" secciones\n" +" -S, --source Intermezclar código fuente con el desensamblado\n" +" -s, --full-contents Muestra el contenido completo de todas las secciones\n" +" requeridas\n" +" -g, --debugging Muestra la información de depuración en el fichero\n" +" objeto\n" +" -G, --stabs Muestra (sin formato) cualquier información de STABS\n" +" en el fichero\n" +" -t, --syms Muestra el contenido de la(s) tabla(s) de símbolos\n" +" -T, --dynamic-syms Muestra el contenido de la tabla de símbolos dinámicos\n" +" -r, --reloc Muestra las entradas de reubicación en el fichero\n" +" -R, --dynamic-reloc Muestra las entradas de reubicación dinámica en el\n" +" fichero\n" +" -V, --version Muestra el número de versión de este programa\n" +" -i, --info Enlista los formatos objeto y las arquitecturas\n" +" con soporte\n" +" -H, --help Muestra esta información\n" + +#: objdump.c:189 +msgid "\n The following switches are optional:\n" +msgstr "\n Los siguientes interruptores son opcionales:\n" + +#: objdump.c:190 +msgid "" +" -b, --target=BFDNAME Specify the target object format as BFDNAME\n" +" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n" +" -j, --section=NAME Only display information for section NAME\n" +" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n" +" -EB --endian=big Assume big endian format when disassembling\n" +" -EL --endian=little Assume little endian format when disassembling\n" +" --file-start-context Include context from start of file (with -S)\n" +" -l, --line-numbers Include line numbers and filenames in output\n" +" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n" +" The STYLE, if specified, can be `auto', 'gnu',\n" +" 'lucid', 'arm', 'hp', 'edg', or 'gnu-new-abi'\n" +" -w, --wide Format output for more than 80 columns\n" +" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n" +" --start-address=ADDR Only process data whoes address is >= ADDR\n" +" --stop-address=ADDR Only process data whoes address is <= ADDR\n" +" --prefix-addresses Print complete address alongside disassembly\n" +" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n" +" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n" +"\n" +msgstr "" +" -b, --target=NOMBREBFD Especifica el formato objeto objetivo como NOMBREBFD\n" +" -m, --architecture=MÁQUINA Especifica la arquitectura objetivo como MÁQUINA\n" +" -j, --section=NOMBRE Sólo muestra la información de la sección NOMBRE\n" +" -M, --disassembler-options=OPT Pasa el texto OPT al desensamblador\n" +" -EB --endian=big Asume el formato big endian al desensamblar\n" +" -EL --endian=little Asume el formato little endian al desensamblar\n" +" --file-start-context Incluye el contexto del inicio del fichero (con -S)\n" +" -l, --line-numbers Incluye los números de línea y los nombres de fichero\n" +" en la salida\n" +" -C, --demangle[=ESTILO] Decodifica los nombres de símbolo obtenidos/procesados\n" +" El ESTILO, si se especifica, puede ser `auto', 'gnu',\n" +" 'lucid', 'arm', 'hp', 'edg', ó 'gnu-new-abi'\n" +" -w, --wide Da formato a la salida para más de 80 columnas\n" +" -z, --disassemble-zeroes No salta los bloques de ceros al desensamblar\n" +" --start-address=DIR Sólo procesa los datos cuya dirección es >= DIR\n" +" --stop-address=DIR Sólo procesa los datos cuya dirección es <= DIR\n" +" --prefix-addresses Muestra las direcciones completas a lo largo del desensamblado\n" +" --[no-]show-raw-insn Muestra en hexadecimal a lo largo del desensamblado simbólico\n" +" --adjust-vma=DESPL Agrega el DESPLazamiento a todas las direcciones\n" +" mostradas de sección\n" +"\n" + +#: objdump.c:359 +msgid "Sections:\n" +msgstr "Secciones:\n" + +#: objdump.c:362 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin" + +#: objdump.c:364 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin" + +#: objdump.c:368 +msgid " Flags" +msgstr " Opciones" + +#: objdump.c:418 +#, c-format +msgid "%s: not a dynamic object" +msgstr "%s: no es un objeto dinámico" + +#: objdump.c:434 +#, c-format +msgid "%s: No dynamic symbols" +msgstr "%s: No hay símbolos dinámicos" + +#: objdump.c:1124 +msgid "Out of virtual memory" +msgstr "Memoria agotada" + +#: objdump.c:1553 +#, c-format +msgid "Can't use supplied machine %s" +msgstr "No se puede utilizar la máquina %s proporcionada" + +#: objdump.c:1571 +#, c-format +msgid "Can't disassemble for architecture %s\n" +msgstr "No se puede desensamblar para la arquitectura %s\n" + +#: objdump.c:1653 +#, c-format +msgid "Disassembly of section %s:\n" +msgstr "Desensamblado de la sección %s:\n" + +#: objdump.c:1828 +#, c-format +msgid "No %s section present\n\n" +msgstr "No está presente la sección %s\n\n" + +#: objdump.c:1835 +#, c-format +msgid "%s has no %s section" +msgstr "%s no tiene una sección %s" + +#: objdump.c:1849 +#, c-format +msgid "Reading %s section of %s failed: %s" +msgstr "Falló al leer la sección %s de %s: %s" + +#: objdump.c:1861 +#, c-format +msgid "Reading %s section of %s failed: %s\n" +msgstr "Falló al leer la sección %s de %s: %s\n" + +#: objdump.c:1904 +#, c-format +msgid "Contents of %s section:\n\n" +msgstr "Contenido de la sección %s:\n\n" + +#: objdump.c:2004 +#, c-format +msgid "architecture: %s, " +msgstr "arquitectura: %s, " + +#: objdump.c:2007 +#, c-format +msgid "flags 0x%08x:\n" +msgstr "opciones 0x%08x:\n" + +#: objdump.c:2020 +msgid "\nstart address 0x" +msgstr "\ndirección de inicio 0x" + +#: objdump.c:2052 +#, c-format +msgid "\n%s: file format %s\n" +msgstr "\n%s: formato del fichero %s\n" + +#: objdump.c:2094 +#, c-format +msgid "%s: printing debugging information failed" +msgstr "%s: falló al mostrar la información de depuración" + +#: objdump.c:2171 +#, c-format +msgid "In archive %s:\n" +msgstr "En el fichero %s:\n" + +#: objdump.c:2223 +#, c-format +msgid "Contents of section %s:\n" +msgstr "Contenido de la sección %s:\n" + +#: objdump.c:2736 +#, c-format +msgid "BFD header file version %s\n" +msgstr "encabezado del fichero BFD versión %s\n" + +#: objdump.c:2825 +msgid "unrecognized -E option" +msgstr "opción -E no reconocida" + +#: objdump.c:2836 +#, c-format +msgid "unrecognized --endian type `%s'" +msgstr "tipo --endian `%s' no reconocido" + +#: rdcoff.c:205 +#, c-format +msgid "parse_coff_type: Bad type code 0x%x" +msgstr "parse_coff_type: Código de tipo 0x%x erróneo" + +#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:730 +#, c-format +msgid "bfd_coff_get_syment failed: %s" +msgstr "bfd_coff_get_syment falló: %s" + +#: rdcoff.c:439 rdcoff.c:750 +#, c-format +msgid "bfd_coff_get_auxent failed: %s" +msgstr "bfd_coff_get_auxent falló: %s" + +#: rdcoff.c:817 +#, c-format +msgid "%ld: .bf without preceding function" +msgstr "%ld: .bf sin una función precedente" + +#: rdcoff.c:867 +#, c-format +msgid "%ld: unexpected .ef\n" +msgstr "%ld: .ef inesperado\n" + +#: rddbg.c:87 +#, c-format +msgid "%s: no recognized debugging information" +msgstr "%s: no se reconoce la información de depuración" + +#: rddbg.c:410 +msgid "Last stabs entries before error:\n" +msgstr "Últimas entradas stabs antes del error:\n" + +#: readelf.c:318 +#, c-format +msgid "%s: Error: " +msgstr "%s: Error: " + +#: readelf.c:329 +#, c-format +msgid "%s: Warning: " +msgstr "%s: Aviso: " + +#: readelf.c:351 +#, c-format +msgid "Unable to seek to %x for %s\n" +msgstr "No se puede buscar para %x para %s\n" + +#: readelf.c:362 +#, c-format +msgid "Out of memory allocating %d bytes for %s\n" +msgstr "Memoria agotada al asignar %d bytes para %s\n" + +#: readelf.c:370 +#, c-format +msgid "Unable to read in %d bytes of %s\n" +msgstr "No se pueden leer %d bytes de %s\n" + +#: readelf.c:423 readelf.c:581 +#, c-format +msgid "Unhandled data length: %d\n" +msgstr "Longitud de datos sin manejar: %d\n" + +#: readelf.c:660 +msgid "Don't know about relocations on this machine architecture\n" +msgstr "No se conocen las reubicaciones en esta arquitectura de máquina\n" + +#: readelf.c:682 readelf.c:711 readelf.c:757 readelf.c:784 +msgid "relocs" +msgstr "reubicaciones" + +#: readelf.c:693 readelf.c:722 readelf.c:767 readelf.c:794 +msgid "out of memory parsing relocs" +msgstr "memoria agotada al decodificar reubicaciones" + +#: readelf.c:845 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Desplaz Info Tipo Valor Símbolo Nombre Símbolo Adend\n" + +#: readelf.c:848 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Desplaz Info Tipo Valor Símbolo Nombre Símbolo\n" + +#: readelf.c:854 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Desplaz Info Tipo Valor Símbolo Nombre Símbolo Adend\n" + +#: readelf.c:857 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Desplaz Info Tipo Valor Símbolo Nombre Símbolo\n" + +#: readelf.c:1061 readelf.c:1063 +#, c-format +msgid "unrecognised: %-7lx" +msgstr "no reconocido: %-7lx" + +#: readelf.c:1085 +#, c-format +msgid "" +msgstr "<índice de la tabla de cadenas %3ld>" + +#: readelf.c:1315 +#, c-format +msgid "Processor Specific: %lx" +msgstr "Específico del Procesador: %lx" + +#: readelf.c:1334 +#, c-format +msgid "Operating System specific: %lx" +msgstr "específico del Sistema Operativo: %lx" + +#: readelf.c:1337 readelf.c:1961 +#, c-format +msgid ": %lx" +msgstr ": %lx" + +#: readelf.c:1351 +msgid "NONE (None)" +msgstr "NONE (Ninguno)" + +#: readelf.c:1352 +msgid "REL (Relocatable file)" +msgstr "REL (Fichero reubicable)" + +#: readelf.c:1353 +msgid "EXEC (Executable file)" +msgstr "EXEC (Fichero ejecutable)" + +#: readelf.c:1354 +msgid "DYN (Shared object file)" +msgstr "DYN (Fichero objeto compartido)" + +#: readelf.c:1355 +msgid "CORE (Core file)" +msgstr "CORE (Fichero núcleo)" + +#: readelf.c:1359 +#, c-format +msgid "Processor Specific: (%x)" +msgstr "Específico del Procesado: (%x)" + +#: readelf.c:1361 +#, c-format +msgid "OS Specific: (%x)" +msgstr "Específico del SO: (%x)" + +#: readelf.c:1363 readelf.c:1460 readelf.c:2112 +#, c-format +msgid ": %x" +msgstr ": %x" + +#: readelf.c:1376 +msgid "None" +msgstr "Ninguno" + +#: readelf.c:2152 +msgid "Usage: readelf {options} elf-file(s)\n" +msgstr "Modo de empleo readelf {opciones} fichero(s)-elf\n" + +#: readelf.c:2153 +msgid " Options are:\n" +msgstr " Las opciones son:\n" + +#: readelf.c:2154 +msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" +msgstr " -a ó --all Equivalente a: -h -l -S -s -r -d -V -A -I\n" + +#: readelf.c:2155 +msgid " -h or --file-header Display the ELF file header\n" +msgstr " -h ó --file-header Muestra el encabezado del fichero ELF\n" + +#: readelf.c:2156 +msgid " -l or --program-headers or --segments\n" +msgstr " -l ó --program-headers ó --segments\n" + +#: readelf.c:2157 +msgid " Display the program headers\n" +msgstr " Muestra los encabezados del programa\n" + +#: readelf.c:2158 +msgid " -S or --section-headers or --sections\n" +msgstr " -S ó --section-headers ó --sections\n" + +#: readelf.c:2159 +msgid " Display the sections' header\n" +msgstr " Muestra el encabezado de las secciones\n" + +#: readelf.c:2160 +msgid " -e or --headers Equivalent to: -h -l -S\n" +msgstr " -e ó --headers Equivalente a: -h -l -S\n" + +#: readelf.c:2161 +msgid " -s or --syms or --symbols Display the symbol table\n" +msgstr " -s ó --syms ó --symbols Muestra la tabla de símbolos\n" + +#: readelf.c:2162 +msgid " -n or --notes Display the core notes (if present)\n" +msgstr " -n ó --notes Muestra las notas de núcleo (si están presentes)\n" + +#: readelf.c:2163 +msgid " -r or --relocs Display the relocations (if present)\n" +msgstr " -r ó --relocs Muestra las reubicaciones (si están presentes)\n" + +#: readelf.c:2164 +msgid " -u or --unwind Display the unwind info (if present)\n" +msgstr " -u ó --unwind Muestra la información de desenredo (si está presente)\n" + +#: readelf.c:2165 +msgid " -d or --dynamic Display the dynamic segment (if present)\n" +msgstr " -d ó --dynamic Muestra el segmento dinámico (si está presente)\n" + +#: readelf.c:2166 +msgid " -V or --version-info Display the version sections (if present)\n" +msgstr " -V ó --version-info Muestra las secciones de versión (si están presentes)\n" + +#: readelf.c:2167 +msgid " -A or --arch-specific Display architecture specific information (if any).\n" +msgstr " -A ó --arch-specific Muestra la información específica de la arquitectura (si hay alguna).\n" + +#: readelf.c:2168 +msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" +msgstr " -D ó --use-dynamic Usa la información de la sección dinámica al mostrar los símbolos\n" + +#: readelf.c:2169 +msgid " -x or --hex-dump=\n" +msgstr " -x ó --hex-dump=\n" + +#: readelf.c:2170 +msgid " Dump the contents of section \n" +msgstr " Vuelca el contenido de la sección \n" + +#: readelf.c:2171 +msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" +msgstr " -w[liaprmfs] ó --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" + +#: readelf.c:2172 +msgid " Display the contents of DWARF2 debug sections\n" +msgstr " Muestra el contenido de las secciones de depuración DWARF2\n" + +#: readelf.c:2174 +msgid " -i or --instruction-dump=\n" +msgstr " -i ó --instruction-dump=\n" + +#: readelf.c:2175 +msgid " Disassemble the contents of section \n" +msgstr " Desensambla el contenido de la sección \n" + +#: readelf.c:2177 +msgid " -I or --histogram Display histogram of bucket list lengths\n" +msgstr " -I ó --histogram Muestra el histograma de las longitudes de la lista de cubos\n" + +#: readelf.c:2178 +msgid " -v or --version Display the version number of readelf\n" +msgstr " -v ó --version Muestra el número de versión de readelf\n" + +#: readelf.c:2179 +msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n" +msgstr " -W ó --wide No divide las líneas o trunca los símbolos para ajustarlos a 80 columnas\n" + +#: readelf.c:2180 +msgid " -H or --help Display this information\n" +msgstr " -H ó --help Muestra esta información\n" + +#: readelf.c:2198 +msgid "Out of memory allocating dump request table." +msgstr "Memoria agotada al asignar la tabla de petición de volcado." + +#: readelf.c:2357 +#, c-format +msgid "Unrecognised debug option '%s'\n" +msgstr "Opción de depuración '%s' no reconocida\n" + +#: readelf.c:2385 +#, c-format +msgid "Invalid option '-%c'\n" +msgstr "Opción '-%c' inválida\n" + +#: readelf.c:2398 +msgid "Nothing to do.\n" +msgstr "Nada por hacer.\n" + +#: readelf.c:2411 readelf.c:2428 readelf.c:4700 +msgid "none" +msgstr "ninguno" + +#: readelf.c:2415 readelf.c:2432 readelf.c:2460 +#, c-format +msgid "" +msgstr "" + +#: readelf.c:2429 +msgid "2's complement, little endian" +msgstr "complemento a 2, little endian" + +#: readelf.c:2430 +msgid "2's complement, big endian" +msgstr "complemento a 2, big endian" + +#: readelf.c:2457 +msgid "Standalone App" +msgstr "Aplicación por Sí Sola" + +#: readelf.c:2475 +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "No es un fichero ELF - tiene los bytes mágicos erróneos en el inicio\n" + +#: readelf.c:2483 +msgid "ELF Header:\n" +msgstr "Encabezado ELF:\n" + +#: readelf.c:2484 +msgid " Magic: " +msgstr " Mágico: " + +#: readelf.c:2488 +#, c-format +msgid " Class: %s\n" +msgstr " Clase: %s\n" + +#: readelf.c:2490 +#, c-format +msgid " Data: %s\n" +msgstr " Datos: %s\n" + +#: readelf.c:2492 +#, c-format +msgid " Version: %d %s\n" +msgstr " Versión: %d %s\n" + +#: readelf.c:2499 +#, c-format +msgid " OS/ABI: %s\n" +msgstr " OS/ABI: %s\n" + +#: readelf.c:2501 +#, c-format +msgid " ABI Version: %d\n" +msgstr " Versión ABI: %d\n" + +#: readelf.c:2503 +#, c-format +msgid " Type: %s\n" +msgstr " Tipo: %s\n" + +#: readelf.c:2505 +#, c-format +msgid " Machine: %s\n" +msgstr " Máquina: %s\n" + +#: readelf.c:2507 +#, c-format +msgid " Version: 0x%lx\n" +msgstr " Versión: 0x%lx\n" + +#: readelf.c:2510 +msgid " Entry point address: " +msgstr " Dirección del punto de entrada: " + +#: readelf.c:2512 +msgid "\n Start of program headers: " +msgstr "\n Inicio de encabezados de programa: " + +#: readelf.c:2514 +msgid "" +" (bytes into file)\n" +" Start of section headers: " +msgstr "" +" (bytes en el fichero)\n" +" Inicio de encabezados de sección: " + +#: readelf.c:2516 +msgid " (bytes into file)\n" +msgstr " (bytes en el fichero)\n" + +#: readelf.c:2518 +#, c-format +msgid " Flags: 0x%lx%s\n" +msgstr " Opciones: 0x%lx%s\n" + +#: readelf.c:2521 +#, c-format +msgid " Size of this header: %ld (bytes)\n" +msgstr " Tamaño de este encabezado: %ld (bytes)\n" + +#: readelf.c:2523 +#, c-format +msgid " Size of program headers: %ld (bytes)\n" +msgstr " Tamaño de encabezados de programa: %ld (bytes)\n" + +#: readelf.c:2525 +#, c-format +msgid " Number of program headers: %ld\n" +msgstr " Número de encabezados de programa: %ld\n" + +#: readelf.c:2527 +#, c-format +msgid " Size of section headers: %ld (bytes)\n" +msgstr " Tamaño de encabezados de sección: %ld (bytes)\n" + +#: readelf.c:2529 +#, c-format +msgid " Number of section headers: %ld" +msgstr " Número de encabezados de sección: %ld" + +#: readelf.c:2534 +#, c-format +msgid " Section header string table index: %ld" +msgstr " Índice de tabla de cadenas de sección de encabezado: %ld" + +#: readelf.c:2568 readelf.c:2604 +msgid "program headers" +msgstr "encabezados de programa" + +#: readelf.c:2638 +msgid "\nThere are no program headers in this file.\n" +msgstr "\nNo hay encabezados de programa en este fichero.\n" + +#: readelf.c:2644 +#, c-format +msgid "\nElf file type is %s\n" +msgstr "\nEl tipo del fichero elf es %s\n" + +#: readelf.c:2645 +msgid "Entry point " +msgstr "Punto de entrada " + +#: readelf.c:2647 +#, c-format +msgid "\nThere are %d program headers, starting at offset " +msgstr "\nHay %d encabezados de programa, empezando en el desplazamiento " + +#: readelf.c:2658 readelf.c:2883 readelf.c:2929 readelf.c:2992 readelf.c:3059 +#: readelf.c:4087 readelf.c:4130 readelf.c:4310 readelf.c:5246 readelf.c:5260 +#: readelf.c:9246 readelf.c:9286 +msgid "Out of memory\n" +msgstr "Memoria agotada\n" + +#: readelf.c:2676 +#, c-format +msgid "\nProgram Header%s:\n" +msgstr "\nEncabezado%s de Programa:\n" + +#: readelf.c:2680 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " Tipo Desplaz DirVirt DirFísica TamFich TamMem Opt Alin\n" + +#: readelf.c:2683 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " Tipo Desplaz DirVirt DirFísica TamFich TamMem Opt Alin\n" + +#: readelf.c:2687 +msgid " Type Offset VirtAddr PhysAddr\n" +msgstr " Tipo Desplazamiento DirVirtual DirFísica\n" + +#: readelf.c:2689 +msgid " FileSiz MemSiz Flags Align\n" +msgstr " TamFichero TamMemoria Opts Alineación\n" + +#: readelf.c:2789 +msgid "more than one dynamic segment\n" +msgstr "más de un segmento dinámico\n" + +#: readelf.c:2797 +msgid "Unable to find program interpreter name\n" +msgstr "No se puede encontrar el nombre del programa intérprete\n" + +#: readelf.c:2804 +#, c-format +msgid "\n [Requesting program interpreter: %s]" +msgstr "\n [Solicitando el programa intérprete: %s]" + +#: readelf.c:2822 +msgid "\n Section to Segment mapping:\n" +msgstr "\n mapeo de Sección a Segmento:\n" + +#: readelf.c:2823 +msgid " Segment Sections...\n" +msgstr " Segmento Secciones...\n" + +#: readelf.c:2874 readelf.c:2920 +msgid "section headers" +msgstr "encabezados de sección" + +#: readelf.c:2968 readelf.c:3035 +msgid "symbols" +msgstr "símbolos" + +# ¿Cómo se traduce esto? cfuga +#: readelf.c:2979 readelf.c:3046 +msgid "symtab shndx" +msgstr "symtab shndx" + +#: readelf.c:3147 +msgid "\nThere are no sections in this file.\n" +msgstr "\nNo hay secciones en este fichero.\n" + +#: readelf.c:3153 +#, c-format +msgid "There are %d section headers, starting at offset 0x%lx:\n" +msgstr "Hay %d encabezados de sección, comenzando en el desplazamiento: 0x%lx:\n" + +#: readelf.c:3170 readelf.c:3479 readelf.c:3826 readelf.c:5397 +msgid "string table" +msgstr "tabla de cadenas" + +#: readelf.c:3191 +msgid "File contains multiple dynamic symbol tables\n" +msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n" + +#: readelf.c:3203 +msgid "File contains multiple dynamic string tables\n" +msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n" + +#: readelf.c:3209 +msgid "dynamic strings" +msgstr "cadenas dinámicas" + +#: readelf.c:3215 +msgid "File contains multiple symtab shndx tables\n" +msgstr "El fichero contiene múltiples tablas symtab shndx\n" + +#: readelf.c:3250 +#, c-format +msgid "\nSection Header%s:\n" +msgstr "\nEncabezado%s de Sección:\n" + +#: readelf.c:3254 +msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" +msgstr " [Nr] Nombre Tipo Direc Desp Tam ES Opt En Inf Al\n" + +#: readelf.c:3257 +msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n" +msgstr " [Nr] Nombre Tipo Direc Desp Tam ES Opt En Inf Al\n" + +#: readelf.c:3260 +msgid " [Nr] Name Type Address Offset\n" +msgstr " [Nr] Nombre Tipo Dirección Despl\n" + +#: readelf.c:3261 +msgid " Size EntSize Flags Link Info Align\n" +msgstr " Tamaño TamEnt Opts Enl Info Alin\n" + +#: readelf.c:3356 +msgid "" +"Key to Flags:\n" +" W (write), A (alloc), X (execute), M (merge), S (strings)\n" +" I (info), L (link order), G (group), x (unknown)\n" +" O (extra OS processing required) o (OS specific), p (processor specific)\n" +msgstr "" +"Clave para Opciones:\n" +" W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n" +" I (info), L (orden enlazado), G (grupo), x (desconocido)\n" +" O (se requiere procesamiento extra del SO) o (específico del SO)\n" +" p (específico del procesador)\n" + +#: readelf.c:3417 +#, c-format +msgid "\nRelocation section at offset 0x%lx contains %ld bytes:\n" +msgstr "\nLa sección de reubicación en el desplazamiento 0x%lx contiene %ld bytes:\n" + +#: readelf.c:3424 +msgid "\nThere are no dynamic relocations in this file.\n" +msgstr "\nNo hay reubicaciones dinámicas en este fichero.\n" + +#: readelf.c:3451 +msgid "\nRelocation section " +msgstr "\nLa sección de reubicación " + +#: readelf.c:3458 readelf.c:3905 +#, c-format +msgid " at offset 0x%lx contains %lu entries:\n" +msgstr " en el desplazamiento 0x%lx contiene %lu entradas:\n" + +#: readelf.c:3496 +msgid "\nThere are no relocations in this file.\n" +msgstr "\nNo hay reubicaciones en este fichero.\n" + +#: readelf.c:3692 +msgid "unwind table" +msgstr "tabla desenredada" + +#: readelf.c:3743 readelf.c:3755 readelf.c:7608 readelf.c:7619 +#, c-format +msgid "Skipping unexpected symbol type %u\n" +msgstr "Saltando el tipo de símbolo %u inesperado\n" + +#: readelf.c:3763 +#, c-format +msgid "Skipping unexpected relocation type %s\n" +msgstr "Saltando el tipo de reubicación %s inesperado\n" + +#: readelf.c:3808 readelf.c:3833 +msgid "\nThere are no unwind sections in this file.\n" +msgstr "\nNo hay secciones de desenredo en este fichero.\n" + +#: readelf.c:3884 +msgid "\nCould not find unwind info section for " +msgstr "\nNo se puede encontrar la sección de información de desenredo para " + +#: readelf.c:3896 +msgid "unwind info" +msgstr "información de desenredo" + +#: readelf.c:3898 +msgid "\nUnwind section " +msgstr "\nSección de desenredo " + +#: readelf.c:4071 readelf.c:4114 +msgid "dynamic segment" +msgstr "segmento dinámico" + +#: readelf.c:4183 +msgid "\nThere is no dynamic segment in this file.\n" +msgstr "\nNo hay segmento dinámico en este fichero.\n" + +#: readelf.c:4217 +msgid "Unable to seek to end of file!" +msgstr "¡No se puede alcanzar el final del fichero!" + +#: readelf.c:4228 +msgid "Unable to determine the number of symbols to load\n" +msgstr "No se puede determinar el número de símbolos a cargar\n" + +#: readelf.c:4258 +msgid "Unable to seek to end of file\n" +msgstr "No se puede alcanzar el final del fichero\n" + +#: readelf.c:4264 +msgid "Unable to determine the length of the dynamic string table\n" +msgstr "No se puede determinar la longitud de la tabla dinámica de cadenas\n" + +#: readelf.c:4269 +msgid "dynamic string table" +msgstr "tabla de cadena dinámicas" + +#: readelf.c:4303 +msgid "symbol information" +msgstr "información del símbolo" + +#: readelf.c:4327 +#, c-format +msgid "\nDynamic segment at offset 0x%x contains %ld entries:\n" +msgstr "\nEl segmento dinámico en el desplazamiento 0x%x contiene %ld entradas:\n" + +#: readelf.c:4330 +msgid " Tag Type Name/Value\n" +msgstr " Marca Tipo Nombre/Valor\n" + +#: readelf.c:4366 +msgid "Auxiliary library" +msgstr "Biblioteca auxiliar" + +#: readelf.c:4370 +msgid "Filter library" +msgstr "Biblioteca de filtro" + +#: readelf.c:4374 +msgid "Configuration file" +msgstr "Fichero de configuración" + +#: readelf.c:4378 +msgid "Dependency audit library" +msgstr "Biblioteca de auditoría de dependencias" + +#: readelf.c:4382 +msgid "Audit library" +msgstr "Biblioteca de auditoría" + +#: readelf.c:4400 readelf.c:4426 readelf.c:4452 +msgid "Flags:" +msgstr "Opciones:" + +#: readelf.c:4402 readelf.c:4428 readelf.c:4454 +msgid " None\n" +msgstr " Ninguna\n" + +#: readelf.c:4573 +#, c-format +msgid "Shared library: [%s]" +msgstr "Biblioteca compartida: [%s]" + +#: readelf.c:4576 +msgid " program interpreter" +msgstr " programa intérprete" + +#: readelf.c:4580 +#, c-format +msgid "Library soname: [%s]" +msgstr "Nombre-so de la biblioteca: [%s]" + +#: readelf.c:4584 +#, c-format +msgid "Library rpath: [%s]" +msgstr "Rpath de la biblioteca: [%s]" + +#: readelf.c:4588 +#, c-format +msgid "Library runpath: [%s]" +msgstr "Ruta de ejecución de la biblioteca: [%s]" + +#: readelf.c:4649 +#, c-format +msgid "Not needed object: [%s]\n" +msgstr "Objeto innecesario: [%s]\n" + +#: readelf.c:4746 +#, c-format +msgid "\nVersion definition section '%s' contains %ld entries:\n" +msgstr "\nLa sección de definición de la versión '%s' contiene %ld entradas:\n" + +#: readelf.c:4749 +msgid " Addr: 0x" +msgstr " Dir: 0x" + +#: readelf.c:4751 readelf.c:4946 +#, c-format +msgid " Offset: %#08lx Link: %lx (%s)\n" +msgstr " Despl: %#08lx Enl: %lx (%s)\n" + +#: readelf.c:4758 +msgid "version definition section" +msgstr "sección de definición de versión" + +#: readelf.c:4784 +#, c-format +msgid " %#06x: Rev: %d Flags: %s" +msgstr " %#06x: Rev: %d Opts: %s" + +#: readelf.c:4787 +#, c-format +msgid " Index: %d Cnt: %d " +msgstr " Ind: %d Cnt: %d " + +#: readelf.c:4798 +#, c-format +msgid "Name: %s\n" +msgstr "Nombre: %s\n" + +#: readelf.c:4800 +#, c-format +msgid "Name index: %ld\n" +msgstr "Índice de nombres: %ld\n" + +#: readelf.c:4815 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr " %#06x: Padre %d: %s\n" + +#: readelf.c:4818 +#, c-format +msgid " %#06x: Parent %d, name index: %ld\n" +msgstr " %#06x: Padre %d, índice de nombres: %ld\n" + +#: readelf.c:4837 +#, c-format +msgid "\nVersion needs section '%s' contains %ld entries:\n" +msgstr "\nLa sección de requerimientos de versión '%s' contiene %ld entradas:\n" + +#: readelf.c:4840 +msgid " Addr: 0x" +msgstr " Dir: 0x" + +#: readelf.c:4842 +#, c-format +msgid " Offset: %#08lx Link to section: %ld (%s)\n" +msgstr " Despl: %#08lx Enlace a sección: %ld (%s)\n" + +#: readelf.c:4848 +msgid "version need section" +msgstr "sección de versiones necesarias" + +#: readelf.c:4870 +#, c-format +msgid " %#06x: Version: %d" +msgstr " %#06x: Versión: %d" + +#: readelf.c:4873 +#, c-format +msgid " File: %s" +msgstr " Fichero: %s" + +#: readelf.c:4875 +#, c-format +msgid " File: %lx" +msgstr " Fichero: %lx" + +#: readelf.c:4877 +#, c-format +msgid " Cnt: %d\n" +msgstr " Cnt: %d\n" + +#: readelf.c:4895 +#, c-format +msgid " %#06x: Name: %s" +msgstr " %#06x: Nombre: %s" + +#: readelf.c:4898 +#, c-format +msgid " %#06x: Name index: %lx" +msgstr " %#06x: Índice de nombres: %lx" + +#: readelf.c:4901 +#, c-format +msgid " Flags: %s Version: %d\n" +msgstr " Opts: %s Versión: %d\n" + +#: readelf.c:4937 +msgid "version string table" +msgstr "versión de tabla de cadenas" + +#: readelf.c:4941 +#, c-format +msgid "\nVersion symbols section '%s' contains %d entries:\n" +msgstr "\nLa sección de símbolos de versión '%s' contiene %d entradas:\n" + +#: readelf.c:4944 +msgid " Addr: " +msgstr " Dir: " + +#: readelf.c:4954 +msgid "version symbol data" +msgstr "datos de símbolos de versión" + +#: readelf.c:4981 +msgid " 0 (*local*) " +msgstr " 0 (*local*) " + +#: readelf.c:4985 +msgid " 1 (*global*) " +msgstr " 1 (*global*) " + +#: readelf.c:5020 readelf.c:5454 +msgid "version need" +msgstr "la versión necesita" + +#: readelf.c:5030 +msgid "version need aux (2)" +msgstr "la versión necesita aux (2)" + +#: readelf.c:5071 readelf.c:5516 +msgid "version def" +msgstr "versión definida" + +#: readelf.c:5090 readelf.c:5531 +msgid "version def aux" +msgstr "versión definida auxiliar" + +#: readelf.c:5121 +msgid "\nNo version information found in this file.\n" +msgstr "\nNo se encontró información de versión en este fichero.\n" + +#: readelf.c:5139 readelf.c:5174 +#, c-format +msgid ": %d" +msgstr " %d:" + +#: readelf.c:5141 readelf.c:5186 +#, c-format +msgid ": %d" +msgstr ": %d" + +#: readelf.c:5143 readelf.c:5189 +#, c-format +msgid ": %d" +msgstr ": %d" + +#: readelf.c:5252 +msgid "Unable to read in dynamic data\n" +msgstr "No se pueden leer los datos dinámicos\n" + +#: readelf.c:5294 +msgid "Unable to seek to start of dynamic information" +msgstr "No se puede encontrar el inicio de la información dinámica" + +#: readelf.c:5300 +msgid "Failed to read in number of buckets\n" +msgstr "Falló la lectura en el número de cubos\n" + +#: readelf.c:5306 +msgid "Failed to read in number of chains\n" +msgstr "Falló la lectura en el número de cadenas\n" + +#: readelf.c:5326 +msgid "\nSymbol table for image:\n" +msgstr "\nTabla de símbolos por imagen:\n" + +#: readelf.c:5328 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num Cub: Valor Tamaño Tipo Uni Vis Nombre Ind\n" + +#: readelf.c:5330 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num Cub: Valor Tamaño Typo Uni Vis Nombre Ind\n" + +#: readelf.c:5375 +#, c-format +msgid "\nSymbol table '%s' contains %lu entries:\n" +msgstr "\nLa tabla de símbolos '%s' contiene %lu entradas:\n" + +#: readelf.c:5379 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Valor Tam Tipo Unión Vis Nombre Ind\n" + +#: readelf.c:5381 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Valor Tam Tipo Unión Vis Nombre Ind\n" + +#: readelf.c:5427 +msgid "version data" +msgstr "datos de versión" + +#: readelf.c:5467 +msgid "version need aux (3)" +msgstr "la versión necesita aux (3)" + +#: readelf.c:5492 +msgid "bad dynamic symbol" +msgstr "símbolo dinámico erróneo" + +#: readelf.c:5554 +msgid "\nDynamic symbol information is not available for displaying symbols.\n" +msgstr "\nLa información de símbolos dinámicos no está disponible para mostrar los símbolos.\n" + +#: readelf.c:5566 +#, c-format +msgid "\nHistogram for bucket list length (total of %d buckets):\n" +msgstr "\nHistograma para la longitud de lista de cubos (total de %d cubos):\n" + +#: readelf.c:5568 +#, c-format +msgid " Length Number %% of total Coverage\n" +msgstr " Long Número %% del total Cobertura\n" + +#: readelf.c:5573 readelf.c:5592 readelf.c:8825 readelf.c:9017 +msgid "Out of memory" +msgstr "Memoria agotada" + +#: readelf.c:5641 +#, c-format +msgid "\nDynamic info segment at offset 0x%lx contains %d entries:\n" +msgstr "\nEl segmento de información dinámica en el desplazamiento 0x%lx contiene %d entradas:\n" + +#: readelf.c:5644 +msgid " Num: Name BoundTo Flags\n" +msgstr " Num: Nombre EnlaceA Opts\n" + +#: readelf.c:5696 +#, c-format +msgid "\nAssembly dump of section %s\n" +msgstr "\nVolcado ensamblador de la sección %s\n" + +#: readelf.c:5719 +#, c-format +msgid "\nSection '%s' has no data to dump.\n" +msgstr "\nLa sección '%s' no tiene datos para volcar.\n" + +#: readelf.c:5724 +#, c-format +msgid "\nHex dump of section '%s':\n" +msgstr "\nVolcado hexadecimal de la sección '%s':\n" + +#: readelf.c:5729 +msgid "section data" +msgstr "datos de sección" + +#: readelf.c:5878 +msgid "badly formed extended line op encountered!\n" +msgstr "¡se encontró un operador extendido de línea mal formado!\n" + +#: readelf.c:5885 +#, c-format +msgid " Extended opcode %d: " +msgstr " Código de operación extendido %d: " + +#: readelf.c:5890 +msgid "End of Sequence\n\n" +msgstr "Fin de la Secuencia\n\n" + +#: readelf.c:5896 +#, c-format +msgid "set Address to 0x%lx\n" +msgstr "establecer la Dirección a 0x%lx\n" + +#: readelf.c:5901 +msgid " define new File Table entry\n" +msgstr " definir la nueva entrada en la Tabla de Ficheros\n" + +#: readelf.c:5902 readelf.c:6031 +msgid " Entry\tDir\tTime\tSize\tName\n" +msgstr " Entr\tDir\tHora\tTam\tNombre\n" + +#: readelf.c:5904 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:5907 readelf.c:5909 readelf.c:5911 readelf.c:6043 readelf.c:6045 +#: readelf.c:6047 +#, c-format +msgid "%lu\t" +msgstr "%lu\t" + +#: readelf.c:5912 +#, c-format +msgid "%s\n\n" +msgstr "%s\n\n" + +#: readelf.c:5916 +#, c-format +msgid "UNKNOWN: length %d\n" +msgstr "UNKNOWN: longitud %d\n" + +#: readelf.c:5942 +#, c-format +msgid "\nDump of debug contents of section %s:\n\n" +msgstr "\nVolcado del contenido de depuración de la sección %s:\n\n" + +#: readelf.c:5954 +msgid "64-bit DWARF line info is not supported yet.\n" +msgstr "La información de línea de DWARF 64-bit aún no tiene soporte.\n" + +#: readelf.c:5961 +msgid "The line info appears to be corrupt - the section is too small\n" +msgstr "La información de línea parece estar corrupta - esta sección es demasiado pequeña\n" + +#: readelf.c:5969 +msgid "Only DWARF version 2 line info is currently supported.\n" +msgstr "Solamente la información de línea de DWARF versión 2 tiene soporte.\n" + +#: readelf.c:5984 +#, c-format +msgid " Length: %ld\n" +msgstr " Longitud: %ld\n" + +#: readelf.c:5985 +#, c-format +msgid " DWARF Version: %d\n" +msgstr " Versión DWARF: %d\n" + +#: readelf.c:5986 +#, c-format +msgid " Prologue Length: %d\n" +msgstr " Longitud del Prólogo: %d\n" + +#: readelf.c:5987 +#, c-format +msgid " Minimum Instruction Length: %d\n" +msgstr " Longitud Mínima Instrucción: %d\n" + +#: readelf.c:5988 +#, c-format +msgid " Initial value of 'is_stmt': %d\n" +msgstr " Valor inicial de 'is_stmt': %d\n" + +#: readelf.c:5989 +#, c-format +msgid " Line Base: %d\n" +msgstr " Base Línea: %d\n" + +#: readelf.c:5990 +#, c-format +msgid " Line Range: %d\n" +msgstr " Rango Lìnea: %d\n" + +#: readelf.c:5991 +#, c-format +msgid " Opcode Base: %d\n" +msgstr " Base de Código de Operación: %d\n" + +#: readelf.c:6000 +msgid "\n Opcodes:\n" +msgstr "\n Códigos de operación:\n" + +#: readelf.c:6003 +#, c-format +msgid " Opcode %d has %d args\n" +msgstr " El código de operación %d tiene %d argumentos\n" + +#: readelf.c:6009 +msgid "\n The Directory Table is empty.\n" +msgstr "\n La Tabla de Directorios está vacía.\n" + +#: readelf.c:6012 +msgid "\n The Directory Table:\n" +msgstr "\n La Tabla de Directorios:\n" + +#: readelf.c:6016 +#, c-format +msgid " %s\n" +msgstr " %s\n" + +#: readelf.c:6027 +msgid "\n The File Name Table is empty.\n" +msgstr "\n La Tabla de Nombres de Fichero está vacía.\n" + +#: readelf.c:6030 +msgid "\n The File Name Table:\n" +msgstr "\n La Tabla de Nombres de Fichero:\n" + +#: readelf.c:6038 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:6049 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#. Now display the statements. +#: readelf.c:6057 +msgid "\n Line Number Statements:\n" +msgstr "\n Declaraciones de Número de Línea:\n" + +#: readelf.c:6073 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr " código de Operación especial %d: Dirección de avance por %d a 0x%lx" + +#: readelf.c:6077 +#, c-format +msgid " and Line by %d to %d\n" +msgstr " y Línea por %d a %d\n" + +#: readelf.c:6088 +msgid " Copy\n" +msgstr " Copiar\n" + +#: readelf.c:6095 +#, c-format +msgid " Advance PC by %d to %lx\n" +msgstr " Avanzar el PC por %d para %lx\n" + +#: readelf.c:6103 +#, c-format +msgid " Advance Line by %d to %d\n" +msgstr " Línea de Avance por %d para %d\n" + +#: readelf.c:6110 +#, c-format +msgid " Set File Name to entry %d in the File Name Table\n" +msgstr " Establecer el Nombre de Fichero para la entrada %d en la Tabla de Nombres de Fichero\n" + +#: readelf.c:6118 +#, c-format +msgid " Set column to %d\n" +msgstr " Establecer la columna a %d\n" + +#: readelf.c:6125 +#, c-format +msgid " Set is_stmt to %d\n" +msgstr " Establecer is_stmt a %d\n" + +#: readelf.c:6130 +msgid " Set basic block\n" +msgstr " Establecer el bloque básico\n" + +#: readelf.c:6138 +#, c-format +msgid " Advance PC by constant %d to 0x%lx\n" +msgstr " Avanzar el PC por la constante %d a 0x%lx\n" + +#: readelf.c:6146 +#, c-format +msgid " Advance PC by fixed size amount %d to 0x%lx\n" +msgstr " Avanzar el PC por la cantidad de tamaño fijo %d a 0x%lx\n" + +#: readelf.c:6151 +msgid " Set prologue_end to true\n" +msgstr " Establecer prologue_end a true\n" + +#: readelf.c:6155 +msgid " Set epilogue_begin to true\n" +msgstr " Establecer epilogue_begin a true\n" + +#: readelf.c:6161 +#, c-format +msgid " Set ISA to %d\n" +msgstr " Establecer ISA a %d\n" + +#: readelf.c:6165 +#, c-format +msgid " Unknown opcode %d with operands: " +msgstr " Código de operación desconocido %d con los operandos: " + +#: readelf.c:6197 readelf.c:6658 readelf.c:6730 +#, c-format +msgid "Contents of the %s section:\n\n" +msgstr "Contenido de la sección %s:\n\n" + +#: readelf.c:6216 +msgid "64-bit DWARF pubnames are not supported yet.\n" +msgstr "Los nombres públicos DWARF de 64-bit no tienen soporte aún.\n" + +#: readelf.c:6226 +msgid "Only DWARF 2 pubnames are currently supported\n" +msgstr "Actualmente sólo tienen soporte los nombres públicos DWARF2\n" + +#: readelf.c:6233 +#, c-format +msgid " Length: %ld\n" +msgstr " Longitud: %ld\n" + +#: readelf.c:6235 +#, c-format +msgid " Version: %d\n" +msgstr " Versión: %d\n" + +#: readelf.c:6237 +#, c-format +msgid " Offset into .debug_info section: %ld\n" +msgstr " Desplazamiento en sección .debug_info: %ld\n" + +#: readelf.c:6239 +#, c-format +msgid " Size of area in .debug_info section: %ld\n" +msgstr " Tamaño de área en sección .debug_info: %ld\n" + +#: readelf.c:6242 +msgid "\n Offset\tName\n" +msgstr "\n Desplazamiento\tNombre\n" + +#: readelf.c:6333 +#, c-format +msgid "Unknown TAG value: %lx" +msgstr "Valor TAG desconocido: %lx" + +#: readelf.c:6443 +#, c-format +msgid "Unknown AT value: %lx" +msgstr "Valor AT desconocido: %lx" + +#: readelf.c:6480 +#, c-format +msgid "Unknown FORM value: %lx" +msgstr "Valor FORM desconocido: %lx" + +#: readelf.c:6679 +#, c-format +msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" +msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n" + +#: readelf.c:6684 +msgid " DW_MACINFO_end_file\n" +msgstr " DW_MACINFO_end_file\n" + +#: readelf.c:6692 +#, c-format +msgid " DW_MACINFO_define - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n" + +#: readelf.c:6700 +#, c-format +msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n" + +#: readelf.c:6711 +#, c-format +msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" +msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n" + +#: readelf.c:6739 +msgid " Number TAG\n" +msgstr " Número TAG\n" + +#: readelf.c:6745 +#, c-format +msgid " %ld %s [%s]\n" +msgstr " %ld %s [%s]\n" + +#: readelf.c:6748 +msgid "has children" +msgstr "tiene hijos" + +#: readelf.c:6748 +msgid "no children" +msgstr "sin hijos" + +#: readelf.c:6752 +#, c-format +msgid " %-18s %s\n" +msgstr " %-18s %s\n" + +#: readelf.c:6773 +#, c-format +msgid " %lu byte block: " +msgstr " bloque de bytes %lu: " + +#: readelf.c:7096 +msgid "(User defined location op)" +msgstr "(Operador de ubicación definido por el usuario)" + +#: readelf.c:7098 +msgid "(Unknown location op)" +msgstr "(Operador de ubicación desconocido)" + +#: readelf.c:7137 +msgid "debug_str section data" +msgstr "sección de datos debug_str" + +#: readelf.c:7156 +msgid "" +msgstr "" + +#: readelf.c:7159 +msgid "" +msgstr "" + +#: readelf.c:7179 +msgid "\nThe .debug_str section is empty.\n" +msgstr "\nLa sección .debug_str está vacía.\n" + +#: readelf.c:7183 +msgid "Contents of the .debug_str section:\n\n" +msgstr "Contenido de la sección .debug_str:\n\n" + +#: readelf.c:7354 +#, c-format +msgid " (indirect string, offset: 0x%lx): " +msgstr " (cadena indirecta, desplazamiento 0x%lx): " + +#: readelf.c:7363 +#, c-format +msgid "Unrecognised form: %d\n" +msgstr "Form no reconocido: %d\n" + +#: readelf.c:7376 +msgid "(not inlined)" +msgstr "(no es inlined)" + +#: readelf.c:7377 +msgid "(inlined)" +msgstr "(inlined)" + +#: readelf.c:7378 +msgid "(declared as inline but ignored)" +msgstr "(declarado como inline pero ignorado)" + +#: readelf.c:7379 +msgid "(declared as inline and inlined)" +msgstr "(declarado como inline y es inline)" + +#: readelf.c:7380 +#, c-format +msgid " (Unknown inline attribute value: %lx)" +msgstr " (Valor desconocido de atributo inline: %lx)" + +#: readelf.c:7545 readelf.c:7746 +#, c-format +msgid "The section %s contains:\n\n" +msgstr "La sección %s contiene:\n\n" + +#: readelf.c:7568 +msgid "64-bit DWARF debug info is not supported yet.\n" +msgstr "La información de depuración DWARF 64-bit aún no tiene soporte.\n" + +#: readelf.c:7637 +#, c-format +msgid " Compilation Unit @ %lx:\n" +msgstr " Unidad de Compilación @ %lx:\n" + +#: readelf.c:7638 +#, c-format +msgid " Length: %ld\n" +msgstr " Longitud: %ld\n" + +#: readelf.c:7639 +#, c-format +msgid " Version: %d\n" +msgstr " Versión: %d\n" + +#: readelf.c:7640 +#, c-format +msgid " Abbrev Offset: %ld\n" +msgstr " Desplaz Abrev: %ld\n" + +#: readelf.c:7641 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " Tamaño de Apuntador: %d\n" + +#: readelf.c:7645 +msgid "Only version 2 DWARF debug information is currently supported.\n" +msgstr "Sólo la información de depuración DWARF versión 2 tiene soporte actualmente.\n" + +#: readelf.c:7666 +msgid "Unable to locate .debug_abbrev section!\n" +msgstr "¡No se puede localizar la sección .debug_abbrev!\n" + +#: readelf.c:7672 +msgid "debug_abbrev section data" +msgstr "sección de datos debug_abbrev" + +#: readelf.c:7709 +#, c-format +msgid "Unable to locate entry %lu in the abbreviation table\n" +msgstr "No se puede localizar la entrada %lu en la tabla de abreviaciones\n" + +#: readelf.c:7714 +#, c-format +msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" +msgstr " <%d><%lx>: Número de Abrev: %lu (%s)\n" + +#: readelf.c:7767 +msgid "64-bit DWARF aranges are not supported yet.\n" +msgstr "Los rangos-a de DWARF 64-bit aún no tienen soporte.\n" + +#: readelf.c:7773 +msgid "Only DWARF 2 aranges are currently supported.\n" +msgstr "Sólo los rangos-a de DWARF2 tienen soporte actualmente.\n" + +#: readelf.c:7777 +#, c-format +msgid " Length: %ld\n" +msgstr " Longitud: %ld\n" + +#: readelf.c:7778 +#, c-format +msgid " Version: %d\n" +msgstr " Versión: %d\n" + +#: readelf.c:7779 +#, c-format +msgid " Offset into .debug_info: %lx\n" +msgstr " Desplaz. en .debug_info: %lx\n" + +#: readelf.c:7780 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " Tamaño del Apuntador: %d\n" + +#: readelf.c:7781 +#, c-format +msgid " Segment Size: %d\n" +msgstr " Tamaño del Segmento: %d\n" + +#: readelf.c:7783 +msgid "\n Address Length\n" +msgstr "\n Longitud de la Dirección\n" + +#: readelf.c:7965 +#, c-format +msgid "The section %s contains:\n" +msgstr "La sección %s contiene:\n" + +#: readelf.c:7988 +msgid "64-bit DWARF format frames are not supported yet.\n" +msgstr "Los marcos de formato de DWARF 64-bit aú no tienen soporte.\n" + +#: readelf.c:8499 +#, c-format +msgid "Displaying the debug contents of section %s is not yet supported.\n" +msgstr "Aún no tiene soporte el mostrar el contenido de depuración de la sección %s.\n" + +#: readelf.c:8565 +#, c-format +msgid "\nSection '%s' has no debugging data.\n" +msgstr "\nLa sección '%s' no tiene datos de depuración.\n" + +#: readelf.c:8570 readelf.c:8632 +msgid "debug section data" +msgstr "sección de datos de depuración" + +#: readelf.c:8586 +#, c-format +msgid "Unrecognised debug section: %s\n" +msgstr "Sección de depuración no reconocida: %s\n" + +#: readelf.c:8660 +msgid "Some sections were not dumped because they do not exist!\n" +msgstr "¡Algunas secciones no se volcaron porque no existen!\n" + +#: readelf.c:8733 +msgid "liblist" +msgstr "lista de bibliotecas" + +#: readelf.c:8818 +msgid "options" +msgstr "opciones" + +#: readelf.c:8849 +#, c-format +msgid "\nSection '%s' contains %d entries:\n" +msgstr "\nLa sección '%s' contiene %d entradas:\n" + +#: readelf.c:9010 +msgid "conflict list with without table" +msgstr "lista de conflictos con sin tabla" + +#: readelf.c:9028 readelf.c:9044 +msgid "conflict" +msgstr "tiene conflictos con" + +#: readelf.c:9054 +#, c-format +msgid "\nSection '.conflict' contains %ld entries:\n" +msgstr "\nLa sección '.conflict' contiene %ld entradas:\n" + +#: readelf.c:9056 +msgid " Num: Index Value Name" +msgstr " Num: Índice Valor Nombre" + +#: readelf.c:9083 +msgid "NT_PRSTATUS (prstatus structure)" +msgstr "NT_PRSTATUS (estructura prstatus)" + +#: readelf.c:9084 +msgid "NT_FPREGSET (floating point registers)" +msgstr "NT_FPREGSET (registros de coma flotante)" + +#: readelf.c:9085 +msgid "NT_PRPSINFO (prpsinfo structure)" +msgstr "NT_PRPSINFO (estructura prpsinfo)" + +#: readelf.c:9086 +msgid "NT_TASKSTRUCT (task structure)" +msgstr "NT_TASKSTRUCT (estructura task)" + +#: readelf.c:9087 +msgid "NT_PRXFPREG (user_xfpregs structure)" +msgstr "NT_PRXFPREG (estructura user_xfpregs)" + +#: readelf.c:9088 +msgid "NT_PSTATUS (pstatus structure)" +msgstr "NT_PSTATUS (estructura pstatus)" + +#: readelf.c:9089 +msgid "NT_FPREGS (floating point registers)" +msgstr "NT_FPREGS (registros de coma flotante)" + +#: readelf.c:9090 +msgid "NT_PSINFO (psinfo structure)" +msgstr "NT_PSINFO (estructura psinfo)" + +#: readelf.c:9091 +msgid "NT_LWPSTATUS (lwpstatus_t structure)" +msgstr "NT_LWPSTATUS (estructura lwpstatus_t)" + +#: readelf.c:9092 +msgid "NT_LWPSINFO (lwpsinfo_t structure)" +msgstr "NT_LWPSINFO (estructura lwpsinfo_t)" + +#: readelf.c:9093 +msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" +msgstr "NT_WIN32PSTATUS (estructura win32_pstatus)" + +#: readelf.c:9095 readelf.c:9119 +#, c-format +msgid "Unknown note type: (0x%08x)" +msgstr "Tipo de nota desconocido: (0x%08x)" + +#. NetBSD core "procinfo" structure. +#: readelf.c:9109 +msgid "NetBSD procinfo structure" +msgstr "estructura procinfo de NetBSD" + +#: readelf.c:9136 readelf.c:9150 +msgid "PT_GETREGS (reg structure)" +msgstr "PT_GETREGS (estructura reg)" + +#: readelf.c:9138 readelf.c:9152 +msgid "PT_GETFPREGS (fpreg structure)" +msgstr "PT_GETFPREGS (estructura fpreg)" + +#: readelf.c:9158 +#, c-format +msgid "PT_FIRSTMACH+%d" +msgstr "PT_FIRSTMACH+%d" + +#: readelf.c:9212 +msgid "notes" +msgstr "notas" + +#: readelf.c:9218 +#, c-format +msgid "\nNotes at offset 0x%08lx with length 0x%08lx:\n" +msgstr "\nNotas en el desplazamiento 0x%08lx con longitud 0x%08lx:\n" + +#: readelf.c:9220 +msgid " Owner\t\tData size\tDescription\n" +msgstr " Prop\t\tTamaño datos\tDescripción\n" + +#: readelf.c:9331 +msgid "No note segments present in the core file.\n" +msgstr "No hay segmentos de notas presentes el el fichero core.\n" + +#: readelf.c:9409 +msgid "" +"This instance of readelf has been built without support for a\n" +"64 bit data type and so it cannot read 64 bit ELF files.\n" +msgstr "" +"Esta instancia de readelf ha sido construida sin soporte para un\n" +"tipo de datos de 64 bit y por eso no puede leer ficheros ELF de 64 bit.\n" + +#: readelf.c:9452 +#, c-format +msgid "Cannot stat input file %s.\n" +msgstr "No se puede obtener la información stat del fichero de entrada %s.\n" + +#: readelf.c:9459 +#, c-format +msgid "Input file %s not found.\n" +msgstr "No se encuentra el fichero de entrada %s.\n" + +#: readelf.c:9465 +#, c-format +msgid "%s: Failed to read file header\n" +msgstr "%s: Falló al leer el encabezado del fichero\n" + +#: readelf.c:9479 +#, c-format +msgid "\nFile: %s\n" +msgstr "\nFichero: %s\n" + +#: rename.c:131 +#, c-format +msgid "%s: cannot set time: %s" +msgstr "%s: no se puede establecer la hora: %s" + +#. We have to clean up here. +#: rename.c:170 rename.c:203 +#, c-format +msgid "%s: rename: %s" +msgstr "%s: rename: %s" + +#: rename.c:211 +#, c-format +msgid "%s: simple_copy: %s" +msgstr "%s: simple_copy: %s" + +#: resbin.c:130 +#, c-format +msgid "%s: not enough binary data" +msgstr "%s: no hay suficientes datos binarios" + +#: resbin.c:149 +msgid "null terminated unicode string" +msgstr "cadena unicode terminada en null" + +#: resbin.c:179 resbin.c:185 +msgid "resource ID" +msgstr "ID de recurso" + +#: resbin.c:229 +msgid "cursor" +msgstr "cursor" + +#: resbin.c:263 resbin.c:270 +msgid "menu header" +msgstr "encabezado de menú" + +#: resbin.c:280 +msgid "menuex header" +msgstr "encabezado de menuex" + +#: resbin.c:284 +msgid "menuex offset" +msgstr "desplazamiento de menuex" + +#: resbin.c:291 +#, c-format +msgid "unsupported menu version %d" +msgstr "versión de menú %d sin soporte" + +#: resbin.c:319 resbin.c:334 resbin.c:400 +msgid "menuitem header" +msgstr "encabezado de elemento de menú" + +#: resbin.c:430 +msgid "menuitem" +msgstr "elemento de menú" + +#: resbin.c:471 resbin.c:499 +msgid "dialog header" +msgstr "encabezado de diálogo" + +#: resbin.c:489 +#, c-format +msgid "unexpected dialog signature %d" +msgstr "firma de diálogo %d inesperada" + +#: resbin.c:531 +msgid "dialog font point size" +msgstr "tamaño de punto de la tipografía del diálogo" + +#: resbin.c:539 +msgid "dialogex font information" +msgstr "información de tipografía del dialogex" + +#: resbin.c:564 resbin.c:582 +msgid "dialog control" +msgstr "control del diálogo" + +#: resbin.c:574 +msgid "dialogex control" +msgstr "control del dialogex" + +#: resbin.c:603 +msgid "dialog control end" +msgstr "fin del control del diálogo" + +#: resbin.c:615 +msgid "dialog control data" +msgstr "datos de control del diálogo" + +#: resbin.c:658 +msgid "stringtable string length" +msgstr "longitud de la cadena stringtable" + +#: resbin.c:668 +msgid "stringtable string" +msgstr "cadena stringtable" + +#: resbin.c:701 +msgid "fontdir header" +msgstr "encabezado fontdir" + +#: resbin.c:714 +msgid "fontdir" +msgstr "fontdir" + +#: resbin.c:730 +msgid "fontdir device name" +msgstr "nombre de dispositivo fontdir" + +#: resbin.c:736 +msgid "fontdir face name" +msgstr "nombre de rostro fontdir" + +#: resbin.c:779 +msgid "accelerator" +msgstr "acelerador" + +#: resbin.c:843 +msgid "group cursor header" +msgstr "encabezado de grupo de cursores" + +#: resbin.c:847 +#, c-format +msgid "unexpected group cursor type %d" +msgstr "tipo de grupo de cursores %d inesperado" + +#: resbin.c:862 +msgid "group cursor" +msgstr "grupo de cursores" + +#: resbin.c:901 +msgid "group icon header" +msgstr "encabezado de grupo de iconos" + +#: resbin.c:905 +#, c-format +msgid "unexpected group icon type %d" +msgstr "tipo de grupo de iconos %d inesperado" + +#: resbin.c:920 +msgid "group icon" +msgstr "grupo de iconos" + +#: resbin.c:991 resbin.c:1210 +msgid "unexpected version string" +msgstr "cadena de versión inesperada" + +#: resbin.c:1025 +#, c-format +msgid "version length %d does not match resource length %lu" +msgstr "la longitud de la versión %d no coincide con la longitud del recurso %lu" + +#: resbin.c:1029 +#, c-format +msgid "unexpected version type %d" +msgstr "tipo de versión %d inesperada" + +#: resbin.c:1041 +#, c-format +msgid "unexpected fixed version information length %d" +msgstr "longitud de la información de versión fija %d inesperada" + +#: resbin.c:1044 +msgid "fixed version info" +msgstr "información de versión fija" + +#: resbin.c:1048 +#, c-format +msgid "unexpected fixed version signature %lu" +msgstr "firma de versión fija %lu inesperada" + +#: resbin.c:1052 +#, c-format +msgid "unexpected fixed version info version %lu" +msgstr "información de versión de versión fija %lu inesperada" + +#: resbin.c:1081 +msgid "version var info" +msgstr "información de versión variable" + +#: resbin.c:1098 +#, c-format +msgid "unexpected stringfileinfo value length %d" +msgstr "longitud del valor stringfileinfo %d inesperada" + +#: resbin.c:1108 +#, c-format +msgid "unexpected version stringtable value length %d" +msgstr "valor de longitud de versión stringtable %d inesperada" + +#: resbin.c:1142 +#, c-format +msgid "unexpected version string length %d != %d + %d" +msgstr "longitud de cadena de versión %d != %d + %d inesperada" + +#: resbin.c:1153 +#, c-format +msgid "unexpected version string length %d < %d" +msgstr "longitud de cadena de versión %d < %d inesperada" + +#: resbin.c:1170 +#, c-format +msgid "unexpected varfileinfo value length %d" +msgstr "longitud de valor varfileinfo %d inesperada" + +#: resbin.c:1189 +msgid "version varfileinfo" +msgstr "versión varfileinfo" + +#: resbin.c:1204 +#, c-format +msgid "unexpected version value length %d" +msgstr "longitud de valor de versión %d inesperada" + +#: rescoff.c:128 +msgid "filename required for COFF input" +msgstr "se requiere un nombre de fichero para la entrada COFF" + +#: rescoff.c:145 +#, c-format +msgid "%s: no resource section" +msgstr "%s: no hay sección de recursos" + +#: rescoff.c:152 +msgid "can't read resource section" +msgstr "no se puede leer la sección de recursos" + +#: rescoff.c:178 +#, c-format +msgid "%s: %s: address out of bounds" +msgstr "%s: %s: dirección fuera de los límites" + +#: rescoff.c:197 +msgid "directory" +msgstr "directorio" + +#: rescoff.c:225 +msgid "named directory entry" +msgstr "entrada nombrada de directorio" + +#: rescoff.c:234 +msgid "directory entry name" +msgstr "nombre de entrada de directorio" + +#: rescoff.c:254 +msgid "named subdirectory" +msgstr "subdirectorio nombrado" + +#: rescoff.c:262 +msgid "named resource" +msgstr "recurso nombrado" + +#: rescoff.c:277 +msgid "ID directory entry" +msgstr "entrada de ID de directorio" + +#: rescoff.c:294 +msgid "ID subdirectory" +msgstr "ID de subdirectorio" + +#: rescoff.c:302 +msgid "ID resource" +msgstr "ID de recurso" + +#: rescoff.c:328 +msgid "resource type unknown" +msgstr "tipo de recurso desconocido" + +#: rescoff.c:331 +msgid "data entry" +msgstr "entrada de datos" + +#: rescoff.c:339 +msgid "resource data" +msgstr "datos de recursos" + +#: rescoff.c:344 +msgid "resource data size" +msgstr "tamaño de datos de recursos" + +#: rescoff.c:439 +msgid "filename required for COFF output" +msgstr "se requiere un nombre de fichero para la salida COFF" + +#: rescoff.c:738 +msgid "can't get BFD_RELOC_RVA relocation type" +msgstr "no se puede obtener el tipo de reubicación BFD_RELOC_RVA" + +#: resrc.c:240 resrc.c:312 +#, c-format +msgid "can't open temporary file `%s': %s" +msgstr "no se puede abrir el fichero temporal `%s': %s" + +#: resrc.c:246 +#, c-format +msgid "can't redirect stdout: `%s': %s" +msgstr "no se puede redirigir la salida estándar: `%s': %s" + +#: resrc.c:262 +#, c-format +msgid "%s %s: %s" +msgstr "%s %s: %s" + +#: resrc.c:308 +#, c-format +msgid "can't execute `%s': %s" +msgstr "no se puede ejecutar `%s': %s" + +#: resrc.c:317 +#, c-format +msgid "Using temporary file `%s' to read preprocessor output\n" +msgstr "Utilizando el fichero temporal `%s' para leer la salida del preprocesador\n" + +#: resrc.c:324 +#, c-format +msgid "can't popen `%s': %s" +msgstr "no se puede hacer popen de `%s': %s" + +#: resrc.c:326 +msgid "Using popen to read preprocessor output\n" +msgstr "Utilizando popen para leer la salida del preprocesador\n" + +#: resrc.c:369 +#, c-format +msgid "Tried `%s'\n" +msgstr "Se intentó `%s'\n" + +#: resrc.c:380 +#, c-format +msgid "Using `%s'\n" +msgstr "Utilizando `%s'\n" + +#: resrc.c:541 +#, c-format +msgid "%s:%d: %s\n" +msgstr "%s:%d: %s\n" + +#: resrc.c:550 +#, c-format +msgid "%s: unexpected EOF" +msgstr "%s: fin de fichero inesperado" + +#: resrc.c:607 +#, c-format +msgid "%s: read of %lu returned %lu" +msgstr "%s: la lectura de %lu devolvió %lu" + +#: resrc.c:649 resrc.c:903 resrc.c:1176 resrc.c:1330 +#, c-format +msgid "stat failed on bitmap file `%s': %s" +msgstr "stat falló en el fichero bitmap `%s': %s" + +#: resrc.c:702 +#, c-format +msgid "cursor file `%s' does not contain cursor data" +msgstr "el fichero de cursor `%s' no contiene datos de cursor" + +#: resrc.c:734 resrc.c:1047 +#, c-format +msgid "%s: fseek to %lu failed: %s" +msgstr "%s: falló fseek para %lu: %s" + +#: resrc.c:871 +msgid "help ID requires DIALOGEX" +msgstr "el ID de ayuda requiere DIALOGEX" + +#: resrc.c:873 +msgid "control data requires DIALOGEX" +msgstr "los datos de control requieren DIALOGEX" + +#: resrc.c:1016 +#, c-format +msgid "icon file `%s' does not contain icon data" +msgstr "el fichero de icono `%s' no contiene datos de icono" + +#: resrc.c:1535 +#, c-format +msgid "can't open `%s' for output: %s" +msgstr "no se puede abrir `%s' para salida: %s" + +#: size.c:79 +#, c-format +msgid "" +"Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n" +" [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n" +" [-V | --version] [--target=bfdname] [--help] [file...]\n" +msgstr "" +"Modo de empleo: %s [-A | --format=sysv | -B | --format=berkeley]\n" +" [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n" +" [-V | --version] [--target=nombrebfd] [--help] [fichero...]\n" + +#: size.c:85 +msgid "default is --format=berkeley\n" +msgstr "por omisión es --format=berkeley\n" + +#: size.c:87 +msgid "default is --format=sysv\n" +msgstr "por omisión es --format=sysv\n" + +#: size.c:146 +#, c-format +msgid "invalid argument to --format: %s" +msgstr "argumento inválido para --format: %s" + +#: size.c:173 +#, c-format +msgid "Invalid radix: %s\n" +msgstr "Radical inválido: %s\n" + +#: srconv.c:1931 +#, c-format +msgid "Usage: %s [-dhVq] in-file [out-file]\n" +msgstr "Modo de empleo: %s [-dhVq] fichero-entrada [fichero-salida]\n" + +#: srconv.c:1938 +#, c-format +msgid "%s: Convert a COFF object file into a SYSROFF object file\n" +msgstr "%s: Convierte un fichero objeto COFF a un fichero objeto SYSROFF\n" + +#: srconv.c:2074 +#, c-format +msgid "unable to open output file %s" +msgstr "no se puede abrir el fichero de salida %s" + +#: stabs.c:343 stabs.c:1760 +msgid "numeric overflow" +msgstr "desbordamiento numérico" + +#: stabs.c:354 +#, c-format +msgid "Bad stab: %s\n" +msgstr "Stab erróneo: %s\n" + +#: stabs.c:364 +#, c-format +msgid "Warning: %s: %s\n" +msgstr "Aviso: %s: %s\n" + +#: stabs.c:486 +msgid "N_LBRAC not within function\n" +msgstr "N_LBRAC no está dentro de una función\n" + +#: stabs.c:525 +msgid "Too many N_RBRACs\n" +msgstr "Demasiados N_RBRACs\n" + +#: stabs.c:770 +msgid "unknown C++ encoded name" +msgstr "nombre C++ codificado desconocido" + +#. Complain and keep going, so compilers can invent new +#. cross-reference types. +#: stabs.c:1297 +msgid "unrecognized cross reference type" +msgstr "tipo de referencia cruzada no reconocido" + +#. Does this actually ever happen? Is that why we are worrying +#. about dealing with it rather than just calling error_type? +#: stabs.c:1852 +msgid "missing index type" +msgstr "tipo de índice desconocido" + +#: stabs.c:2179 +msgid "unknown virtual character for baseclass" +msgstr "carácter virtual desconocido para la clase base" + +#: stabs.c:2197 +msgid "unknown visibility character for baseclass" +msgstr "carácter de visibilidad desconocido para la clase base" + +#: stabs.c:2389 +msgid "unnamed $vb type" +msgstr "tipo $vb sin nombre" + +#: stabs.c:2395 +msgid "unrecognized C++ abbreviation" +msgstr "abreviación C++ no reconocida" + +#: stabs.c:2475 +msgid "unknown visibility character for field" +msgstr "carácter de visibilidad desconocido para el campo" + +#: stabs.c:2731 +msgid "const/volatile indicator missing" +msgstr "falta el indicador const/volatile" + +#: stabs.c:2971 +#, c-format +msgid "No mangling for \"%s\"\n" +msgstr "No hay desenredo para \"%s\"\n" + +#: stabs.c:3284 +msgid "Undefined N_EXCL" +msgstr "N_EXCL indefinido" + +#: stabs.c:3372 +#, c-format +msgid "Type file number %d out of range\n" +msgstr "Número de tipo de fichero %d fuera de rango\n" + +#: stabs.c:3377 +#, c-format +msgid "Type index number %d out of range\n" +msgstr "Número de tipo de índice %d fuera de rango\n" + +#: stabs.c:3464 +#, c-format +msgid "Unrecognized XCOFF type %d\n" +msgstr "Tipo XCOFF %d no reconocido\n" + +#: stabs.c:3763 +#, c-format +msgid "bad mangled name `%s'\n" +msgstr "nombre desenredado erróneamente `%s'\n" + +#: stabs.c:3859 +msgid "no argument types in mangled string\n" +msgstr "no hay tipos de argumento en la cadena desenredada\n" + +#: strings.c:199 +#, c-format +msgid "invalid number %s" +msgstr "número %s inválido" + +#: strings.c:638 +#, c-format +msgid "invalid integer argument %s" +msgstr "argumento entero %s inválido" + +#: strings.c:648 +#, c-format +msgid "" +"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n" +msgstr "" +"Modo de empleo: %s [-afov] [-n long-min] [-long-min] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=long-min] [--radix={o,x,d}]\n" +" [--target=nombrebfd] [--encoding {s,b,l,B,L}] [--help] [--version] fichero...\n" + +#: sysdump.c:733 +#, c-format +msgid "Usage: %s [-hV] in-file\n" +msgstr "Modo de empleo: %s [-hV] fichero-entrada\n" + +#: sysdump.c:805 +#, c-format +msgid "cannot open input file %s" +msgstr "no se puede abrir el ficheor de entrada %s" + +#: version.c:35 +msgid "Copyright 2001 Free Software Foundation, Inc.\n" +msgstr "Copyright 2001 Free Software Foundation, Inc.\n" + +#: version.c:36 +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 "" +"Este programa es software libre; se puede redistribuir bajo los términos de\n" +"la Licencia Pública General de GNU. Este programa no tiene ninguna garantía.\n" + +#: windres.c:237 +#, c-format +msgid "can't open %s `%s': %s" +msgstr "no se puede abrir %s `%s': %s" + +#: windres.c:416 +msgid ": expected to be a directory\n" +msgstr ": se esperaba que fuera un directorio\n" + +#: windres.c:428 +msgid ": expected to be a leaf\n" +msgstr ": se esperaba que fuera una hoja\n" + +#: windres.c:437 +#, c-format +msgid "%s: warning: " +msgstr "%s: aviso: " + +#: windres.c:439 +msgid ": duplicate value\n" +msgstr ": valor duplicado\n" + +#: windres.c:602 +#, c-format +msgid "unknown format type `%s'" +msgstr "tipo de formato `%s' desconocido" + +#: windres.c:603 +#, c-format +msgid "%s: supported formats:" +msgstr "%s: formatos con soporte:" + +#. Otherwise, we give up. +#: windres.c:690 +#, c-format +msgid "can not determine type of file `%s'; use the -I option" +msgstr "no se puede determinar el tipo del fichero `%s'; use la opción -I" + +#: windres.c:704 +#, c-format +msgid "Usage: %s [options] [input-file] [output-file]\n" +msgstr "Modo de empleo: %s [opciones] [fichero-entrada] [fichero-salida]\n" + +#: windres.c:706 +msgid "" +"Options:\n" +" -i FILE, --input FILE Name input file\n" +" -o FILE, --output FILE Name output file\n" +" -I FORMAT, --input-format FORMAT\n" +" Specify input format\n" +" -O FORMAT, --output-format FORMAT\n" +" Specify output format\n" +" -F TARGET, --target TARGET Specify COFF target\n" +" --preprocessor PROGRAM Program to use to preprocess rc file\n" +" --include-dir DIR Include directory when preprocessing rc file\n" +" -DSYM[=VAL], --define SYM[=VAL]\n" +" Define SYM when preprocessing rc file\n" +" -v Verbose - tells you what it's doing\n" +" --language VAL Set language when reading rc file\n" +" --use-temp-file Use a temporary file instead of popen to read\n" +" the preprocessor output\n" +" --no-use-temp-file Use popen (default)\n" +msgstr "" +"Opciones:\n" +" -i FICHERO, --input FICHERO Nombra el fichero de entrada\n" +" -o FICHERO, --output FICHERO Nombra el fichero de salida\n" +" -I FORMATO, --input-format FORMATO\n" +" Especifica el formato de entrada\n" +" -O FORMATO, --output-format FORMATO\n" +" Especifica el formato de salida\n" +" -F TARGET, --target TARGET Especifica el objetivo COFF\n" +" --preprocessor PROGRAMA Programa a utilizar para preprocesar el fichero rc\n" +" --include-dir DIR Incluye el directorio al preprocesar el fichero rc\n" +" -DSIM[=VAL], --define SIM[=VAL]\n" +" Define SIM al preprocesar el fichero rc\n" +" -v Detallado - dice lo que está haciendo\n" +" --language VAL Establece el lenguaje al leer el fichero rc\n" +" --use-temp-file Usa un fichero temporal en lugar de popen para\n" +" leer la salida del preprocesador\n" +" --no-use-temp-file Usa popen (por omisión)\n" + +#: windres.c:725 +msgid " --yydebug Turn on parser debugging\n" +msgstr " --yydebug Activa el decodificador de depuración\n" + +#: windres.c:728 +msgid "" +" --help Print this help message\n" +" --version Print version information\n" +msgstr "" +" --help Muestra este mensaje de ayuda\n" +" --version Muestra la información de versión\n" + +#: windres.c:731 +msgid "" +"FORMAT is one of rc, res, or coff, and is deduced from the file name\n" +"extension if not specified. A single file name is an input file.\n" +"No input-file is stdin, default rc. No output-file is stdout, default rc.\n" +msgstr "" +"El FORMATO es uno de rc, res, o coff, y se deduce de la extensión del nombre\n" +"de fichero si no se especifica. Un solo nombre de fichero es un fichero de\n" +"entrada. Sin fichero de entrada es la entrada estándar, por omisión rc.\n" +"Sin fichero de salida es la salida estándar, por omisión rc.\n" + +#: windres.c:983 +msgid "no resources" +msgstr "no hay recursos" + +#: wrstabs.c:366 wrstabs.c:2027 +#, c-format +msgid "string_hash_lookup failed: %s" +msgstr "string_hash_lookup falló: %s" + +#: wrstabs.c:666 +#, c-format +msgid "stab_int_type: bad size %u" +msgstr "stab_int_type: tipo %u erróneo" + +#: wrstabs.c:1467 +#, c-format +msgid "%s: warning: unknown size for field `%s' in struct" +msgstr "%s: aviso: tamaño desconocido para el campo `%s' en la estructura" + +#~ msgid "GNU %s version %s\n" +#~ msgstr "GNU %s versión %s\n" + +#~ msgid "no export definition file provided" +#~ msgstr "no se provee un fichero de definición de exportación" + +#~ msgid " The switches are:\n" +#~ msgstr " Los interruptores son:\n" + +#~ msgid "Unable to seek to start of %s at %x\n" +#~ msgstr "No se puede buscar para el inicio de %s en %x\n" + +#~ msgid "Unable to read data at %x for %s\n" +#~ msgstr "No se pueden leer datos en %x para %s\n" + +#~ msgid "ELF32" +#~ msgstr "ELF32" + +#~ msgid "ELF64" +#~ msgstr "ELF64" + +#~ msgid "UNIX - System V" +#~ msgstr "UNIX - System V" + +#~ msgid "UNIX - HP-UX" +#~ msgstr "UNIX - HP-UX" + +#~ msgid "UNIX - NetBSD" +#~ msgstr "UNIX - NetBSD" + +#~ msgid "UNIX - Linux" +#~ msgstr "UNIX - Linux" + +#~ msgid "GNU/Hurd" +#~ msgstr "GNU/Hurd" + +#~ msgid "UNIX - Solaris" +#~ msgstr "UNIX - Solaris" + +#~ msgid "UNIX - AIX" +#~ msgstr "UNIX - AIX" + +#~ msgid "UNIX - IRIX" +#~ msgstr "UNIX - IRIX" + +#~ msgid "UNIX - FreeBSD" +#~ msgstr "UNIX - FreeBSD" + +#~ msgid "UNIX - TRU64" +#~ msgstr "UNIX - TRU64" + +#~ msgid "Novell - Modesto" +#~ msgstr "Novell - Modesto" + +#~ msgid "UNIX - OpenBSD" +#~ msgstr "UNIX - OpenBSD" + +#~ msgid "ARM" +#~ msgstr "ARM" + +#~ msgid "Key to Flags:\n" +#~ msgstr "Clave para las Opciones:\n" + +#~ msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" +#~ msgstr " W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n" + +#~ msgid " I (info), L (link order), G (group), x (unknown)\n" +#~ msgstr " I (información), L (orden de enlazado), G (grupo), x (desconocido)\n" + +#~ msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" +#~ msgstr " O (se requiere procesamiento extra de SO) o (específico SO), p (específico procesador)\n" + +#~ msgid "Unable to handle FORM: %d" +#~ msgstr "No se puede manejar FORM: %d" + +#~ msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" +#~ msgstr "tipo de datos de 64 bit así que no puede leer fichero ELF de 64 bit.\n" diff -uprN binutils-2.11.92.0.12.3/binutils/po/fr.po binutils-2.11.93.0.2/binutils/po/fr.po --- binutils-2.11.92.0.12.3/binutils/po/fr.po Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/po/fr.po Sun Feb 3 11:22:31 2002 @@ -4,16 +4,16 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU binutils 2.11\n" -"POT-Creation-Date: 2001-01-11 12:02-0800\n" -"PO-Revision-Date: 2001-09-20 08:00-0500\n" +"Project-Id-Version: GNU binutils 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" +"PO-Revision-Date: 2002-01-24 08:00-0500\n" "Last-Translator: Michel Robitaille \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: addr2line.c:76 +#: addr2line.c:73 #, c-format msgid "" "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" @@ -24,205 +24,205 @@ msgstr "" " [-e executable] [--exe=executable] [--demangle[=style]]\n" " [--basenames] [--functions] [adr adr ...]\n" -#: addr2line.c:83 ar.c:288 nlmconv.c:1119 objcopy.c:373 objcopy.c:405 -#: readelf.c:1876 size.c:91 strings.c:530 windres.c:737 +#: addr2line.c:80 ar.c:289 nlmconv.c:1121 objcopy.c:423 objcopy.c:455 +#: readelf.c:2181 size.c:91 strings.c:655 windres.c:737 #, c-format msgid "Report bugs to %s\n" msgstr "Rapporter toutes anomalies à %s\n" -#: addr2line.c:243 +#: addr2line.c:240 #, c-format msgid "%s: can not get addresses from archive" msgstr "%s: ne peut obtenir l'adresse à partir de l'archive" -#: addr2line.c:310 nm.c:436 objdump.c:2857 +#: addr2line.c:312 nm.c:447 objdump.c:2800 #, c-format msgid "unknown demangling style `%s'" msgstr "style de d'encodage par mutilation inconnu `%s'" -#: ar.c:236 +#: ar.c:237 #, c-format msgid "no entry %s in archive\n" msgstr "pas d'entrée %s dans l'archive\n" -#: ar.c:253 +#: ar.c:254 #, c-format msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" msgstr "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n" -#: ar.c:256 +#: ar.c:257 #, c-format msgid " %s -M [\n\n" msgstr "\n\n\n" -#: ar.c:845 ar.c:913 +#: ar.c:850 ar.c:918 #, c-format msgid "%s is not a valid archive" msgstr "%s n'est pas une archive valide" -#: ar.c:881 +#: ar.c:886 #, c-format msgid "stat returns negative size for %s" msgstr "stat() a retourné une taille négative for %s" -#: ar.c:1008 +#: ar.c:1013 #, c-format msgid "%s is not an archive" msgstr "%s n'est pas une archive" -#: ar.c:1015 +#: ar.c:1020 #, c-format msgid "creating %s" msgstr "création de %s" -#: ar.c:1221 +#: ar.c:1226 #, c-format msgid "No member named `%s'\n" msgstr "Aucun membre ayant le nom `%s'\n" -#: ar.c:1273 +#: ar.c:1278 #, c-format msgid "no entry %s in archive %s!" msgstr "aucune entrée %s dans l'archive %s!" -#: ar.c:1434 +#: ar.c:1439 #, c-format msgid "%s: no archive map to update" msgstr "%s: aucune table d'archive à mettre à jour" @@ -237,91 +237,95 @@ msgstr "Aucune entrée %s dans l'archive. msgid "Can't open file %s\n" msgstr "Ne peut ouvrir le fichier %s\n" -#: arsup.c:170 +#: arsup.c:171 #, c-format msgid "%s: Can't open output archive %s\n" msgstr "%s: ne peut ouvrir l'archive de sortie %s\n" -#: arsup.c:182 +#: arsup.c:183 #, c-format msgid "%s: Can't open input archive %s\n" msgstr "%s: ne peut ouvrir l'archive en entrée %s\n" -#: arsup.c:188 +#: arsup.c:189 #, c-format msgid "%s: file %s is not an archive\n" msgstr "%s: le fichier %s n'est pas une archive\n" -#: arsup.c:229 +#: arsup.c:230 #, c-format msgid "%s: no output archive specified yet\n" msgstr "%s: aucun fichier d'archive de sortie n'a encore été spécifié\n" -#: arsup.c:249 arsup.c:284 arsup.c:320 arsup.c:340 arsup.c:398 +#: arsup.c:250 arsup.c:285 arsup.c:321 arsup.c:341 arsup.c:399 #, c-format msgid "%s: no open output archive\n" msgstr "%s: aucun fichier d'archive de sortie ouvert\n" -#: arsup.c:257 arsup.c:358 arsup.c:378 +#: arsup.c:258 arsup.c:359 arsup.c:379 #, c-format msgid "%s: can't open file %s\n" msgstr "%s: ne peut ouvrir le fichier %s\n" -#: arsup.c:305 arsup.c:374 arsup.c:453 +#: arsup.c:306 arsup.c:375 arsup.c:454 #, c-format msgid "%s: can't find module file %s\n" msgstr "%s: ne peut trouver le fichier module %s\n" -#: arsup.c:405 +#: arsup.c:406 #, c-format msgid "Current open archive is %s\n" msgstr "L'archive actuellement ouverte est %s\n" -#: arsup.c:432 +#: arsup.c:433 #, c-format msgid "%s: no open archive\n" msgstr "%s: aucune archive ouverte\n" -#: bucomm.c:135 +#: bucomm.c:106 #, c-format msgid "can't set BFD default target to `%s': %s" msgstr "ne peut initialiser les paramètres par défaut BDF cible vers `%s': %s" -#: bucomm.c:147 +#: bucomm.c:118 #, c-format msgid "%s: Matching formats:" msgstr "%s: formats concordant:" -#: bucomm.c:164 +#: bucomm.c:135 msgid "Supported targets:" msgstr "Cibles supportés:" -#: bucomm.c:166 +#: bucomm.c:137 #, c-format msgid "%s: supported targets:" msgstr "%s: cibles supportés:" -#: bucomm.c:272 +#: bucomm.c:153 +msgid "Supported architectures:" +msgstr "Architectures supportées:" + +#: bucomm.c:155 +#, c-format +msgid "%s: supported architectures:" +msgstr "%s: architectures supportées:" + +#: bucomm.c:262 #, c-format msgid "%s: bad number: %s" msgstr "%s: mauvais numéro: %s" -#: coffdump.c:94 +#: coffdump.c:106 #, c-format msgid "#lines %d " msgstr "# de lignes %d " -#: coffdump.c:456 sysdump.c:719 +#: coffdump.c:468 sysdump.c:740 #, c-format msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" msgstr "%s: afficher dans un format humainement interprétable le fichier objet SYSROFF\n" -#: coffdump.c:498 srconv.c:1941 sysdump.c:755 -#, c-format -msgid "GNU %s version %s\n" -msgstr "GNU %s version %s\n" - -#: coffdump.c:516 srconv.c:1975 sysdump.c:775 +#: coffdump.c:531 srconv.c:2029 sysdump.c:799 msgid "no input file specified" msgstr "Aucune fichier spécifié à l'entrée" @@ -422,518 +426,518 @@ msgstr "debug_get_real_type: information msgid "debug_write_type: illegal type encountered" msgstr "debug_write_type: type illégal rencontré" -#: dlltool.c:737 dlltool.c:762 dlltool.c:788 +#: dlltool.c:743 dlltool.c:768 dlltool.c:794 #, c-format msgid "Internal error: Unknown machine type: %d" msgstr "erreur interne: type de machine inconnue: %d" -#: dlltool.c:825 +#: dlltool.c:831 #, c-format msgid "Can't open def file: %s" msgstr "Ne peut ouvrir le fichier de définition: %s" -#: dlltool.c:830 +#: dlltool.c:836 #, c-format msgid "Processing def file: %s" msgstr "Traitement du fichier de définition: %s" -#: dlltool.c:834 +#: dlltool.c:840 msgid "Processed def file" msgstr "Traitement complété du fichier de définition" -#: dlltool.c:859 +#: dlltool.c:866 #, c-format msgid "Syntax error in def file %s:%d" msgstr "Erreur de syntaxe dans le fichier de définition %s:%d" -#: dlltool.c:892 +#: dlltool.c:905 #, c-format msgid "NAME: %s base: %x" msgstr "NOM: %s base: %x" -#: dlltool.c:895 dlltool.c:914 +#: dlltool.c:908 dlltool.c:927 msgid "Can't have LIBRARY and NAME" msgstr "Ne peut trouver la LIBRAIRIE et le NOM" -#: dlltool.c:911 +#: dlltool.c:924 #, c-format msgid "LIBRARY: %s base: %x" msgstr "LIBRAIRIE: %s base %x" -#: dlltool.c:1169 resrc.c:271 +#: dlltool.c:1182 resrc.c:271 #, c-format msgid "wait: %s" msgstr "en attente: %s" -#: dlltool.c:1174 dllwrap.c:456 resrc.c:276 +#: dlltool.c:1187 dllwrap.c:455 resrc.c:276 #, c-format msgid "subprocess got fatal signal %d" msgstr "sous-processus a reçu le signal fatal %d" -#: dlltool.c:1180 dllwrap.c:463 resrc.c:283 +#: dlltool.c:1193 dllwrap.c:462 resrc.c:283 #, c-format msgid "%s exited with status %d" msgstr "%s a terminé avec le statut %d" -#: dlltool.c:1212 +#: dlltool.c:1225 #, c-format msgid "Sucking in info from %s section in %s" msgstr "Aspirer les informations de la section %s dans %s" -#: dlltool.c:1336 +#: dlltool.c:1349 #, c-format msgid "Excluding symbol: %s" msgstr "Exclusion de symbole: %s" -#: dlltool.c:1431 dlltool.c:1442 nm.c:946 nm.c:957 objdump.c:443 objdump.c:460 +#: dlltool.c:1444 dlltool.c:1455 nm.c:958 nm.c:969 objdump.c:383 objdump.c:400 #, c-format msgid "%s: no symbols" msgstr "%s: aucun symbole" #. FIXME: we ought to read in and block out the base relocations -#: dlltool.c:1469 +#: dlltool.c:1482 #, c-format msgid "Done reading %s" msgstr "Lecture complétée %s" -#: dlltool.c:1480 +#: dlltool.c:1493 #, c-format msgid "Unable to open object file: %s" msgstr "Incapable d'ouvrir le fichier objet: %s" -#: dlltool.c:1483 +#: dlltool.c:1496 #, c-format msgid "Scanning object file %s" msgstr "Scrutation du fichier objet %s" -#: dlltool.c:1498 +#: dlltool.c:1511 #, c-format msgid "Cannot produce mcore-elf dll from archive file: %s" msgstr "Ne peutproduire mcore-elf dll à partir du fichier d'archive: %s" -#: dlltool.c:1590 +#: dlltool.c:1603 msgid "Adding exports to output file" msgstr "Ajout des exports au fichier de sortie" -#: dlltool.c:1635 +#: dlltool.c:1648 msgid "Added exports to output file" msgstr "Exports ajoutés au fichier de sortie" -#: dlltool.c:1759 +#: dlltool.c:1772 #, c-format msgid "Generating export file: %s" msgstr "Génération du fichier d'exports: %s" -#: dlltool.c:1764 +#: dlltool.c:1777 #, c-format msgid "Unable to open temporary assembler file: %s" msgstr "Incapable d'ouvrir le fichier assembleur temporaire: %s" -#: dlltool.c:1767 +#: dlltool.c:1780 #, c-format msgid "Opened temporary file: %s" msgstr "Fichier temporaire ouvert: %s" -#: dlltool.c:1981 +#: dlltool.c:2004 msgid "Generated exports file" msgstr "Fichier d'exports généré" -#: dlltool.c:2236 +#: dlltool.c:2266 #, c-format msgid "bfd_open failed open stub file: %s" msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s" -#: dlltool.c:2239 +#: dlltool.c:2269 #, c-format msgid "Creating stub file: %s" msgstr "Création du fichier stub: %s" -#: dlltool.c:2626 +#: dlltool.c:2658 #, c-format msgid "failed to open temporary head file: %s" msgstr "échec d'ouverture du fichier de tête temporaire: %s" -#: dlltool.c:2685 +#: dlltool.c:2717 #, c-format msgid "failed to open temporary tail file: %s" msgstr "échec d'ouverture du fichier de queue temporaire: %s" -#: dlltool.c:2753 +#: dlltool.c:2785 #, c-format msgid "Can't open .lib file: %s" msgstr "Ne peut ouvrir le fichier .lib: %s" -#: dlltool.c:2756 +#: dlltool.c:2788 #, c-format msgid "Creating library file: %s" msgstr "Création du fichier de librairie: %s" -#: dlltool.c:2815 +#: dlltool.c:2847 #, c-format msgid "cannot delete %s: %s" msgstr "ne peut détruire %s: %s" -#: dlltool.c:2819 +#: dlltool.c:2851 msgid "Created lib file" msgstr "Fichier de libraire créé" -#: dlltool.c:2924 +#: dlltool.c:2956 #, c-format msgid "Warning, ignoring duplicate EXPORT %s %d,%d" msgstr "AVERTISSEMENT: EXPORT en duplication ignoré %s %d,%d" -#: dlltool.c:2930 +#: dlltool.c:2962 #, c-format msgid "Error, duplicate EXPORT with oridinals: %s" msgstr "ERREUR, EXPORT en duplication avec ordinals: %s" -#: dlltool.c:3057 +#: dlltool.c:3089 msgid "Processing definitions" msgstr "Traitement des définitions" -#: dlltool.c:3095 +#: dlltool.c:3127 msgid "Processed definitions" msgstr "Définitions traitées" #. xgetext:c-format -#: dlltool.c:3106 dllwrap.c:520 +#: dlltool.c:3138 dllwrap.c:519 #, c-format msgid "Usage %s \n" msgstr "Usage %s \n" #. xgetext:c-format -#: dlltool.c:3108 +#: dlltool.c:3140 #, c-format msgid " -m --machine Create as DLL for . [default: %s]\n" msgstr " -m --machine créer comme DLL pour la . [défaut: %s]\n" -#: dlltool.c:3109 +#: dlltool.c:3141 msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" msgstr " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -#: dlltool.c:3110 +#: dlltool.c:3142 msgid " -e --output-exp Generate an export file.\n" msgstr " -e --output-exp générer un fichier d'export.\n" -#: dlltool.c:3111 +#: dlltool.c:3143 msgid " -l --output-lib Generate an interface library.\n" msgstr " -l --output-lib générer une librairie d'interface.\n" -#: dlltool.c:3112 +#: dlltool.c:3144 msgid " -a --add-indirect Add dll indirects to export file.\n" msgstr " -a --add-indirect ajouter les dll indirectes au fichier d'exports.\n" -#: dlltool.c:3113 +#: dlltool.c:3145 msgid " -D --dllname Name of input dll to put into interface lib.\n" msgstr " -D --dllname nom du dll à placer dans la libraire d'interface.\n" -#: dlltool.c:3114 +#: dlltool.c:3146 msgid " -d --input-def Name of .def file to be read in.\n" msgstr " -d --input-def nom du fichier .def à lire\n" -#: dlltool.c:3115 +#: dlltool.c:3147 msgid " -z --output-def Name of .def file to be created.\n" msgstr " -z --output-def nom du fichier .def à créer.\n" -#: dlltool.c:3116 +#: dlltool.c:3148 msgid " --export-all-symbols Export all symbols to .def\n" msgstr " --export-all-symbols exporter tous les symboles vers le fichier .def\n" -#: dlltool.c:3117 +#: dlltool.c:3149 msgid " --no-export-all-symbols Only export listed symbols\n" msgstr " --no-export-all-symbols exporter seulement la liste des symboles\n" -#: dlltool.c:3118 +#: dlltool.c:3150 msgid " --exclude-symbols Don't export \n" msgstr " --exclude-symbols ne pas exporter la \n" -#: dlltool.c:3119 +#: dlltool.c:3151 msgid " --no-default-excludes Clear default exclude symbols\n" msgstr " --no-default-excludes ne pas tenir compte des symboles d'exclusion par défaut\n" -#: dlltool.c:3120 +#: dlltool.c:3152 msgid " -b --base-file Read linker generated base file.\n" msgstr " -b --base-file lire le fichier de base généré par l'éditeur de liens\n" -#: dlltool.c:3121 +#: dlltool.c:3153 msgid " -x --no-idata4 Don't generate idata$4 section.\n" msgstr " -x --no-idata4 ne pas générer la section idata$4\n" -#: dlltool.c:3122 +#: dlltool.c:3154 msgid " -c --no-idata5 Don't generate idata$5 section.\n" msgstr " -c --no-idata5 ne pas générer la section idata$5\n" -#: dlltool.c:3123 +#: dlltool.c:3155 msgid " -U --add-underscore Add underscores to symbols in interface library.\n" msgstr " -U --add-underscore ajouter des soulignés aux symboles dans la librairie d'interface\n" -#: dlltool.c:3124 +#: dlltool.c:3156 msgid " -k --kill-at Kill @ from exported names.\n" msgstr " -k --kill-at stopper @ à partir des noms exportés\n" -#: dlltool.c:3125 +#: dlltool.c:3157 msgid " -A --add-stdcall-alias Add aliases without @.\n" msgstr " -A --add-stdcall-alias ajouter des aliases sans @\n" -#: dlltool.c:3126 +#: dlltool.c:3158 msgid " -S --as Use for assembler.\n" msgstr " -S --as utiliser le pour l'assembleur\n" -#: dlltool.c:3127 +#: dlltool.c:3159 msgid " -f --as-flags Pass to the assembler.\n" msgstr " -f --as-flags relayer les à l'assembleur\n" -#: dlltool.c:3128 +#: dlltool.c:3160 msgid " -C --compat-implib Create backward compatible import library.\n" msgstr " -C --compat-implib créer une compatibilité arrière à la librairie d'importation\n" -#: dlltool.c:3129 +#: dlltool.c:3161 msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" msgstr " -n --no-delete conserver les fichier temporaires\n" -#: dlltool.c:3130 +#: dlltool.c:3162 msgid " -v --verbose Be verbose.\n" msgstr " -v --verbose passer en mode bavard\n" -#: dlltool.c:3131 +#: dlltool.c:3163 msgid " -V --version Display the program version.\n" msgstr " -V --version afficher le nom et la version du logiciel\n" -#: dlltool.c:3132 +#: dlltool.c:3164 msgid " -h --help Display this information.\n" msgstr " -h --help afficher l'aide-mémoire\n" -#: dlltool.c:3134 +#: dlltool.c:3166 msgid " -M --mcore-elf Process mcore-elf object files into .\n" msgstr " -M --mcore-elf traiter le fichier objet mcore-elf selon le \n" -#: dlltool.c:3135 +#: dlltool.c:3167 msgid " -L --linker Use as the linker.\n" msgstr " -L --linker utiliser comme éditeur de liens\n" -#: dlltool.c:3136 +#: dlltool.c:3168 msgid " -F --linker-flags Pass to the linker.\n" msgstr " -F --linker-flags relayer les à l'éditeur de liens\n" -#: dlltool.c:3280 +#: dlltool.c:3315 #, c-format msgid "Unable to open base-file: %s" msgstr "Incapable d'ouvrir le fichier de base: %s" -#: dlltool.c:3309 +#: dlltool.c:3344 #, c-format msgid "Machine '%s' not supported" msgstr "Machine '%s' n'est pas supportée" -#: dlltool.c:3412 dllwrap.c:241 +#: dlltool.c:3447 dllwrap.c:240 #, c-format msgid "Tried file: %s" msgstr "Essai avec le fichier: %s" -#: dlltool.c:3419 dllwrap.c:248 +#: dlltool.c:3454 dllwrap.c:247 #, c-format msgid "Using file: %s" msgstr "Utilisation du fichier: %s" -#: dllwrap.c:335 +#: dllwrap.c:334 #, c-format msgid "Keeping temporary base file %s" msgstr "Conservation temportaire du fichier de base %s" -#: dllwrap.c:337 +#: dllwrap.c:336 #, c-format msgid "Deleting temporary base file %s" msgstr "Destruction du fichier de base temporaire %s" -#: dllwrap.c:351 +#: dllwrap.c:350 #, c-format msgid "Keeping temporary exp file %s" msgstr "Conservation du fichier temporaire exp %s" -#: dllwrap.c:353 +#: dllwrap.c:352 #, c-format msgid "Deleting temporary exp file %s" msgstr "Destruction du fichier exp temporaire %s" -#: dllwrap.c:366 +#: dllwrap.c:365 #, c-format msgid "Keeping temporary def file %s" msgstr "Conservation du fichier temporaire def %s" -#: dllwrap.c:368 +#: dllwrap.c:367 #, c-format msgid "Deleting temporary def file %s" msgstr "Destruction du fichier temporaire def %s" -#: dllwrap.c:521 +#: dllwrap.c:520 msgid " Generic options:\n" msgstr " Option génériques:\n" -#: dllwrap.c:522 +#: dllwrap.c:521 msgid " --quiet, -q Work quietly\n" msgstr " --quiet, -q travailler en silence\n" -#: dllwrap.c:523 +#: dllwrap.c:522 msgid " --verbose, -v Verbose\n" msgstr " --verbose, -v travailler en mode bavard\n" -#: dllwrap.c:524 +#: dllwrap.c:523 msgid " --version Print dllwrap version\n" msgstr " --version afficher la version du dllwrap\n" -#: dllwrap.c:525 +#: dllwrap.c:524 msgid " --implib Synonym for --output-lib\n" msgstr " --implib identique à --output-lib\n" -#: dllwrap.c:526 +#: dllwrap.c:525 #, c-format msgid " Options for %s:\n" msgstr " Options pour %s:\n" -#: dllwrap.c:527 +#: dllwrap.c:526 msgid " --driver-name Defaults to \"gcc\"\n" msgstr " --driver-name par défaut \"gcc\"\n" -#: dllwrap.c:528 +#: dllwrap.c:527 msgid " --driver-flags Override default ld flags\n" msgstr " --driver-flags écrasesr les fanions par défaut de ld\n" -#: dllwrap.c:529 +#: dllwrap.c:528 msgid " --dlltool-name Defaults to \"dlltool\"\n" msgstr " --dlltool-name par défaut \"dlltool\"\n" -#: dllwrap.c:530 +#: dllwrap.c:529 msgid " --entry Specify alternate DLL entry point\n" msgstr " --entry spécifier une entrée alternative au point d'entrée du DLL\n" -#: dllwrap.c:531 +#: dllwrap.c:530 msgid " --image-base Specify image base address\n" msgstr " --image-base spécifier une adresse de l'image de base\n" -#: dllwrap.c:532 +#: dllwrap.c:531 msgid " --target i386-cygwin32 or i386-mingw32\n" msgstr " --target i386-cygwin32 ou i386-mingw32\n" -#: dllwrap.c:533 +#: dllwrap.c:532 msgid " --dry-run Show what needs to be run\n" msgstr " --dry-run afficher ce qui est nécessaire pour l'exécution\n" -#: dllwrap.c:534 +#: dllwrap.c:533 msgid " --mno-cygwin Create Mingw DLL\n" msgstr " --mno-cygwin créer une DLL de type Mingw\n" -#: dllwrap.c:535 +#: dllwrap.c:534 msgid " Options passed to DLLTOOL:\n" msgstr " Options relayées à DLLTOOL:\n" -#: dllwrap.c:536 +#: dllwrap.c:535 msgid " --machine \n" msgstr " --machine \n" -#: dllwrap.c:537 +#: dllwrap.c:536 msgid " --output-exp Generate export file.\n" msgstr " --output-exp générer un fichier d'exports.\n" -#: dllwrap.c:538 +#: dllwrap.c:537 msgid " --output-lib Generate input library.\n" msgstr " --output-lib générer une librairie d'entrée.\n" -#: dllwrap.c:539 +#: dllwrap.c:538 msgid " --add-indirect Add dll indirects to export file.\n" msgstr " --add-indirect ajouter les dll indirectes au fichier d'exports.\n" -#: dllwrap.c:540 +#: dllwrap.c:539 msgid " --dllname Name of input dll to put into output lib.\n" msgstr " --dllname nom du dll d'entrée à ajouter dans le fichier lib de sortie.\n" -#: dllwrap.c:541 +#: dllwrap.c:540 msgid " --def Name input .def file\n" msgstr " --def nom du fichier d'entrée .def\n" -#: dllwrap.c:542 +#: dllwrap.c:541 msgid " --output-def Name output .def file\n" msgstr " --output-def nom du fichier de sortie .def\n" -#: dllwrap.c:543 +#: dllwrap.c:542 msgid " --export-all-symbols Export all symbols to .def\n" msgstr " --export-all-symbols exporter tous les symboles au fichier .def\n" -#: dllwrap.c:544 +#: dllwrap.c:543 msgid " --no-export-all-symbols Only export .drectve symbols\n" msgstr " --no-export-all-symbols exporter seulement les symboles .drectve\n" -#: dllwrap.c:545 +#: dllwrap.c:544 msgid " --exclude-symbols Exclude from .def\n" msgstr " --exclude-symbols exclure la de .def\n" -#: dllwrap.c:546 +#: dllwrap.c:545 msgid " --no-default-excludes Zap default exclude symbols\n" msgstr " --no-default-excludes ignorer les symboles par défaut d'exclusion\n" -#: dllwrap.c:547 +#: dllwrap.c:546 msgid " --base-file Read linker generated base file\n" msgstr " --base-file lire le fichier de base généré par l'éditeur de liens\n" -#: dllwrap.c:548 +#: dllwrap.c:547 msgid " --no-idata4 Don't generate idata$4 section\n" msgstr " --no-idata4 ne pas générer la section idata$4\n" -#: dllwrap.c:549 +#: dllwrap.c:548 msgid " --no-idata5 Don't generate idata$5 section\n" msgstr " --no-idata5 ne pas générer la section idata$5\n" -#: dllwrap.c:550 +#: dllwrap.c:549 msgid " -U Add underscores to .lib\n" msgstr " -U ajouter des soulignés au fichier .lib\n" -#: dllwrap.c:551 +#: dllwrap.c:550 msgid " -k Kill @ from exported names\n" msgstr " -k stopper @ à partir des noms exportés\n" -#: dllwrap.c:552 +#: dllwrap.c:551 msgid " --add-stdcall-alias Add aliases without @\n" msgstr " --add-stdcall-alias ajouter les aliases sans @\n" -#: dllwrap.c:553 +#: dllwrap.c:552 msgid " --as Use for assembler\n" msgstr " --as utiliser comme assembleur\n" -#: dllwrap.c:554 +#: dllwrap.c:553 msgid " --nodelete Keep temp files.\n" msgstr " --nodelete conserver les fichiers temporaires.\n" -#: dllwrap.c:555 +#: dllwrap.c:554 msgid " Rest are passed unmodified to the language driver\n" msgstr " le reste est passé sans modification au pilote du langage\n" -#: dllwrap.c:816 +#: dllwrap.c:824 msgid "Must provide at least one of -o or --dllname options" msgstr "Obligation de fournir au moins une des options -o or --dllname" -#: dllwrap.c:844 -msgid "no export definition file provided" -msgstr "aucun fichier de définition d'exports fourni" - -#: dllwrap.c:845 -msgid "creating one, but that may not be what you want" -msgstr "création d'un fichier, mais ce n'est pas nécessairement ce que vous désirez" +#: dllwrap.c:852 +msgid "" +"no export definition file provided.\n" +"Creating one, but that may not be what you want" +msgstr "" +"aucun fichier d'exportation de définitions fourni.\n" +"Création du fichier, mais il ne correspondra pas nécessairement à ce que vous désirez." -#: dllwrap.c:1006 +#: dllwrap.c:1014 #, c-format msgid "DLLTOOL name : %s\n" msgstr "OUTILDLL nom : %s\n" -#: dllwrap.c:1007 +#: dllwrap.c:1015 #, c-format msgid "DLLTOOL options : %s\n" msgstr "OUTILDLL options : %s\n" -#: dllwrap.c:1008 +#: dllwrap.c:1016 #, c-format msgid "DRIVER name : %s\n" msgstr "PILOTE name : %s\n" -#: dllwrap.c:1009 +#: dllwrap.c:1017 #, c-format msgid "DRIVER options : %s\n" msgstr "PILOTE options : %s\n" @@ -1158,134 +1162,134 @@ msgstr "débordement numériquie IEEE: Ox" msgid "IEEE string length overflow: %u\n" msgstr "débordement de la longueur de la chaîne IEEE: %u\n" -#: ieee.c:5324 +#: ieee.c:5333 #, c-format msgid "IEEE unsupported integer type size %u\n" msgstr "taille de type d'entier IEEE non supporté %u\n" -#: ieee.c:5360 +#: ieee.c:5369 #, c-format msgid "IEEE unsupported float type size %u\n" msgstr "taille de type de nombre IEEE en notation flottante non supporté %u\n" -#: ieee.c:5396 +#: ieee.c:5405 #, c-format msgid "IEEE unsupported complex type size %u\n" msgstr "taille de nombre complexe IEEE non supportée %u\n" -#: nlmconv.c:275 srconv.c:1966 +#: nlmconv.c:278 srconv.c:2020 msgid "input and output files must be different" msgstr "fichiers d'entrée et de sortie doivent être différents" -#: nlmconv.c:322 +#: nlmconv.c:325 msgid "input file named both on command line and with INPUT" msgstr "fichier d'entrée nommé à la fois sur la ligne de commande et dans la champ INPUT" -#: nlmconv.c:331 +#: nlmconv.c:334 msgid "no input file" msgstr "aucun fichier d'entrée" -#: nlmconv.c:361 +#: nlmconv.c:364 msgid "no name for output file" msgstr "aucun nom pour le fichier de sortie" -#: nlmconv.c:374 +#: nlmconv.c:377 msgid "warning: input and output formats are not compatible" msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles" -#: nlmconv.c:403 +#: nlmconv.c:406 msgid "make .bss section" msgstr "générer la section .bss" -#: nlmconv.c:412 +#: nlmconv.c:415 msgid "make .nlmsections section" msgstr "générer la section .nlmsections" -#: nlmconv.c:414 +#: nlmconv.c:417 msgid "set .nlmsections flags" msgstr "initialiser les fanions .nlmsections" -#: nlmconv.c:442 +#: nlmconv.c:445 msgid "set .bss vma" msgstr "initialiser le vma de la section .bss" -#: nlmconv.c:449 +#: nlmconv.c:452 msgid "set .data size" msgstr "initialiser la taille de la section .data" -#: nlmconv.c:629 +#: nlmconv.c:632 #, c-format msgid "warning: symbol %s imported but not in import list" msgstr "AVERTISSEMENT: symbole %s importé mais n'est pas dans la liste d'importation" -#: nlmconv.c:649 +#: nlmconv.c:652 msgid "set start address" msgstr "initialiser l'adresse de départ" -#: nlmconv.c:698 +#: nlmconv.c:701 #, c-format msgid "warning: START procedure %s not defined" msgstr "AVERTISSEMENT: procédure START %s n'est pas définie" -#: nlmconv.c:700 +#: nlmconv.c:703 #, c-format msgid "warning: EXIT procedure %s not defined" msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie" -#: nlmconv.c:702 +#: nlmconv.c:705 #, c-format msgid "warning: CHECK procedure %s not defined" msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie" -#: nlmconv.c:723 nlmconv.c:912 +#: nlmconv.c:726 nlmconv.c:915 msgid "custom section" msgstr "section \"custom\"" -#: nlmconv.c:744 nlmconv.c:941 +#: nlmconv.c:747 nlmconv.c:944 msgid "help section" msgstr "section d'aide" -#: nlmconv.c:766 nlmconv.c:959 +#: nlmconv.c:769 nlmconv.c:962 msgid "message section" msgstr "section message" -#: nlmconv.c:782 nlmconv.c:992 +#: nlmconv.c:785 nlmconv.c:995 msgid "module section" msgstr "section module" -#: nlmconv.c:802 nlmconv.c:1008 +#: nlmconv.c:805 nlmconv.c:1011 msgid "rpc section" msgstr "section rpc" #. There is no place to record this information. -#: nlmconv.c:838 +#: nlmconv.c:841 #, c-format msgid "%s: warning: shared libraries can not have uninitialized data" msgstr "%s: AVERTISSEMENT: les librairies partagées ne peuvent avoir des données non initialisées" -#: nlmconv.c:859 nlmconv.c:1027 +#: nlmconv.c:862 nlmconv.c:1030 msgid "shared section" msgstr "section partagée" -#: nlmconv.c:867 +#: nlmconv.c:870 msgid "warning: No version number given" msgstr "AVERTISSEMENT: aucun numéro de version fourni" -#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022 +#: nlmconv.c:910 nlmconv.c:939 nlmconv.c:957 nlmconv.c:1006 nlmconv.c:1025 #, c-format msgid "%s: read: %s" msgstr "%s: lu: %s" -#: nlmconv.c:929 +#: nlmconv.c:932 msgid "warning: MAP and FULLMAP are not supported; try ld -M" msgstr "AVERTISSEMENT: MAP et FULLMAP ne sont pas supportées; essayer ld -M" -#: nlmconv.c:1099 +#: nlmconv.c:1101 #, c-format msgid "%s: Convert an object file into a NetWare Loadable Module\n" msgstr "%s: convertir un fichier objet en un NetWare Loadable Module\n" -#: nlmconv.c:1111 +#: nlmconv.c:1113 #, c-format msgid "" "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n" @@ -1300,73 +1304,73 @@ msgstr "" " [--help] [--version]\n" " [fichier_d_entree [fichier_de_sortie]]\n" -#: nlmconv.c:1151 +#: nlmconv.c:1153 #, c-format msgid "support not compiled in for %s" msgstr "soutien non compilé pour %s" -#: nlmconv.c:1191 +#: nlmconv.c:1193 msgid "make section" msgstr "section make" -#: nlmconv.c:1205 +#: nlmconv.c:1207 msgid "set section size" msgstr "initialisation de la taille de la section" -#: nlmconv.c:1211 +#: nlmconv.c:1213 msgid "set section alignment" msgstr "initialisation de l'alignement de la section" -#: nlmconv.c:1215 +#: nlmconv.c:1217 msgid "set section flags" msgstr "initialisation des fanions de la section" -#: nlmconv.c:1226 +#: nlmconv.c:1228 msgid "set .nlmsections size" msgstr "initialisation de la taille de .nlmsections" -#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336 +#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 msgid "set .nlmsection contents" msgstr "initialisation du contenu de .nlmsection" -#: nlmconv.c:1839 +#: nlmconv.c:1841 msgid "stub section sizes" msgstr "taille de la section stub" -#: nlmconv.c:1888 +#: nlmconv.c:1890 msgid "writing stub" msgstr "écriture du stub" -#: nlmconv.c:1978 +#: nlmconv.c:1980 #, c-format msgid "unresolved PC relative reloc against %s" msgstr "relocalisation relative sur PC non résolue de %s" -#: nlmconv.c:2042 +#: nlmconv.c:2044 #, c-format msgid "overflow when adjusting relocation against %s" msgstr "débordement lors de la relocalisation de %s" -#: nlmconv.c:2159 +#: nlmconv.c:2161 #, c-format msgid "%s: execution of %s failed: " msgstr "%s: échec d'exécution de %s :" -#: nlmconv.c:2174 +#: nlmconv.c:2176 #, c-format msgid "Execution of %s failed" msgstr "Échec d'exécution de %s" -#: nm.c:294 +#: nm.c:300 #, c-format msgid "Usage: %s [OPTION]... [FILE]...\n" msgstr "Usage: %s [OPTIONS]... [FICHIER]...\n" -#: nm.c:295 +#: nm.c:301 msgid "List symbols from FILEs (a.out by default).\n" msgstr "Afficher les symboles des FICHIERS (a.out par défaut).\n" -#: nm.c:296 +#: nm.c:302 msgid "" "\n" " -a, --debug-syms Display debugger-only symbols\n" @@ -1430,71 +1434,72 @@ msgstr "" " -X 32_64 (ignoré)\n" "\n" -#: nm.c:328 objdump.c:274 +#: nm.c:334 objdump.c:216 #, c-format msgid "Report bugs to %s.\n" msgstr "Rapporter toutes anomalies à %s\n" -#: nm.c:361 +#: nm.c:367 #, c-format msgid "%s: invalid radix" msgstr "%s: base numérique invalide" -#: nm.c:386 +#: nm.c:392 #, c-format msgid "%s: invalid output format" msgstr "%s: format de sortie invalide" -#: nm.c:493 +#: nm.c:504 msgid "Only -X 32_64 is supported" msgstr "Seul -X 32_64 est supporté" -#: nm.c:535 +#: nm.c:546 #, c-format msgid "data size %ld" msgstr "taille des donnée %ld" -#: nm.c:1325 +#: nm.c:1340 #, c-format msgid "\n\nUndefined symbols from %s:\n\n" msgstr "\n\nSymboles indéfinis dans %s:\n\n" -#: nm.c:1327 +#: nm.c:1342 #, c-format msgid "\n\nSymbols from %s:\n\n" msgstr "\n\nSymboles de %s:\n\n" -#: nm.c:1328 nm.c:1382 +#: nm.c:1343 nm.c:1397 msgid "Name Value Class Type Size Line Section\n\n" msgstr "Nom Valeur Classe Type Taille Ligne Section\n\n" -#: nm.c:1379 +#: nm.c:1394 #, c-format msgid "\n\nUndefined symbols from %s[%s]:\n\n" msgstr "\n\nSymboles indéfinis dans %s[%s]:\n\n" -#: nm.c:1381 +#: nm.c:1396 #, c-format msgid "\n\nSymbols from %s[%s]:\n\n" msgstr "\n\nSymboles de %s[%s]:\n\n" -#: nm.c:1552 +#: nm.c:1564 msgid "\nArchive index:\n" msgstr "\nIndexe de l'archive:\n" -#: objcopy.c:322 +#: objcopy.c:363 #, c-format -msgid "Usage: %s in-file [out-file]\n" -msgstr "Usage: %s fichier_d_entrée [fichier_de_sortie]\n" +msgid "Usage: %s in-file [out-file]\n" +msgstr "Usage: %s fichier_d_entrée [fichier_de_sortie]\n" -#: objcopy.c:323 objcopy.c:383 -msgid " The switches are:\n" -msgstr " Les commutateurs sont:\n" +#: objcopy.c:364 objcopy.c:433 +msgid " The options are:\n" +msgstr " Les options sont:\n" -#: objcopy.c:324 +#: objcopy.c:365 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format \n" +" -B --binary-architecture Set arch of output file, when input is binary\n" " -F --target Set both input and output format to \n" " --debugging Convert debugging information, if possible\n" " -p --preserve-dates Copy modified/access timestamps to the output\n" @@ -1506,6 +1511,7 @@ msgid "" " -N --strip-symbol Do not copy symbol \n" " -K --keep-symbol Only copy symbol \n" " -L --localize-symbol Force symbol to be marked as a local\n" +" -G --keep-global-symbol Localize all symbols except \n" " -W --weaken-symbol Force symbol to be marked as a weak\n" " --weaken Force all global symbols to be marked as weak\n" " -x --discard-all Remove all non-global symbols\n" @@ -1530,17 +1536,25 @@ msgid "" " --set-section-flags =\n" " Set section 's properties to \n" " --add-section = Add section found in to output\n" +" --rename-section =[,] Rename section to \n" " --change-leading-char Force output format's leading character style\n" " --remove-leading-char Remove leading character from global symbols\n" " --redefine-sym = Redefine symbol name to \n" " --srec-len Restrict the length of generated Srecords\n" " --srec-forceS3 Restrict the type of generated Srecords to S3\n" +" --strip-symbols -N for all symbols listed in \n" +" --keep-symbols -K for all symbols listed in \n" +" --localize-symbols -L for all symbols listed in \n" +" --keep-global-symbols -G for all symbols listed in \n" +" --weaken-symbols -W for all symbols listed in \n" +" --alt-machine-code Use alternate machine code for output\n" " -v --verbose List all object files modified\n" " -V --version Display this program's version number\n" " -h --help Display this output\n" msgstr "" " -I --input-target assumer que le fichier d'entrée est de format \n" " -O --output-target créer un fichier de sortie de format \n" +" -B --binary-architecture sélectionner l'architecture du fichier de sortie lorsque binaire\n" " -F --target initialiser les formats d'entrée et de sortie à \n" " --debugging convertir les informations de débug, si possible\n" " -p --preserve-dates conserver les dates d'accès et de modification de fichiers\n" @@ -1552,6 +1566,7 @@ msgstr "" " -N --strip-symbol ne pas copier le symbole \n" " -K --keep-symbol copier seulement le symbole \n" " -L --localize-symbol marquer le symbole comme symbole local\n" +" -G --keep-global-symbol localiser tous les symboles sauf celui ayant pour \n" " -W --weaken-symbol marquer le symbole comme symbole faible\n" " --weaken marquer tous les symboles globaux comme symboles faibles\n" " -x --discard-all retirer tous les symboles qui ne sont pas globaux\n" @@ -1582,16 +1597,23 @@ msgstr "" " redéfinir le nom du symbole à \n" " --srec-len restreindre la longueur des Srecords générés\n" " --srec-forceS3 restreindre le type de Srecords générés à S3\n" +" --strip-symbols -N pour tous les symboles listés dans le \n" +" --keep-symbols -K pour tous les symboles listés dans le \n" +" --localize-symbols -L pour tous les symboles listés dans le \n" +" --keep-global-symbols \n" +" -G pour tous les symboles listés dans le \n" +" --weaken-symbols -W pour tous les symboles listés dans le \n" +" --alt-machine-code Use alternate machine code for output\n" " -v --verbose afficher la liste de tous les objets modifiés\n" " -V --version afficher le nom et la version du logiciel\n" " -h --help afficher l'aide-mémoire\n" -#: objcopy.c:382 +#: objcopy.c:432 #, c-format -msgid "Usage: %s in-file(s)\n" -msgstr "Usage: %s fichier(s)_d_entrée\n" +msgid "Usage: %s in-file(s)\n" +msgstr "Usage: %s fichier(s)_d_entrée\n" -#: objcopy.c:384 +#: objcopy.c:434 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format \n" @@ -1627,176 +1649,213 @@ msgstr "" " -h --help afficher l'aide-mémoire\n" " -o placer la sortie élaguée dans le \n" -#: objcopy.c:454 +#: objcopy.c:504 #, c-format msgid "unrecognized section flag `%s'" msgstr "fanion de section non reconnnu `%s'" -#: objcopy.c:455 +#: objcopy.c:505 #, c-format msgid "supported flags: %s" msgstr "fanions supportés: %s" -#: objcopy.c:712 +#: objcopy.c:582 objcopy.c:2206 +#, c-format +msgid "cannot stat: %s: %s" +msgstr "ne peut évaluer par stat(): %s: %s" + +#: objcopy.c:589 objcopy.c:2224 +#, c-format +msgid "cannot open: %s: %s" +msgstr "ne peut ouvrir: %s: %s" + +#: objcopy.c:592 objcopy.c:2228 +#, c-format +msgid "%s: fread failed" +msgstr "%s: fread en échec" + +#: objcopy.c:665 +#, c-format +msgid "Ignoring rubbish found on line %d of %s" +msgstr "Rebuts ignorés trouvés sur la ligne %d de %s" + +#: objcopy.c:886 #, c-format msgid "%s: Multiple redefinition of symbol \"%s\"" msgstr "%s: re-définition multiples du symbole \"%s\"" -#: objcopy.c:719 +#: objcopy.c:891 #, c-format msgid "%s: Symbol \"%s\" is target of more than one redefinition" msgstr "%s: symbole \"%s\" cible plus d'une re-définition" -#: objcopy.c:773 +#: objcopy.c:943 +msgid "Unable to change endianness of input file(s)" +msgstr "Incapable de changer de systèmes d'encodage (poids fort- faible) des fichiers d'entrée" + +#: objcopy.c:951 #, c-format msgid "copy from %s(%s) to %s(%s)\n" msgstr "copie de %s(%s) vers %s(%s)\n" -#: objcopy.c:792 +#: objcopy.c:975 #, c-format msgid "Warning: Output file cannot represent architecture %s" msgstr "AVERTISSEMENT: fichier de sortie ne peut représenter l'architecture %s" -#: objcopy.c:819 +#: objcopy.c:1002 #, c-format msgid "can't create section `%s': %s" msgstr "Ne peut créer la section `%s': %s" -#: objcopy.c:905 +#: objcopy.c:1088 #, c-format msgid "Can't fill gap after %s: %s" msgstr "Ne peut remplir le vide après %s: %s" -#: objcopy.c:930 +#: objcopy.c:1113 #, c-format msgid "Can't add padding to %s: %s" msgstr "Ne peut ajouter de remplissage pour %s: %s" -#: objcopy.c:1068 +#: objcopy.c:1252 #, c-format msgid "%s: error copying private BFD data: %s" msgstr "%s: erreur de copie des données privées BFD: %s" -#: objcopy.c:1102 +#: objcopy.c:1265 +msgid "unknown alternate machine code, ignored" +msgstr "code machine alternatif inconnu, ignoré" + +#: objcopy.c:1295 #, c-format msgid "cannot mkdir %s for archive copying (error: %s)" msgstr "ne peut créer le répertoire mkdir %s pour copie d'archivage (erreur: %s)" -#: objcopy.c:1291 +#: objcopy.c:1466 +#, c-format +msgid "Multiple renames of section %s" +msgstr "Changement multiples de noms de la section %s" + +#: objcopy.c:1550 msgid "making" msgstr "génération" -#: objcopy.c:1300 +#: objcopy.c:1559 msgid "size" msgstr "taille" -#: objcopy.c:1314 +#: objcopy.c:1573 msgid "vma" msgstr "vma" -#: objcopy.c:1340 +#: objcopy.c:1599 msgid "alignment" msgstr "alignement" -#: objcopy.c:1349 +#: objcopy.c:1607 msgid "flags" msgstr "fanions" -#: objcopy.c:1363 +#: objcopy.c:1624 msgid "private data" msgstr "données privées" -#: objcopy.c:1371 +#: objcopy.c:1632 #, c-format msgid "%s: section `%s': error in %s: %s" msgstr "%s: section `%s': erreur dans %s: %s" -#: objcopy.c:1645 +#: objcopy.c:1910 #, c-format msgid "%s: can't create debugging section: %s" msgstr "%s: ne peut créer la section de débug: %s" -#: objcopy.c:1660 +#: objcopy.c:1925 #, c-format msgid "%s: can't set debugging section contents: %s" msgstr "%s: ne peut initialiser le contenu de la section de débug: %s" -#: objcopy.c:1669 +#: objcopy.c:1934 #, c-format msgid "%s: don't know how to write debugging information for %s" msgstr "%s: ne sait comment écrire les informations de débug de %s" -#: objcopy.c:1775 +#: objcopy.c:2041 #, c-format msgid "%s: cannot stat: %s" msgstr "%s: ne peut évaluer par stat(): %s" -#: objcopy.c:1825 +#: objcopy.c:2092 msgid "byte number must be non-negative" msgstr "le nombre d'octet ne peut être négatif" -#: objcopy.c:1831 +#: objcopy.c:2102 msgid "interleave must be positive" msgstr "l'intercalage doit être positif" -#: objcopy.c:1851 objcopy.c:1859 +#: objcopy.c:2122 objcopy.c:2130 #, c-format msgid "%s both copied and removed" msgstr "%s les deux doivent être copiés et enlevés" -#: objcopy.c:1928 objcopy.c:1998 objcopy.c:2099 objcopy.c:2127 +#: objcopy.c:2203 objcopy.c:2273 objcopy.c:2373 objcopy.c:2400 objcopy.c:2424 +#: objcopy.c:2428 objcopy.c:2448 #, c-format msgid "bad format for %s" msgstr "mauvais format pour %s" -#: objcopy.c:1931 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "ne peut évaluer par stat(): %s: %s" - -#: objcopy.c:1949 -#, c-format -msgid "cannot open: %s: %s" -msgstr "ne peut ouvrir: %s: %s" - -#: objcopy.c:1953 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread en échec" - -#: objcopy.c:2067 +#: objcopy.c:2342 #, c-format msgid "Warning: truncating gap-fill from 0x%s to 0x%x" msgstr "AVERTISSEMENT: réduction du remplissage de 0x%s à 0x%x" -#: objcopy.c:2169 +#: objcopy.c:2494 +msgid "alternate machine code index must be positive" +msgstr "le code alternatif d'index du code machine doit être positif" + +#: objcopy.c:2512 msgid "byte number must be less than interleave" msgstr "le nombre d'octets ne peut être plus petit que celui de l'intercalage" -#: objcopy.c:2188 +#: objcopy.c:2539 +#, c-format +msgid "architecture %s unknown" +msgstr "architecture %s inconnue" + +#: objcopy.c:2543 +msgid "Warning: input target 'binary' required for binary architecture parameter." +msgstr "AVERTISSEMENT: la cible d'entrée 'binary' requiert un paramètre pour une architecture binaire." + +#: objcopy.c:2544 +#, c-format +msgid " Argument %s ignored" +msgstr " Argument %s ignoré" + +#: objcopy.c:2550 #, c-format msgid "Cannot stat: %s: %s" msgstr "Ne peut évaluer par stat(): %s: %s" -#: objcopy.c:2228 objcopy.c:2242 +#: objcopy.c:2590 objcopy.c:2604 #, c-format msgid "%s %s%c0x%s never used" msgstr "%s %s%c0x%s jamais utilisé" -#: objdump.c:223 +#: objdump.c:164 #, c-format msgid "Usage: %s OPTION... FILE...\n" msgstr "Usage: %s OPTION... FICHIER...\n" -#: objdump.c:224 +#: objdump.c:165 msgid "Display information from object FILE.\n" msgstr "Afficher les informations depuis le FICHIER objet.\n" -#: objdump.c:225 +#: objdump.c:166 msgid "\n At least one of the following switches must be given:\n" msgstr "\n Au moins un des commutateurs suivants doit être fourni:\n" -#: objdump.c:226 +#: objdump.c:167 msgid "" " -a, --archive-headers Display archive header information\n" " -f, --file-headers Display the contents of the overall file header\n" @@ -1836,11 +1895,11 @@ msgstr "" " -i, --info afficher les formats objets et les architectures supportées\n" " -H, --help afficher cette information\n" -#: objdump.c:248 +#: objdump.c:189 msgid "\n The following switches are optional:\n" msgstr "\n Les commutateurs suivants sont optionnels:\n" -#: objdump.c:249 +#: objdump.c:190 msgid "" " -b, --target=BFDNAME Specify the target object format as BFDNAME\n" " -m, --architecture=MACHINE Specify the target architecture as MACHINE\n" @@ -1882,120 +1941,120 @@ msgstr "" " --adjust-vma=DÉCALAGE ajouter un DÉCALAGE à toutes les adresses affichés des sections\n" "\n" -#: objdump.c:419 +#: objdump.c:359 msgid "Sections:\n" msgstr "Sections:\n" -#: objdump.c:422 +#: objdump.c:362 msgid "Idx Name Size VMA LMA File off Algn" msgstr "Idx Nom Taille VMA LMA Fich off Algn" -#: objdump.c:424 +#: objdump.c:364 msgid "Idx Name Size VMA LMA File off Algn" msgstr "Idx Nom Taille VMA LMA Fich off Algn" -#: objdump.c:428 +#: objdump.c:368 msgid " Flags" msgstr " Fanions" -#: objdump.c:478 +#: objdump.c:418 #, c-format msgid "%s: not a dynamic object" msgstr "%s: n'est pas un objet dynamique" -#: objdump.c:494 +#: objdump.c:434 #, c-format msgid "%s: No dynamic symbols" msgstr "%s: aucun symboles dynamiques" -#: objdump.c:1197 +#: objdump.c:1124 msgid "Out of virtual memory" msgstr "Mémoire virtuelle épuisée" -#: objdump.c:1616 +#: objdump.c:1553 #, c-format msgid "Can't use supplied machine %s" msgstr "Ne peut utiliser la machine %s" -#: objdump.c:1634 +#: objdump.c:1571 #, c-format msgid "Can't disassemble for architecture %s\n" msgstr "Ne peut déassembler pour l'architecture %s\n" -#: objdump.c:1716 +#: objdump.c:1653 #, c-format msgid "Disassembly of section %s:\n" msgstr "Déassemblage de la section %s:\n" -#: objdump.c:1890 +#: objdump.c:1828 #, c-format msgid "No %s section present\n\n" msgstr "Aucune section %s présente\n\n" -#: objdump.c:1897 +#: objdump.c:1835 #, c-format msgid "%s has no %s section" msgstr "%s n'as pas de section %s" -#: objdump.c:1911 +#: objdump.c:1849 #, c-format msgid "Reading %s section of %s failed: %s" msgstr "Lecture de la section %s de %s a échouée: %s" -#: objdump.c:1923 +#: objdump.c:1861 #, c-format msgid "Reading %s section of %s failed: %s\n" msgstr "Lecture de la section %s de %s a échouée: %s\n" -#: objdump.c:1966 +#: objdump.c:1904 #, c-format msgid "Contents of %s section:\n\n" msgstr "Contenu de la section %s:\n\n" -#: objdump.c:2066 +#: objdump.c:2004 #, c-format msgid "architecture: %s, " msgstr "architecture: %s, " -#: objdump.c:2069 +#: objdump.c:2007 #, c-format msgid "flags 0x%08x:\n" msgstr "fanions 0x%08x:\n" -#: objdump.c:2082 +#: objdump.c:2020 msgid "\nstart address 0x" msgstr "\nadresse de départ 0x" -#: objdump.c:2114 +#: objdump.c:2052 #, c-format msgid "\n%s: file format %s\n" msgstr "\n%s: format de fichier %s\n" -#: objdump.c:2156 +#: objdump.c:2094 #, c-format msgid "%s: printing debugging information failed" msgstr "%s: échec d'affichage des information de débug" -#: objdump.c:2233 +#: objdump.c:2171 #, c-format msgid "In archive %s:\n" msgstr "Dans l'archive %s:\n" -#: objdump.c:2285 +#: objdump.c:2223 #, c-format msgid "Contents of section %s:\n" msgstr "Contenu de la section %s:\n" -#: objdump.c:2798 +#: objdump.c:2736 #, c-format msgid "BFD header file version %s\n" msgstr "Version de l'en-tête du fichier BFD %s\n" -#: objdump.c:2882 +#: objdump.c:2825 msgid "unrecognized -E option" msgstr "option -E non reconnue" -#: objdump.c:2893 +#: objdump.c:2836 #, c-format msgid "unrecognized --endian type `%s'" msgstr "type non reconnu --endian `%s'" @@ -2034,386 +2093,336 @@ msgstr "%s: aucune information de débug msgid "Last stabs entries before error:\n" msgstr "Dernière entrées à inclure avant erreur:\n" -#: readelf.c:260 +#: readelf.c:318 #, c-format -msgid "Unable to seek to start of %s at %x\n" -msgstr "Incapable de repérer le début de %s à %x\n" - -#: readelf.c:268 -#, c-format -msgid "Out of memory allocating %d bytes for %s\n" -msgstr "Mémoire épuisée lors de l'allocation de %d octets pour %s\n" +msgid "%s: Error: " +msgstr "%s: ERREUR: " -#: readelf.c:274 +#: readelf.c:329 #, c-format -msgid "Unable to read in %d bytes of %s\n" -msgstr "Incapable de lire %d octets de %s\n" +msgid "%s: Warning: " +msgstr "%s: AVERTISSEMENT: " -#: readelf.c:284 +#: readelf.c:351 #, c-format msgid "Unable to seek to %x for %s\n" msgstr "Incapable de repérer %x de %s\n" -#: readelf.c:289 -#, c-format -msgid "Unable to read data at %x for %s\n" -msgstr "Incapable de lire les données à %x de %s\n" - -#: readelf.c:304 readelf.c:330 +#: readelf.c:362 #, c-format -msgid "%s: Error: " -msgstr "%s: ERREUR: " +msgid "Out of memory allocating %d bytes for %s\n" +msgstr "Mémoire épuisée lors de l'allocation de %d octets pour %s\n" -#: readelf.c:316 readelf.c:345 +#: readelf.c:370 #, c-format -msgid "%s: Warning: " -msgstr "%s: AVERTISSEMENT: " +msgid "Unable to read in %d bytes of %s\n" +msgstr "Incapable de lire %d octets de %s\n" -#: readelf.c:395 readelf.c:533 +#: readelf.c:423 readelf.c:581 #, c-format msgid "Unhandled data length: %d\n" msgstr "Taille de données non traitées: %d\n" -#: readelf.c:597 +#: readelf.c:660 msgid "Don't know about relocations on this machine architecture\n" msgstr "Ne connaît pas de méthode pour la relocalisation sur l'architecture de cette machine\n" -#: readelf.c:637 readelf.c:666 readelf.c:698 readelf.c:726 +#: readelf.c:682 readelf.c:711 readelf.c:757 readelf.c:784 +msgid "relocs" +msgstr "relocalisations" + +#: readelf.c:693 readelf.c:722 readelf.c:767 readelf.c:794 msgid "out of memory parsing relocs" msgstr "Mémoire épuisée lors de l'analyse syntaxique des relocalisations" -#: readelf.c:744 -msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" -msgstr " Décalage Info Type Val. symboles Noms des symboles Addenda\n" - -#: readelf.c:747 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Décalage Info Type Val. symboles Noms des symboles\n" +#: readelf.c:845 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Décalage Info Type Val. symboles Noms de symboles Addenda\n" + +#: readelf.c:848 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Décalage Info Type Val. symboles Noms des symboles\n" + +#: readelf.c:854 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Décalage Info Type Val. symboles Noms des symboles Addenda\n" + +#: readelf.c:857 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Décalage Info Type Val. symboles Noms des symboles\n" -#: readelf.c:907 readelf.c:909 +#: readelf.c:1061 readelf.c:1063 #, c-format msgid "unrecognised: %-7lx" msgstr "non reconnue: %-7lx" -#: readelf.c:934 +#: readelf.c:1085 #, c-format msgid "" msgstr "" -#: readelf.c:1147 +#: readelf.c:1315 #, c-format msgid "Processor Specific: %lx" msgstr "Spécificités du processeur: %lx" -#: readelf.c:1166 +#: readelf.c:1334 #, c-format msgid "Operating System specific: %lx" msgstr "Spécificités du systèmes d'exploitation: %lx" -#: readelf.c:1169 readelf.c:1677 +#: readelf.c:1337 readelf.c:1961 #, c-format msgid ": %lx" msgstr ": %lx" -#: readelf.c:1183 +#: readelf.c:1351 msgid "NONE (None)" msgstr "NONE (Aucun)" -#: readelf.c:1184 +#: readelf.c:1352 msgid "REL (Relocatable file)" msgstr "REL (Fichier de relocalisation)" -#: readelf.c:1185 +#: readelf.c:1353 msgid "EXEC (Executable file)" msgstr "EXEC (fichier exécutable)" -#: readelf.c:1186 +#: readelf.c:1354 msgid "DYN (Shared object file)" msgstr "DYN (fichier objet partagé)" -#: readelf.c:1187 +#: readelf.c:1355 msgid "CORE (Core file)" msgstr "CORE (fichier core)" -#: readelf.c:1191 +#: readelf.c:1359 #, c-format msgid "Processor Specific: (%x)" msgstr "Spécificités du processor: (%x)" -#: readelf.c:1193 +#: readelf.c:1361 #, c-format msgid "OS Specific: (%x)" msgstr "Spécificités du système d'exploitation: (%x)" -#: readelf.c:1195 readelf.c:1281 readelf.c:1811 +#: readelf.c:1363 readelf.c:1460 readelf.c:2112 #, c-format msgid ": %x" msgstr ": %x" -#: readelf.c:1208 +#: readelf.c:1376 msgid "None" msgstr "Aucun" -#: readelf.c:1849 +#: readelf.c:2152 msgid "Usage: readelf {options} elf-file(s)\n" msgstr "Usage: readelf {options} fichier(s)-elf\n" -#: readelf.c:1850 +#: readelf.c:2153 msgid " Options are:\n" msgstr " Les options sont:\n" -#: readelf.c:1851 +#: readelf.c:2154 msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" msgstr " -a ou --all équivalent à: -h -l -S -s -r -d -V -A -I\n" -#: readelf.c:1852 +#: readelf.c:2155 msgid " -h or --file-header Display the ELF file header\n" msgstr " -h ou --file-header afficher l'en-tête du fichier ELF\n" -#: readelf.c:1853 +#: readelf.c:2156 msgid " -l or --program-headers or --segments\n" msgstr " -l ou --program-headers ou --segments\n" -#: readelf.c:1854 +#: readelf.c:2157 msgid " Display the program headers\n" msgstr " afficher les en-têtes du programme\n" -#: readelf.c:1855 +#: readelf.c:2158 msgid " -S or --section-headers or --sections\n" msgstr " -S ou --section-headers ou --sections\n" -#: readelf.c:1856 +#: readelf.c:2159 msgid " Display the sections' header\n" msgstr " afficher l'en-tête des sections\n" -#: readelf.c:1857 +#: readelf.c:2160 msgid " -e or --headers Equivalent to: -h -l -S\n" msgstr " -e ou --headers équivalent à: -h -l -S\n" -#: readelf.c:1858 +#: readelf.c:2161 msgid " -s or --syms or --symbols Display the symbol table\n" msgstr " -s ou --syms ou --symbols afficher la table de symboles\n" -#: readelf.c:1859 +#: readelf.c:2162 msgid " -n or --notes Display the core notes (if present)\n" msgstr " -n ou --notes afficher les notes du core (si disponible)\n" -#: readelf.c:1860 +#: readelf.c:2163 msgid " -r or --relocs Display the relocations (if present)\n" msgstr " -r ou --relocs afficher les relocalisations (si disponibles)\n" -#: readelf.c:1861 +#: readelf.c:2164 +msgid " -u or --unwind Display the unwind info (if present)\n" +msgstr " -u ou --unwind afficher les infos unwind (si disponibles)\n" + +#: readelf.c:2165 msgid " -d or --dynamic Display the dynamic segment (if present)\n" msgstr " -d ou --dynamic afficher le segement dynamique (si disponible)\n" -#: readelf.c:1862 +#: readelf.c:2166 msgid " -V or --version-info Display the version sections (if present)\n" msgstr " -V ou --version-info afficher la version des sections (si disponible)\n" -#: readelf.c:1863 +#: readelf.c:2167 msgid " -A or --arch-specific Display architecture specific information (if any).\n" msgstr " -A ou --arch-specific afficher les informations de spécificités d'architecture (si disponible).\n" -#: readelf.c:1864 +#: readelf.c:2168 msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" msgstr " -D ou --use-dynamic utiliser les infos de la section dynamique lors de l'affichage des symboles\n" -#: readelf.c:1865 +#: readelf.c:2169 msgid " -x or --hex-dump=\n" msgstr " -x ou --hex-dump=\n" -#: readelf.c:1866 +#: readelf.c:2170 msgid " Dump the contents of section \n" msgstr " vidanger le contenu de la section \n" -#: readelf.c:1867 -msgid " -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" -msgstr " -w[liaprf] ou --debug-dump[=ligne,=info,=abbrev,=nompub,=plages,=trames]\n" +#: readelf.c:2171 +msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" +msgstr " -w[liaprmfs] ou --debug-dump[=ligne,=info,=abbrev,=nompub,=plages,=macro,=trames,=str]\n" -#: readelf.c:1868 +#: readelf.c:2172 msgid " Display the contents of DWARF2 debug sections\n" msgstr " afficher le contenu des sections DWARF2 de débug\n" -#: readelf.c:1870 +#: readelf.c:2174 msgid " -i or --instruction-dump=\n" msgstr " -i ou --instruction-dump=\n" -#: readelf.c:1871 +#: readelf.c:2175 msgid " Disassemble the contents of section \n" msgstr " déassembler le contenu de la section \n" -#: readelf.c:1873 +#: readelf.c:2177 msgid " -I or --histogram Display histogram of bucket list lengths\n" msgstr " -I ou --histogram afficher l'histogramme of bucket list lengths\n" -#: readelf.c:1874 +#: readelf.c:2178 msgid " -v or --version Display the version number of readelf\n" msgstr " -v ou --version afficher le numéro de version de readelf\n" -#: readelf.c:1875 +#: readelf.c:2179 +msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n" +msgstr " -W ou --wide ne pas couper les lignes ou tronquer les symboles pour s'insérer dans 80 colonnes\n" + +#: readelf.c:2180 msgid " -H or --help Display this information\n" msgstr " -H ou --help afficher cette information\n" -#: readelf.c:1893 +#: readelf.c:2198 msgid "Out of memory allocating dump request table." msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange" -#: readelf.c:2033 +#: readelf.c:2357 #, c-format msgid "Unrecognised debug option '%s'\n" msgstr "Option de débug non reconnue '%s'\n" -#: readelf.c:2058 +#: readelf.c:2385 #, c-format msgid "Invalid option '-%c'\n" msgstr "Option invalide '-%c'\n" -#: readelf.c:2071 +#: readelf.c:2398 msgid "Nothing to do.\n" msgstr "Rien à faire.\n" -#: readelf.c:2084 readelf.c:2101 readelf.c:3740 +#: readelf.c:2411 readelf.c:2428 readelf.c:4700 msgid "none" msgstr "aucun" -#: readelf.c:2085 -msgid "ELF32" -msgstr "ELF32" - -#: readelf.c:2086 -msgid "ELF64" -msgstr "ELF64" - -#: readelf.c:2088 readelf.c:2105 readelf.c:2133 +#: readelf.c:2415 readelf.c:2432 readelf.c:2460 #, c-format msgid "" msgstr "" -#: readelf.c:2102 +#: readelf.c:2429 msgid "2's complement, little endian" msgstr "complément à 2, système à octets de poids faible d'abord (little endian)" -#: readelf.c:2103 +#: readelf.c:2430 msgid "2's complement, big endian" msgstr "complément à 2, système à octets de poids fort d'abord (big endian)" -#: readelf.c:2118 -msgid "UNIX - System V" -msgstr "UNIX - System V" - -#: readelf.c:2119 -msgid "UNIX - HP-UX" -msgstr "UNIX - HP-UX" - -#: readelf.c:2120 -msgid "UNIX - NetBSD" -msgstr "UNIX - NetBSD" - -#: readelf.c:2121 -msgid "UNIX - Linux" -msgstr "UNIX - Linux" - -#: readelf.c:2122 -msgid "GNU/Hurd" -msgstr "GNU/Hurd" - -#: readelf.c:2123 -msgid "UNIX - Solaris" -msgstr "UNIX - Solaris" - -#: readelf.c:2124 -msgid "UNIX - AIX" -msgstr "UNIX - AIX" - -#: readelf.c:2125 -msgid "UNIX - IRIX" -msgstr "UNIX - IRIX" - -#: readelf.c:2126 -msgid "UNIX - FreeBSD" -msgstr "UNIX - FreeBSD" - -#: readelf.c:2127 -msgid "UNIX - TRU64" -msgstr "UNIX - TRU64" - -#: readelf.c:2128 -msgid "Novell - Modesto" -msgstr "Novell - Modesto" - -#: readelf.c:2129 -msgid "UNIX - OpenBSD" -msgstr "UNIX - OpenBSD" - -#: readelf.c:2130 +#: readelf.c:2457 msgid "Standalone App" msgstr "Tache autonome" -#: readelf.c:2131 -msgid "ARM" -msgstr "ARM" - -#: readelf.c:2148 +#: readelf.c:2475 msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "N'est pas un fichier ELF - a les mauvais octets magiques au départ\n" -#: readelf.c:2156 +#: readelf.c:2483 msgid "ELF Header:\n" msgstr "En-tête ELF:\n" -#: readelf.c:2157 +#: readelf.c:2484 msgid " Magic: " msgstr " Magique: " -#: readelf.c:2161 +#: readelf.c:2488 #, c-format msgid " Class: %s\n" msgstr " Classe: %s\n" -#: readelf.c:2163 +#: readelf.c:2490 #, c-format msgid " Data: %s\n" msgstr " Données: %s\n" -#: readelf.c:2165 +#: readelf.c:2492 #, c-format msgid " Version: %d %s\n" msgstr " Version: %d %s\n" -#: readelf.c:2172 +#: readelf.c:2499 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: readelf.c:2174 +#: readelf.c:2501 #, c-format msgid " ABI Version: %d\n" msgstr " Version ABI: %d\n" -#: readelf.c:2176 +#: readelf.c:2503 #, c-format msgid " Type: %s\n" msgstr " Type: %s\n" -#: readelf.c:2178 +#: readelf.c:2505 #, c-format msgid " Machine: %s\n" msgstr " Machine: %s\n" -#: readelf.c:2180 +#: readelf.c:2507 #, c-format msgid " Version: 0x%lx\n" msgstr " Version: 0x%lx\n" -#: readelf.c:2183 +#: readelf.c:2510 msgid " Entry point address: " msgstr " Adresse du point d'entrée: " -#: readelf.c:2185 +#: readelf.c:2512 msgid "\n Start of program headers: " msgstr "\n Début des en-têtes de programme: " -#: readelf.c:2187 +#: readelf.c:2514 msgid "" " (bytes into file)\n" " Start of section headers: " @@ -2421,1001 +2430,1244 @@ msgstr "" " (octets dans le fichier)\n" " Début des en-têtes de section: " -#: readelf.c:2189 +#: readelf.c:2516 msgid " (bytes into file)\n" msgstr " (octets dans le fichier)\n" -#: readelf.c:2191 +#: readelf.c:2518 #, c-format msgid " Flags: 0x%lx%s\n" msgstr " Fanions: 0x%lx%s\n" -#: readelf.c:2194 +#: readelf.c:2521 #, c-format msgid " Size of this header: %ld (bytes)\n" msgstr " Taille de cet en-tête: %ld (bytes)\n" -#: readelf.c:2196 +#: readelf.c:2523 #, c-format msgid " Size of program headers: %ld (bytes)\n" msgstr " Taille de l'en-tête du programme: %ld (bytes)\n" -#: readelf.c:2198 +#: readelf.c:2525 #, c-format msgid " Number of program headers: %ld\n" msgstr " Nombre d'en-tête du programme: %ld\n" -#: readelf.c:2200 +#: readelf.c:2527 #, c-format msgid " Size of section headers: %ld (bytes)\n" msgstr " Taille des en-têtes de section: %ld (bytes)\n" -#: readelf.c:2202 +#: readelf.c:2529 #, c-format -msgid " Number of section headers: %ld\n" -msgstr " Nombre d'en-têtes de section: %ld\n" +msgid " Number of section headers: %ld" +msgstr " Nombre d'en-têtes de section: %ld" -#: readelf.c:2204 +#: readelf.c:2534 #, c-format -msgid " Section header string table index: %ld\n" -msgstr " Table d'indexes des chaînes d'en-tête de section: %ld\n" +msgid " Section header string table index: %ld" +msgstr " Table d'indexes des chaînes d'en-tête de section: %ld" -#: readelf.c:2289 +#: readelf.c:2568 readelf.c:2604 +msgid "program headers" +msgstr "En-tête de programme" + +#: readelf.c:2638 msgid "\nThere are no program headers in this file.\n" msgstr "\nIl n'y a pas d'en-têtes de programme dans ce fichier.\n" -#: readelf.c:2295 +#: readelf.c:2644 #, c-format msgid "\nElf file type is %s\n" msgstr "\nType de fichier ELF est %s\n" -#: readelf.c:2296 +#: readelf.c:2645 msgid "Entry point " msgstr "Point d'entrée " -#: readelf.c:2298 +#: readelf.c:2647 #, c-format msgid "\nThere are %d program headers, starting at offset " msgstr "\nIl y a %d en-têtes de programme, débutant à l'adresse de décalage" -#: readelf.c:2309 readelf.c:2485 readelf.c:2527 readelf.c:2570 readelf.c:2611 -#: readelf.c:3133 readelf.c:3174 readelf.c:3350 readelf.c:4358 readelf.c:4372 -#: readelf.c:7741 readelf.c:7781 +#: readelf.c:2658 readelf.c:2883 readelf.c:2929 readelf.c:2992 readelf.c:3059 +#: readelf.c:4087 readelf.c:4130 readelf.c:4310 readelf.c:5246 readelf.c:5260 +#: readelf.c:9246 readelf.c:9286 msgid "Out of memory\n" msgstr "Mémoire épuisée\n" -#: readelf.c:2327 +#: readelf.c:2676 #, c-format msgid "\nProgram Header%s:\n" msgstr "\nEn-tête de programme%s:\n" -#: readelf.c:2331 +#: readelf.c:2680 msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" msgstr " Type Décalage Adr. vir. Adr.phys. T.Fich. T.Mém. Fan Alignement\n" -#: readelf.c:2335 +#: readelf.c:2683 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " Type Décalage Adr. vir. Adr.phys. T.Fich. T.Mém. Fan Alignement\n" + +#: readelf.c:2687 msgid " Type Offset VirtAddr PhysAddr\n" msgstr " Type Décalage Adr.virt Adr.phys.\n" -#: readelf.c:2337 +#: readelf.c:2689 msgid " FileSiz MemSiz Flags Align\n" msgstr " Taille fichier Taille mémoire Fanion Alignement\n" -#: readelf.c:2395 +#: readelf.c:2789 msgid "more than one dynamic segment\n" msgstr "plus d'un segment dynamique\n" -#: readelf.c:2403 +#: readelf.c:2797 msgid "Unable to find program interpreter name\n" msgstr "Incapable de repérer le nom de l'interpréteur du programme\n" -#: readelf.c:2410 +#: readelf.c:2804 #, c-format msgid "\n [Requesting program interpreter: %s]" msgstr "\n [Réquisition de l'interpréteur de programme: %s]" -#: readelf.c:2428 +#: readelf.c:2822 msgid "\n Section to Segment mapping:\n" msgstr "\n Section à la projection de segement:\n" -#: readelf.c:2429 +#: readelf.c:2823 msgid " Segment Sections...\n" msgstr " Sections de segment...\n" -#: readelf.c:2693 +#: readelf.c:2874 readelf.c:2920 +msgid "section headers" +msgstr "En-têtes de section" + +#: readelf.c:2968 readelf.c:3035 +msgid "symbols" +msgstr "symboles" + +#: readelf.c:2979 readelf.c:3046 +msgid "symtab shndx" +msgstr "symtab shndx" + +#: readelf.c:3147 msgid "\nThere are no sections in this file.\n" msgstr "\nIl n'y a pas de section dans ce fichier.\n" -#: readelf.c:2699 +#: readelf.c:3153 #, c-format msgid "There are %d section headers, starting at offset 0x%lx:\n" msgstr "Il y a %d en-têtes de section, débutant à l'adresse de décalage 0x%lx:\n" -#: readelf.c:2739 +#: readelf.c:3170 readelf.c:3479 readelf.c:3826 readelf.c:5397 +msgid "string table" +msgstr "table de chaînes" + +#: readelf.c:3191 msgid "File contains multiple dynamic symbol tables\n" msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n" -#: readelf.c:2752 +#: readelf.c:3203 msgid "File contains multiple dynamic string tables\n" msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n" -#: readelf.c:2786 +#: readelf.c:3209 +msgid "dynamic strings" +msgstr "chaînes dynamiques" + +#: readelf.c:3215 +msgid "File contains multiple symtab shndx tables\n" +msgstr "Le fichier contient de multiples tables symboliques shndx\n" + +#: readelf.c:3250 #, c-format msgid "\nSection Header%s:\n" msgstr "\nEn-têtes de section%s:\n" -#: readelf.c:2790 +#: readelf.c:3254 msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" msgstr " [Nr] Nom Type Adr Décala.Taille ES Fan LN Inf Al\n" -#: readelf.c:2793 +#: readelf.c:3257 +msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n" +msgstr " [Nr] Nom Type Adr Décala.Taille ES Fan LN Inf Al\n" + +#: readelf.c:3260 msgid " [Nr] Name Type Address Offset\n" msgstr " [Nr] Nom Type Adresse Décalage\n" -#: readelf.c:2794 +#: readelf.c:3261 msgid " Size EntSize Flags Link Info Align\n" msgstr " Taille TaillEntré Fanion Lien Info Alignement\n" -#: readelf.c:2841 -msgid "Key to Flags:\n" -msgstr "Clé des fanions:\n" - -#: readelf.c:2842 -msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" -msgstr " W (écrit), A (alloc), X (exécution), M (fusion), S (chaînes)\n" - -#: readelf.c:2843 -msgid " I (info), L (link order), G (group), x (unknown)\n" -msgstr " I (info), L (ordre de liens), G (groupe), x (inconnu)\n" - -#: readelf.c:2844 -msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" -msgstr " O (traitement additionnel sys. exploit. requis) o (spécificités sys. esploit.), p (spécificités de processeur)\n" +#: readelf.c:3356 +msgid "" +"Key to Flags:\n" +" W (write), A (alloc), X (execute), M (merge), S (strings)\n" +" I (info), L (link order), G (group), x (unknown)\n" +" O (extra OS processing required) o (OS specific), p (processor specific)\n" +msgstr "" +"Clé des fanions:\n" +" W (écriture), A (allocation), X (exécution), M (fusion), S (chaînes)\n" +" I (info), L (ordre des liens), G (groupe), x (inconnu)\n" +" O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n" -#: readelf.c:2902 +#: readelf.c:3417 #, c-format msgid "\nRelocation section at offset 0x%lx contains %ld bytes:\n" msgstr "\nSection de relocalisation à l'adresse de décalage 0x%lx contient %ld octets:\n" -#: readelf.c:2909 +#: readelf.c:3424 msgid "\nThere are no dynamic relocations in this file.\n" msgstr "\nIl n'y a pas d'informations de relocalisation dynamique dans ce fichier.\n" -#: readelf.c:2937 +#: readelf.c:3451 msgid "\nRelocation section " msgstr "\nSection de relocalisation " -#: readelf.c:2944 +#: readelf.c:3458 readelf.c:3905 #, c-format msgid " at offset 0x%lx contains %lu entries:\n" msgstr " à l'adresse de décalage 0x%lx contient %lu entrées:\n" -#: readelf.c:2972 +#: readelf.c:3496 msgid "\nThere are no relocations in this file.\n" msgstr "\nIl n'y a pas de relocalisation dans ce fichier.\n" -#: readelf.c:3227 +#: readelf.c:3692 +msgid "unwind table" +msgstr "table unwind" + +#: readelf.c:3743 readelf.c:3755 readelf.c:7608 readelf.c:7619 +#, c-format +msgid "Skipping unexpected symbol type %u\n" +msgstr "Escamotage du type de symbole inattendu %u\n" + +#: readelf.c:3763 +#, c-format +msgid "Skipping unexpected relocation type %s\n" +msgstr "Escamotage du type de relocalisation inattendue %s\n" + +#: readelf.c:3808 readelf.c:3833 +msgid "\nThere are no unwind sections in this file.\n" +msgstr "\nIl n'y a pas de section unwind dans ce fichier.\n" + +#: readelf.c:3884 +msgid "\nCould not find unwind info section for " +msgstr "\nN'a pu repérer les infos d'une section unwind pour " + +#: readelf.c:3896 +msgid "unwind info" +msgstr "info unwind" + +#: readelf.c:3898 +msgid "\nUnwind section " +msgstr "\nSection unwind" + +#: readelf.c:4071 readelf.c:4114 +msgid "dynamic segment" +msgstr "segment dynamique" + +#: readelf.c:4183 msgid "\nThere is no dynamic segment in this file.\n" msgstr "\nIl n'y a pas de segement dynamique dans ce fichier.\n" -#: readelf.c:3261 +#: readelf.c:4217 msgid "Unable to seek to end of file!" msgstr "Incapable de repérer la fin du fichier!" -#: readelf.c:3270 +#: readelf.c:4228 msgid "Unable to determine the number of symbols to load\n" msgstr "Incapable de déterminer le nombre de symboles à charger\n" -#: readelf.c:3300 +#: readelf.c:4258 msgid "Unable to seek to end of file\n" msgstr "Incapable de repérer la fin du fichier\n" -#: readelf.c:3306 +#: readelf.c:4264 msgid "Unable to determine the length of the dynamic string table\n" msgstr "Incapable de déterminer la longueur de la table de chaînes dynamiques\n" -#: readelf.c:3367 +#: readelf.c:4269 +msgid "dynamic string table" +msgstr "table dynamique de chaînes" + +#: readelf.c:4303 +msgid "symbol information" +msgstr "information de symbole" + +#: readelf.c:4327 #, c-format msgid "\nDynamic segment at offset 0x%x contains %ld entries:\n" msgstr "\nSegment dynamique à l'adresse de décalage 0x%x contient %ld entrées:\n" -#: readelf.c:3370 +#: readelf.c:4330 msgid " Tag Type Name/Value\n" msgstr " Étiquettes Type Nom/Valeur\n" -#: readelf.c:3406 +#: readelf.c:4366 msgid "Auxiliary library" msgstr "Librairie auxiliaire" -#: readelf.c:3410 +#: readelf.c:4370 msgid "Filter library" msgstr "Librairie de filtre" -#: readelf.c:3414 +#: readelf.c:4374 msgid "Configuration file" msgstr "Fichier de configuration" -#: readelf.c:3418 +#: readelf.c:4378 msgid "Dependency audit library" msgstr "Librairie d'audit des dépendances" -#: readelf.c:3422 +#: readelf.c:4382 msgid "Audit library" msgstr "Librairie des audits" -#: readelf.c:3440 readelf.c:3466 readelf.c:3492 +#: readelf.c:4400 readelf.c:4426 readelf.c:4452 msgid "Flags:" msgstr "Fanions:" -#: readelf.c:3442 readelf.c:3468 readelf.c:3494 +#: readelf.c:4402 readelf.c:4428 readelf.c:4454 msgid " None\n" msgstr "Aucun\n" -#: readelf.c:3613 +#: readelf.c:4573 #, c-format msgid "Shared library: [%s]" msgstr "Librairie partagées: [%s]" -#: readelf.c:3616 +#: readelf.c:4576 msgid " program interpreter" msgstr " programme interpréteur" -#: readelf.c:3620 +#: readelf.c:4580 #, c-format msgid "Library soname: [%s]" msgstr "Librairie soname: [%s]" -#: readelf.c:3624 +#: readelf.c:4584 #, c-format msgid "Library rpath: [%s]" msgstr "Librairie rpath: [%s]" -#: readelf.c:3628 +#: readelf.c:4588 #, c-format msgid "Library runpath: [%s]" msgstr "Librairie runpath:[%s]" -#: readelf.c:3689 +#: readelf.c:4649 #, c-format msgid "Not needed object: [%s]\n" msgstr "Objet non nécessaire: [%s]\n" -#: readelf.c:3786 +#: readelf.c:4746 #, c-format msgid "\nVersion definition section '%s' contains %ld entries:\n" msgstr "\nSection des définitions de version '%s' contient %ld entrées:\n" -#: readelf.c:3789 +#: readelf.c:4749 msgid " Addr: 0x" msgstr " Adr: 0x" -#: readelf.c:3791 readelf.c:3979 +#: readelf.c:4751 readelf.c:4946 #, c-format msgid " Offset: %#08lx Link: %lx (%s)\n" msgstr " Décalage: %#08lx Lien: %lx (%s)\n" -#: readelf.c:3821 +#: readelf.c:4758 +msgid "version definition section" +msgstr "section de définition de version" + +#: readelf.c:4784 #, c-format msgid " %#06x: Rev: %d Flags: %s" msgstr " %#06x: Rev: %d Fanions: %s" -#: readelf.c:3824 +#: readelf.c:4787 #, c-format msgid " Index: %d Cnt: %d " msgstr " Index: %d Compteur: %d " -#: readelf.c:3835 +#: readelf.c:4798 #, c-format msgid "Name: %s\n" msgstr "Nom: %s\n" -#: readelf.c:3837 +#: readelf.c:4800 #, c-format msgid "Name index: %ld\n" msgstr "Nom de l'index: %ld\n" -#: readelf.c:3852 +#: readelf.c:4815 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Parent %d: %s\n" -#: readelf.c:3855 +#: readelf.c:4818 #, c-format msgid " %#06x: Parent %d, name index: %ld\n" msgstr " %#06x: Parent %d, name index: %ld\n" -#: readelf.c:3874 +#: readelf.c:4837 #, c-format msgid "\nVersion needs section '%s' contains %ld entries:\n" msgstr "\nVersion nécessitant la section '%s' contenant %ld entrées:\n" -#: readelf.c:3877 +#: readelf.c:4840 msgid " Addr: 0x" msgstr " Adr: 0x" -#: readelf.c:3879 +#: readelf.c:4842 #, c-format msgid " Offset: %#08lx Link to section: %ld (%s)\n" msgstr " Décalage: %#08lx Lien vers la section: %ld (%s)\n" -#: readelf.c:3905 +#: readelf.c:4848 +msgid "version need section" +msgstr "version nécessite une section" + +#: readelf.c:4870 #, c-format msgid " %#06x: Version: %d" msgstr " %#06x: Version: %d" -#: readelf.c:3908 +#: readelf.c:4873 #, c-format msgid " File: %s" msgstr " Fichier: %s" -#: readelf.c:3910 +#: readelf.c:4875 #, c-format msgid " File: %lx" msgstr " Fichier: %lx" -#: readelf.c:3912 +#: readelf.c:4877 #, c-format msgid " Cnt: %d\n" msgstr " Compteur: %d\n" -#: readelf.c:3930 +#: readelf.c:4895 #, c-format msgid " %#06x: Name: %s" msgstr " %#06x: Nom: %s" -#: readelf.c:3933 +#: readelf.c:4898 #, c-format msgid " %#06x: Name index: %lx" msgstr " %#06x: Nom de l'index: %lx" -#: readelf.c:3936 +#: readelf.c:4901 #, c-format msgid " Flags: %s Version: %d\n" msgstr " Fanions: %s Version: %d\n" -#: readelf.c:3974 +#: readelf.c:4937 +msgid "version string table" +msgstr "table chaîne de version" + +#: readelf.c:4941 #, c-format msgid "\nVersion symbols section '%s' contains %d entries:\n" msgstr "\nLa version de section '%s' des symboles contient %d entrée:\n" -#: readelf.c:3977 +#: readelf.c:4944 msgid " Addr: " msgstr " Adr: " -#: readelf.c:4007 +#: readelf.c:4954 +msgid "version symbol data" +msgstr "données de symbole de version" + +#: readelf.c:4981 msgid " 0 (*local*) " msgstr " 0 (*local*) " -#: readelf.c:4011 +#: readelf.c:4985 msgid " 1 (*global*) " msgstr " 1 (*global*) " -#: readelf.c:4233 +#: readelf.c:5020 readelf.c:5454 +msgid "version need" +msgstr "version nécessaire" + +#: readelf.c:5030 +msgid "version need aux (2)" +msgstr "version nécessite aux (2)" + +#: readelf.c:5071 readelf.c:5516 +msgid "version def" +msgstr "définition de version" + +#: readelf.c:5090 readelf.c:5531 +msgid "version def aux" +msgstr "définition de version aux" + +#: readelf.c:5121 msgid "\nNo version information found in this file.\n" msgstr "\nAucune information de version repérée dans ce fichier.\n" -#: readelf.c:4251 readelf.c:4286 +#: readelf.c:5139 readelf.c:5174 #, c-format msgid ": %d" msgstr ": %d" -#: readelf.c:4253 readelf.c:4298 +#: readelf.c:5141 readelf.c:5186 #, c-format msgid ": %d" msgstr ": %d" -#: readelf.c:4255 readelf.c:4301 +#: readelf.c:5143 readelf.c:5189 #, c-format msgid ": %d" msgstr ": %d" -#: readelf.c:4364 +#: readelf.c:5252 msgid "Unable to read in dynamic data\n" msgstr "Incapable de lire les données dynamiques\n" -#: readelf.c:4406 +#: readelf.c:5294 msgid "Unable to seek to start of dynamic information" msgstr "Incapable de repérer le début des informations dynamiques" -#: readelf.c:4412 +#: readelf.c:5300 msgid "Failed to read in number of buckets\n" msgstr "Échec de lecture parmi tous les baquets\n" -#: readelf.c:4418 +#: readelf.c:5306 msgid "Failed to read in number of chains\n" msgstr "Échec de lecture du nombre de chaînes\n" -#: readelf.c:4438 +#: readelf.c:5326 msgid "\nSymbol table for image:\n" msgstr "\nTable de symbole de l'image:\n" -#: readelf.c:4440 +#: readelf.c:5328 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr " Nb Buc: Valeur Taille Type Lien Vis Ndx Nom\n" -#: readelf.c:4442 +#: readelf.c:5330 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr " Nb Buc: Valeur Taille Type Lien Vis Ndx Nom\n" -#: readelf.c:4486 +#: readelf.c:5375 #, c-format msgid "\nSymbol table '%s' contains %lu entries:\n" msgstr "\nTable de symboles '%s' contient %lu entrées:\n" -#: readelf.c:4490 +#: readelf.c:5379 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n" -#: readelf.c:4492 +#: readelf.c:5381 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n" -#: readelf.c:4601 +#: readelf.c:5427 +msgid "version data" +msgstr "données de version" + +#: readelf.c:5467 +msgid "version need aux (3)" +msgstr "version nécessite aux (3)" + +#: readelf.c:5492 msgid "bad dynamic symbol" msgstr "mauvais symbole dynamique" -#: readelf.c:4660 +#: readelf.c:5554 msgid "\nDynamic symbol information is not available for displaying symbols.\n" msgstr "\nL'information dynamique des symboles n'est pas disponible pour l'affichage des symboles.\n" -#: readelf.c:4672 +#: readelf.c:5566 #, c-format msgid "\nHistogram for bucket list length (total of %d buckets):\n" msgstr "\nHistogramme de la longeur de la liste des baquets (total de %d baquets):\n" -#: readelf.c:4674 +#: readelf.c:5568 +#, c-format msgid " Length Number %% of total Coverage\n" msgstr " Long. Nombre %% de couverture totale\n" -#: readelf.c:4679 readelf.c:4698 readelf.c:7423 readelf.c:7616 +#: readelf.c:5573 readelf.c:5592 readelf.c:8825 readelf.c:9017 msgid "Out of memory" msgstr "Mémoire épuisée" -#: readelf.c:4747 +#: readelf.c:5641 #, c-format msgid "\nDynamic info segment at offset 0x%lx contains %d entries:\n" msgstr "\nSegment d'informations dynamiques à l'adresse de décalage 0x%lx contient %d entrées:\n" -#: readelf.c:4750 +#: readelf.c:5644 msgid " Num: Name BoundTo Flags\n" msgstr " Num: Nom Lier à Fanions\n" -#: readelf.c:4798 +#: readelf.c:5696 #, c-format msgid "\nAssembly dump of section %s\n" msgstr "\nVidange de la section assembleur %s\n" -#: readelf.c:4821 +#: readelf.c:5719 #, c-format msgid "\nSection '%s' has no data to dump.\n" msgstr "\nLa section '%s' n'a pas de données à être videngé.\n" -#: readelf.c:4826 +#: readelf.c:5724 #, c-format msgid "\nHex dump of section '%s':\n" msgstr "\nVidange hexadécimale de la section '%s':\n" -#: readelf.c:4978 -msgid "badly formed extended line op encountered!" -msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée" +#: readelf.c:5729 +msgid "section data" +msgstr "données de section" -#: readelf.c:4985 +#: readelf.c:5878 +msgid "badly formed extended line op encountered!\n" +msgstr "ligne rencontrée de l'extension de l'opérateur est mal composée!\n" + +#: readelf.c:5885 #, c-format msgid " Extended opcode %d: " msgstr " Code op étendu %d: " -#: readelf.c:4990 +#: readelf.c:5890 msgid "End of Sequence\n\n" msgstr "Fin de séquence\n\n" -#: readelf.c:4996 +#: readelf.c:5896 #, c-format msgid "set Address to 0x%lx\n" msgstr "initialisé l'adresse à 0x%lx\n" -#: readelf.c:5001 +#: readelf.c:5901 msgid " define new File Table entry\n" msgstr " définir une entrée pour un nouveau fichier de table\n" -#: readelf.c:5002 readelf.c:5124 +#: readelf.c:5902 readelf.c:6031 msgid " Entry\tDir\tTime\tSize\tName\n" msgstr " Entrée\tRép.\tDate\tTaille\tNom\n" -#: readelf.c:5004 +#: readelf.c:5904 #, c-format msgid " %d\t" msgstr " %d\t" -#: readelf.c:5007 readelf.c:5009 readelf.c:5011 readelf.c:5136 readelf.c:5138 -#: readelf.c:5140 +#: readelf.c:5907 readelf.c:5909 readelf.c:5911 readelf.c:6043 readelf.c:6045 +#: readelf.c:6047 #, c-format msgid "%lu\t" msgstr "%lu\t" -#: readelf.c:5012 +#: readelf.c:5912 #, c-format msgid "%s\n\n" msgstr "%s\n\n" -#: readelf.c:5016 +#: readelf.c:5916 #, c-format msgid "UNKNOWN: length %d\n" msgstr "UNKNOWN: longueur %d\n" -#: readelf.c:5042 +#: readelf.c:5942 #, c-format msgid "\nDump of debug contents of section %s:\n\n" msgstr "\nVidange du contenu de débug de la section %s:\n\n" -#: readelf.c:5054 +#: readelf.c:5954 +msgid "64-bit DWARF line info is not supported yet.\n" +msgstr "ligne info DWARF 64 bits n'est pas encore supportée.\n" + +#: readelf.c:5961 msgid "The line info appears to be corrupt - the section is too small\n" msgstr "La ligne d'information semble corrompue - la section est trop petite\n" -#: readelf.c:5062 +#: readelf.c:5969 msgid "Only DWARF version 2 line info is currently supported.\n" -msgstr "Seul la ligne d'info DAWRF de version 2 est couramment supportée.\n" +msgstr "Seul la ligne d'info DWARF de version 2 est couramment supportée.\n" -#: readelf.c:5077 +#: readelf.c:5984 #, c-format msgid " Length: %ld\n" msgstr " Longueur: %ld\n" -#: readelf.c:5078 +#: readelf.c:5985 #, c-format msgid " DWARF Version: %d\n" msgstr " Version DWARF: %d\n" -#: readelf.c:5079 +#: readelf.c:5986 #, c-format -msgid " Prolgue Length: %d\n" +msgid " Prologue Length: %d\n" msgstr " Longueur du prologue: %d\n" -#: readelf.c:5080 +#: readelf.c:5987 #, c-format msgid " Minimum Instruction Length: %d\n" msgstr " Longueur minimale des instructions: %d\n" -#: readelf.c:5081 +#: readelf.c:5988 #, c-format msgid " Initial value of 'is_stmt': %d\n" msgstr " Valeur initiale de 'is_stmt': %d\n" -#: readelf.c:5082 +#: readelf.c:5989 #, c-format msgid " Line Base: %d\n" msgstr " Ligne de base: %d\n" -#: readelf.c:5083 +#: readelf.c:5990 #, c-format msgid " Line Range: %d\n" msgstr " Ligne d'étendue: %d\n" -#: readelf.c:5084 +#: readelf.c:5991 #, c-format msgid " Opcode Base: %d\n" msgstr " Code op Base: %d\n" -#: readelf.c:5093 +#: readelf.c:6000 msgid "\n Opcodes:\n" msgstr "\n Codes op:\n" -#: readelf.c:5096 +#: readelf.c:6003 #, c-format msgid " Opcode %d has %d args\n" msgstr " Code op %d a %d arguments\n" -#: readelf.c:5102 +#: readelf.c:6009 msgid "\n The Directory Table is empty.\n" msgstr "\n La table des répertoires est vide.\n" -#: readelf.c:5105 +#: readelf.c:6012 msgid "\n The Directory Table:\n" msgstr "\n La table des répertoire:\n" -#: readelf.c:5109 +#: readelf.c:6016 #, c-format msgid " %s\n" msgstr " %s\n" -#: readelf.c:5120 +#: readelf.c:6027 msgid "\n The File Name Table is empty.\n" msgstr "\n La talbe des noms de fichiers est vide.\n" -#: readelf.c:5123 +#: readelf.c:6030 msgid "\n The File Name Table:\n" msgstr "\n La table des noms de fichiers:\n" -#: readelf.c:5131 +#: readelf.c:6038 #, c-format msgid " %d\t" msgstr " %d\t" -#: readelf.c:5142 +#: readelf.c:6049 #, c-format msgid "%s\n" msgstr "%s\n" #. Now display the statements. -#: readelf.c:5150 +#: readelf.c:6057 msgid "\n Line Number Statements:\n" msgstr "\n Numéro de ligne des déclarations:\n" -#: readelf.c:5169 +#: readelf.c:6073 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr " Code op spécial %d: avancé l'Adresse par %d à 0x%lx" + +#: readelf.c:6077 +#, c-format +msgid " and Line by %d to %d\n" +msgstr " et Ligne par %d à %d\n" + +#: readelf.c:6088 msgid " Copy\n" msgstr " Copie\n" -#: readelf.c:5176 +#: readelf.c:6095 #, c-format msgid " Advance PC by %d to %lx\n" msgstr " Avancer le compteur PC de %d à %lx\n" -#: readelf.c:5184 +#: readelf.c:6103 #, c-format msgid " Advance Line by %d to %d\n" msgstr " Avancer la ligne de %d à %d\n" -#: readelf.c:5191 +#: readelf.c:6110 #, c-format msgid " Set File Name to entry %d in the File Name Table\n" msgstr " Initialisé le nom du fichier à l'entrée %d dans la table des noms de fichiers\n" -#: readelf.c:5199 +#: readelf.c:6118 #, c-format msgid " Set column to %d\n" msgstr " Initialisé la colonne à %d\n" -#: readelf.c:5206 +#: readelf.c:6125 #, c-format msgid " Set is_stmt to %d\n" msgstr " Initialisé is_stmt avec %d\n" -#: readelf.c:5211 +#: readelf.c:6130 msgid " Set basic block\n" msgstr " Initialisé le bloc de base\n" -#: readelf.c:5219 +#: readelf.c:6138 #, c-format msgid " Advance PC by constant %d to 0x%lx\n" msgstr " Avancer le compteur PC par constante de %d à 0x%lx\n" -#: readelf.c:5227 +#: readelf.c:6146 #, c-format msgid " Advance PC by fixed size amount %d to 0x%lx\n" msgstr " Avancer le compteur PC par une taille fixe de %d à 0x%lx\n" -#: readelf.c:5235 +#: readelf.c:6151 +msgid " Set prologue_end to true\n" +msgstr " Initialiser prologue_end à VRAI\n" + +#: readelf.c:6155 +msgid " Set epilogue_begin to true\n" +msgstr " Initialiser epilogue_begin à VRAI\n" + +#: readelf.c:6161 #, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " Code op spécial %d: avancé l'Adresse par %d à 0x%lx" +msgid " Set ISA to %d\n" +msgstr " Initialiser ISA à %d\n" -#: readelf.c:5239 +#: readelf.c:6165 #, c-format -msgid " and Line by %d to %d\n" -msgstr " et Ligne par %d à %d\n" +msgid " Unknown opcode %d with operands: " +msgstr " opcode inconnu %d avec les opérandes:" -#: readelf.c:5262 readelf.c:5691 +#: readelf.c:6197 readelf.c:6658 readelf.c:6730 #, c-format msgid "Contents of the %s section:\n\n" msgstr "Contenue de la section %s:\n\n" -#: readelf.c:5285 +#: readelf.c:6216 +msgid "64-bit DWARF pubnames are not supported yet.\n" +msgstr "noms publics DWARF 64 bits ne sont pas encore supportés\n" + +#: readelf.c:6226 msgid "Only DWARF 2 pubnames are currently supported\n" -msgstr "Seuls les noms pubilcs DAWRF 2 sont couramment supportés\n" +msgstr "Seuls les noms pubilcs DWARF 2 sont couramment supportés\n" -#: readelf.c:5292 +#: readelf.c:6233 #, c-format msgid " Length: %ld\n" msgstr " Longueur: %ld\n" -#: readelf.c:5294 +#: readelf.c:6235 #, c-format msgid " Version: %d\n" msgstr " Version: %d\n" -#: readelf.c:5296 +#: readelf.c:6237 #, c-format msgid " Offset into .debug_info section: %ld\n" msgstr " Décalage dans la section .debug_info:%ld\n" -#: readelf.c:5298 +#: readelf.c:6239 #, c-format msgid " Size of area in .debug_info section: %ld\n" msgstr " Taille de la zone dans la section .debug_info: %ld\n" -#: readelf.c:5301 +#: readelf.c:6242 msgid "\n Offset\tName\n" msgstr "\n Décalage\tNom\n" -#: readelf.c:5383 +#: readelf.c:6333 #, c-format msgid "Unknown TAG value: %lx" msgstr "Valeur d'étiquette (`TAG') inconnue: %lx" -#: readelf.c:5478 +#: readelf.c:6443 #, c-format msgid "Unknown AT value: %lx" msgstr "Valeur AT inconnue: %lx" -#: readelf.c:5515 +#: readelf.c:6480 #, c-format msgid "Unknown FORM value: %lx" msgstr "Valeur FORM inconnue: %lx" -#: readelf.c:5697 +#: readelf.c:6679 +#, c-format +msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" +msgstr " DW_MACINFO_start_file - no de ligne: %d no de fichier: %d\n" + +#: readelf.c:6684 +msgid " DW_MACINFO_end_file\n" +msgstr " DW_MACINFO_end_file\n" + +#: readelf.c:6692 +#, c-format +msgid " DW_MACINFO_define - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n" + +#: readelf.c:6700 +#, c-format +msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n" + +#: readelf.c:6711 +#, c-format +msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" +msgstr " DW_MACINFO_vendor_ext - constante : %d chaîne : %s\n" + +#: readelf.c:6739 msgid " Number TAG\n" msgstr " Numéro d'étiquette\n" -#: readelf.c:5703 +#: readelf.c:6745 #, c-format msgid " %ld %s [%s]\n" msgstr " %ld %s [%s]\n" -#: readelf.c:5706 +#: readelf.c:6748 msgid "has children" msgstr "a des rejetons" -#: readelf.c:5706 +#: readelf.c:6748 msgid "no children" msgstr "aucun rejeton" -#: readelf.c:5710 +#: readelf.c:6752 #, c-format msgid " %-18s %s\n" msgstr " %-18s %s\n" -#: readelf.c:5729 +#: readelf.c:6773 #, c-format msgid " %lu byte block: " msgstr " %lu bloc d'octets: " -#: readelf.c:6036 +#: readelf.c:7096 msgid "(User defined location op)" msgstr "(Op de localisation défini par l'usager)" -#: readelf.c:6038 +#: readelf.c:7098 msgid "(Unknown location op)" msgstr "(Op de localisation inconnu)" -#: readelf.c:6165 +#: readelf.c:7137 +msgid "debug_str section data" +msgstr "données de la section debug_str" + +#: readelf.c:7156 +msgid "" +msgstr "" + +#: readelf.c:7159 +msgid "" +msgstr "" + +#: readelf.c:7179 +msgid "\nThe .debug_str section is empty.\n" +msgstr "\nLa section .debug_str est vide.\n" + +#: readelf.c:7183 +msgid "Contents of the .debug_str section:\n\n" +msgstr "Contenu de la section .debug_str:\n\n" + +#: readelf.c:7354 #, c-format -msgid "Unable to handle FORM: %d" -msgstr "Incapable de traiter la FORME: %d" +msgid " (indirect string, offset: 0x%lx): " +msgstr " (chaîne indirecte, décalage: 0x%lx): " -#: readelf.c:6169 +#: readelf.c:7363 #, c-format -msgid "Unrecognised form: %d" -msgstr "Forme non reconnue: %d" +msgid "Unrecognised form: %d\n" +msgstr "Forme non reconnue: %d\n" -#: readelf.c:6182 +#: readelf.c:7376 msgid "(not inlined)" msgstr "(pas en ligne)" -#: readelf.c:6183 +#: readelf.c:7377 msgid "(inlined)" msgstr "(en ligne)" -#: readelf.c:6184 +#: readelf.c:7378 msgid "(declared as inline but ignored)" msgstr "(déclaré comme en ligne mais ignoré)" -#: readelf.c:6185 +#: readelf.c:7379 msgid "(declared as inline and inlined)" msgstr "(déclaré comme en-ligne et en-ligné" -#: readelf.c:6186 +#: readelf.c:7380 #, c-format msgid " (Unknown inline attribute value: %lx)" msgstr " (valeur d'attibut en ligne inconnu: %lx)" -#: readelf.c:6315 readelf.c:6441 +#: readelf.c:7545 readelf.c:7746 #, c-format msgid "The section %s contains:\n\n" msgstr "La section %s contient:\n\n" -#: readelf.c:6337 +#: readelf.c:7568 +msgid "64-bit DWARF debug info is not supported yet.\n" +msgstr "info de débug DWARF 64 bits n'est pas encore supportée.\n" + +#: readelf.c:7637 #, c-format msgid " Compilation Unit @ %lx:\n" msgstr " Unité de compilation @ %lx:\n" -#: readelf.c:6338 +#: readelf.c:7638 #, c-format msgid " Length: %ld\n" msgstr " Longueur: %ld\n" -#: readelf.c:6339 +#: readelf.c:7639 #, c-format msgid " Version: %d\n" msgstr " Version: %d\n" -#: readelf.c:6340 +#: readelf.c:7640 #, c-format msgid " Abbrev Offset: %ld\n" msgstr " Décalage agrégé: %ld\n" -#: readelf.c:6341 +#: readelf.c:7641 #, c-format msgid " Pointer Size: %d\n" msgstr " Taille des pointeurs: %d\n" -#: readelf.c:6345 +#: readelf.c:7645 msgid "Only version 2 DWARF debug information is currently supported.\n" -msgstr "Seul les informations de débug de la version DAWRF 2 est couramment supporté.\n" +msgstr "Seul les informations de débug de la version DWARF 2 est couramment supporté.\n" -#: readelf.c:6367 +#: readelf.c:7666 msgid "Unable to locate .debug_abbrev section!\n" msgstr "Incapable de localiser la section .debug_abbrev!\n" -#: readelf.c:6407 +#: readelf.c:7672 +msgid "debug_abbrev section data" +msgstr "données de la section debug_abbrev" + +#: readelf.c:7709 #, c-format msgid "Unable to locate entry %lu in the abbreviation table\n" msgstr "Incapable de localiser l'entrée %lu dans la table d'abréviation\n" -#: readelf.c:6412 +#: readelf.c:7714 #, c-format -msgid " <%d><%x>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%x>: Numéro d'abréviation: %lu (%s)\n" +msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" +msgstr " <%d><%lx>: Numéro d'abréviation: %lu (%s)\n" -#: readelf.c:6462 +#: readelf.c:7767 +msgid "64-bit DWARF aranges are not supported yet.\n" +msgstr "gamme aranges DWARF de 64 bits n'est pas encore supportée.\n" + +#: readelf.c:7773 msgid "Only DWARF 2 aranges are currently supported.\n" -msgstr "Seul la gamme aranges DAWRF de version 2 est couramment supporté.\n" +msgstr "Seule la gamme aranges DWARF de version 2 est couramment supporté.\n" -#: readelf.c:6466 +#: readelf.c:7777 #, c-format msgid " Length: %ld\n" msgstr " Longueur %ld\n" -#: readelf.c:6467 +#: readelf.c:7778 #, c-format msgid " Version: %d\n" msgstr " Version: %d\n" -#: readelf.c:6468 +#: readelf.c:7779 #, c-format msgid " Offset into .debug_info: %lx\n" msgstr " Décalage dans .debug_info: %lx\n" -#: readelf.c:6469 +#: readelf.c:7780 #, c-format msgid " Pointer Size: %d\n" msgstr " Taille des pointeurs: %d\n" -#: readelf.c:6470 +#: readelf.c:7781 #, c-format msgid " Segment Size: %d\n" msgstr " Taille des segments: %d\n" -#: readelf.c:6472 +#: readelf.c:7783 msgid "\n Address Length\n" msgstr "\n Longueur d'adresse\n" -#: readelf.c:6634 +#: readelf.c:7965 #, c-format msgid "The section %s contains:\n" msgstr "La section %s contient:\n" -#: readelf.c:7109 +#: readelf.c:7988 +msgid "64-bit DWARF format frames are not supported yet.\n" +msgstr "gamme aranges DWARF de 64 bits n'est pas encore supportée.\n" + +#: readelf.c:8499 #, c-format msgid "Displaying the debug contents of section %s is not yet supported.\n" msgstr "L'affichage du contenu de la section de débug %s n'est pas encore supporté.\n" -#: readelf.c:7173 +#: readelf.c:8565 #, c-format msgid "\nSection '%s' has no debugging data.\n" msgstr "\nLa section '%s' n'a aucune donnée de débug.\n" -#: readelf.c:7192 +#: readelf.c:8570 readelf.c:8632 +msgid "debug section data" +msgstr "données de la section debug" + +#: readelf.c:8586 #, c-format msgid "Unrecognised debug section: %s\n" msgstr "Section de débug non reconnue: %s\n" -#: readelf.c:7264 +#: readelf.c:8660 msgid "Some sections were not dumped because they do not exist!\n" msgstr "Quelques sections n'ont pas été vidangées parce qu'inexistantes!\n" -#: readelf.c:7447 +#: readelf.c:8733 +msgid "liblist" +msgstr "liblist" + +#: readelf.c:8818 +msgid "options" +msgstr "options" + +#: readelf.c:8849 #, c-format msgid "\nSection '%s' contains %d entries:\n" msgstr "\nSection '%s' contient %d entrées:\n" -#: readelf.c:7609 +#: readelf.c:9010 msgid "conflict list with without table" msgstr "conflit de liste avec et sans table" -#: readelf.c:7637 +#: readelf.c:9028 readelf.c:9044 +msgid "conflict" +msgstr "conflit" + +#: readelf.c:9054 #, c-format -msgid "\nSection '.conflict' contains %d entries:\n" -msgstr "\nLa section '.conflict' contient %d entrées:\n" +msgid "\nSection '.conflict' contains %ld entries:\n" +msgstr "\nLa section '.conflict' contient %ld entrées:\n" -#: readelf.c:7638 +#: readelf.c:9056 msgid " Num: Index Value Name" msgstr " Nombre: Index Valeur Nom" -#: readelf.c:7663 +#: readelf.c:9083 msgid "NT_PRSTATUS (prstatus structure)" msgstr "NT_PRSTATUS (structure prstatus)" -#: readelf.c:7664 +#: readelf.c:9084 msgid "NT_FPREGSET (floating point registers)" msgstr "NT_FPREGSET (régistres en virgule flottante)" -#: readelf.c:7665 +#: readelf.c:9085 msgid "NT_PRPSINFO (prpsinfo structure)" msgstr "NT_PRPSINFO (structure prpsinfo)" -#: readelf.c:7666 +#: readelf.c:9086 msgid "NT_TASKSTRUCT (task structure)" msgstr "NT_TASKSTRUCT (structure de taches)" -#: readelf.c:7667 +#: readelf.c:9087 msgid "NT_PRXFPREG (user_xfpregs structure)" msgstr "NT_PRXFPREG (structure user_xfpregs)" -#: readelf.c:7668 +#: readelf.c:9088 msgid "NT_PSTATUS (pstatus structure)" msgstr "NT_PSTATUS (structure pstatus)" -#: readelf.c:7669 +#: readelf.c:9089 msgid "NT_FPREGS (floating point registers)" msgstr "NT_FPREGS (registres en virgule flottante)" -#: readelf.c:7670 +#: readelf.c:9090 msgid "NT_PSINFO (psinfo structure)" msgstr "NT_PSINFO (structure psinfo)" -#: readelf.c:7671 +#: readelf.c:9091 msgid "NT_LWPSTATUS (lwpstatus_t structure)" msgstr "NT_LWPSTATUS (structure lwpstatus_t)" -#: readelf.c:7672 +#: readelf.c:9092 msgid "NT_LWPSINFO (lwpsinfo_t structure)" msgstr "NT_LWPSINFO (structure lwpsinfo_t)" -#: readelf.c:7673 +#: readelf.c:9093 msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" msgstr "NT_WIN32PSTATUS (structure win32_pstatus)" -#: readelf.c:7675 +#: readelf.c:9095 readelf.c:9119 #, c-format msgid "Unknown note type: (0x%08x)" msgstr "Type de note inconnu: (0x%08x)" -#: readelf.c:7713 +#. NetBSD core "procinfo" structure. +#: readelf.c:9109 +msgid "NetBSD procinfo structure" +msgstr "structure proinfo NetBSD" + +#: readelf.c:9136 readelf.c:9150 +msgid "PT_GETREGS (reg structure)" +msgstr "PT_GETREGS (structure reg)" + +#: readelf.c:9138 readelf.c:9152 +msgid "PT_GETFPREGS (fpreg structure)" +msgstr "PT_GETFPPREGS (structure fpreg)" + +#: readelf.c:9158 +#, c-format +msgid "PT_FIRSTMACH+%d" +msgstr "PT_FIRSTMACH+%d" + +#: readelf.c:9212 +msgid "notes" +msgstr "notes" + +#: readelf.c:9218 #, c-format msgid "\nNotes at offset 0x%08lx with length 0x%08lx:\n" msgstr "\nNotes au décalage 0x%08lx de longueur 0x%08lx:\n" -#: readelf.c:7715 +#: readelf.c:9220 msgid " Owner\t\tData size\tDescription\n" msgstr " Propriétaire\t\tTaille de données\tDescription\n" -#: readelf.c:7826 +#: readelf.c:9331 msgid "No note segments present in the core file.\n" msgstr "Aucun note de segment présent dans le fichier core.\n" -#: readelf.c:7904 -msgid "This instance of readelf has been built without support for a\n" -msgstr "Cette instance de readelf a été contstruite sans soutien pour un\n" - -#: readelf.c:7905 -msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" -msgstr "type de données de 64 bits et ne peut lire un fichier ELF de 64 bits.\n" +#: readelf.c:9409 +msgid "" +"This instance of readelf has been built without support for a\n" +"64 bit data type and so it cannot read 64 bit ELF files.\n" +msgstr "" +"Cette instance de readelf a été contstruite sans soutien pour des\n" +"types de données de 64 bits et ne peut donc lire des fichiers de 64 bits ELF.\n" -#: readelf.c:7940 +#: readelf.c:9452 #, c-format msgid "Cannot stat input file %s.\n" msgstr "Ne peut évaluer par stat() le fichier d'entrée %s.\n" -#: readelf.c:7947 +#: readelf.c:9459 #, c-format msgid "Input file %s not found.\n" msgstr "Fichier d'entrée %s non repéré.\n" -#: readelf.c:7953 +#: readelf.c:9465 #, c-format msgid "%s: Failed to read file header\n" msgstr "%s: échec de lecture de l'en-tête du fichier\n" -#: readelf.c:7967 +#: readelf.c:9479 #, c-format msgid "\nFile: %s\n" msgstr "\nFichier: %s\n" @@ -3821,162 +4073,162 @@ msgstr "par défaut --format=berkeley\n" msgid "default is --format=sysv\n" msgstr "par défaut --format=sysv\n" -#: size.c:141 +#: size.c:146 #, c-format msgid "invalid argument to --format: %s" msgstr "argument invalide pour --format: %s" -#: size.c:168 +#: size.c:173 #, c-format msgid "Invalid radix: %s\n" msgstr "Base numérique invalide: %s\n" -#: srconv.c:1880 +#: srconv.c:1931 #, c-format msgid "Usage: %s [-dhVq] in-file [out-file]\n" msgstr "Usage: %s [-dhVq] fichier-entrée [fichier-sortie]\n" -#: srconv.c:1887 +#: srconv.c:1938 #, c-format msgid "%s: Convert a COFF object file into a SYSROFF object file\n" msgstr "%s: conversion d'un fichier objet COFF en un fichier objet SYSROFF\n" -#: srconv.c:2020 +#: srconv.c:2074 #, c-format msgid "unable to open output file %s" msgstr "incapable d'ouvrir le fichier de sortie %s" -#: stabs.c:349 stabs.c:1770 +#: stabs.c:343 stabs.c:1760 msgid "numeric overflow" msgstr "débordement numérique" -#: stabs.c:360 +#: stabs.c:354 #, c-format msgid "Bad stab: %s\n" msgstr "Mauvaise inclusion (`stab'): %s\n" -#: stabs.c:370 +#: stabs.c:364 #, c-format msgid "Warning: %s: %s\n" msgstr "AVERTISSEMENT: %s: %s\n" -#: stabs.c:492 +#: stabs.c:486 msgid "N_LBRAC not within function\n" msgstr "N_LBRAC n'est pas dans la fonction\n" -#: stabs.c:531 +#: stabs.c:525 msgid "Too many N_RBRACs\n" msgstr "Trop de N_RBRAC\n" -#: stabs.c:780 +#: stabs.c:770 msgid "unknown C++ encoded name" msgstr "nom encode C++ inconnu" #. Complain and keep going, so compilers can invent new #. cross-reference types. -#: stabs.c:1307 +#: stabs.c:1297 msgid "unrecognized cross reference type" msgstr "type de référence croisée non reconnue" #. Does this actually ever happen? Is that why we are worrying #. about dealing with it rather than just calling error_type? -#: stabs.c:1862 +#: stabs.c:1852 msgid "missing index type" msgstr "type d'index manquant" -#: stabs.c:2189 +#: stabs.c:2179 msgid "unknown virtual character for baseclass" msgstr "caractère virtuel inconnu pour la classe de base" -#: stabs.c:2207 +#: stabs.c:2197 msgid "unknown visibility character for baseclass" msgstr "caractère de visibilité inconnu pour la classe de base" -#: stabs.c:2399 +#: stabs.c:2389 msgid "unnamed $vb type" msgstr "type $vb inconnu" -#: stabs.c:2405 +#: stabs.c:2395 msgid "unrecognized C++ abbreviation" msgstr "abréviation C++ inconnue" -#: stabs.c:2485 +#: stabs.c:2475 msgid "unknown visibility character for field" msgstr "caractère de visibilité inconnu pour le champ" -#: stabs.c:2741 +#: stabs.c:2731 msgid "const/volatile indicator missing" msgstr "indicateur de const/volatile manquant" -#: stabs.c:2981 +#: stabs.c:2971 #, c-format msgid "No mangling for \"%s\"\n" msgstr "Pas de mutilation pour \"n%s\"\n" -#: stabs.c:3294 +#: stabs.c:3284 msgid "Undefined N_EXCL" msgstr "N_EXCL indéfini" -#: stabs.c:3382 +#: stabs.c:3372 #, c-format msgid "Type file number %d out of range\n" msgstr "Nombre de type de fichier %d hors gamme\n" -#: stabs.c:3387 +#: stabs.c:3377 #, c-format msgid "Type index number %d out of range\n" msgstr "Nombre de type index %d hors gamme\n" -#: stabs.c:3474 +#: stabs.c:3464 #, c-format msgid "Unrecognized XCOFF type %d\n" msgstr "Type XCOFF non reconnu %d\n" -#: stabs.c:3773 +#: stabs.c:3763 #, c-format msgid "bad mangled name `%s'\n" msgstr "mauvais codage par mutilation du nom `%s'\n" -#: stabs.c:3869 +#: stabs.c:3859 msgid "no argument types in mangled string\n" msgstr "aucun type d'argument dans la chaîne encodé par mutilation\n" -#: strings.c:177 +#: strings.c:199 #, c-format msgid "invalid number %s" msgstr "nombre invalide %s" -#: strings.c:513 +#: strings.c:638 #, c-format msgid "invalid integer argument %s" msgstr "argument en valeur entière invalide %s" -#: strings.c:523 +#: strings.c:648 #, c-format msgid "" -"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n" -" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" -" [--target=bfdname] [--help] [--version] file...\n" +"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n" msgstr "" -"Usage: %s [-afov] [-n longueur-min] [-min-len] [-t {o,x,d}] [-]\n" -" [--all] [--print-file-name] [--bytes=longueur-min] [--radix={o,x,d}]\n" -" [--target=nom_bfd] [--help] [--version] file...\n" +"Usage: %s [-afov] [-n longueur-min] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=longueur-min] [--radix={o,x,d}]\n" +" [--target=nom_bfd] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n" -#: sysdump.c:712 +#: sysdump.c:733 #, c-format msgid "Usage: %s [-hV] in-file\n" msgstr "Usage: %s [-hV] fichier-entrée\n" -#: sysdump.c:781 +#: sysdump.c:805 #, c-format msgid "cannot open input file %s" msgstr "ne peut ouvrir le fichier d'entrée %s" -#: version.c:39 -msgid "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" -msgstr "Copyright 1997, 98, 99, 2000 © Free Software Foundation, Inc.\n" +#: version.c:35 +msgid "Copyright 2001 Free Software Foundation, Inc.\n" +msgstr "Copyright 2001 © Free Software Foundation, Inc.\n" -#: version.c:40 +#: version.c:36 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" @@ -4088,7 +4340,7 @@ msgstr "" "L'entrée par défaut se fait à partir de stdin, par défaut pour rc.\n" "La sortie par défaut est stdout, par défaut pour rc.\n" -#: windres.c:980 +#: windres.c:983 msgid "no resources" msgstr "aucune ressource" @@ -4106,3 +4358,81 @@ msgstr "stab_int_type: mauvaise taille % #, c-format msgid "%s: warning: unknown size for field `%s' in struct" msgstr "%s: AVERTISSEMENT: taille inconnue pour le champ `%s' dans le struct" + +#~ msgid "GNU %s version %s\n" +#~ msgstr "GNU %s version %s\n" + +#~ msgid "no export definition file provided" +#~ msgstr "aucun fichier de définition d'exports fourni" + +#~ msgid " The switches are:\n" +#~ msgstr " Les commutateurs sont:\n" + +#~ msgid "Unable to seek to start of %s at %x\n" +#~ msgstr "Incapable de repérer le début de %s à %x\n" + +#~ msgid "Unable to read data at %x for %s\n" +#~ msgstr "Incapable de lire les données à %x de %s\n" + +#~ msgid "ELF32" +#~ msgstr "ELF32" + +#~ msgid "ELF64" +#~ msgstr "ELF64" + +#~ msgid "UNIX - System V" +#~ msgstr "UNIX - System V" + +#~ msgid "UNIX - HP-UX" +#~ msgstr "UNIX - HP-UX" + +#~ msgid "UNIX - NetBSD" +#~ msgstr "UNIX - NetBSD" + +#~ msgid "UNIX - Linux" +#~ msgstr "UNIX - Linux" + +#~ msgid "GNU/Hurd" +#~ msgstr "GNU/Hurd" + +#~ msgid "UNIX - Solaris" +#~ msgstr "UNIX - Solaris" + +#~ msgid "UNIX - AIX" +#~ msgstr "UNIX - AIX" + +#~ msgid "UNIX - IRIX" +#~ msgstr "UNIX - IRIX" + +#~ msgid "UNIX - FreeBSD" +#~ msgstr "UNIX - FreeBSD" + +#~ msgid "UNIX - TRU64" +#~ msgstr "UNIX - TRU64" + +#~ msgid "Novell - Modesto" +#~ msgstr "Novell - Modesto" + +#~ msgid "UNIX - OpenBSD" +#~ msgstr "UNIX - OpenBSD" + +#~ msgid "ARM" +#~ msgstr "ARM" + +#~ msgid "Key to Flags:\n" +#~ msgstr "Clé des fanions:\n" + +#~ msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" +#~ msgstr " W (écrit), A (alloc), X (exécution), M (fusion), S (chaînes)\n" + +#~ msgid " I (info), L (link order), G (group), x (unknown)\n" +#~ msgstr " I (info), L (ordre de liens), G (groupe), x (inconnu)\n" + +#~ msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" +#~ msgstr " O (traitement additionnel sys. exploit. requis) o (spécificités sys. esploit.), p (spécificités de processeur)\n" + +#~ msgid "Unable to handle FORM: %d" +#~ msgstr "Incapable de traiter la FORME: %d" + +#~ msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" +#~ msgstr "type de données de 64 bits et ne peut lire un fichier ELF de 64 bits.\n" diff -uprN binutils-2.11.92.0.12.3/binutils/po/ja.po binutils-2.11.93.0.2/binutils/po/ja.po --- binutils-2.11.92.0.12.3/binutils/po/ja.po Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/binutils/po/ja.po Sun Feb 3 11:22:31 2002 @@ -0,0 +1,4110 @@ +# Japanese message for binutils 2.11 +# Copyright (C) 2001 Free Software Foundation, Inc. +# Daisuke Yamashita , 2001. +# +msgid "" +msgstr "" +"Project-Id-Version: binutils 2.11\n" +"POT-Creation-Date: 2001-01-11 12:02-0800\n" +"PO-Revision-Date: 2001-12-16 16:10+0900\n" +"Last-Translator: Daisuke Yamashita \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-JP\n" +"Content-Transfer-Encoding: 8bit\n" + +#: addr2line.c:76 +#, c-format +msgid "" +"Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" +" [-e executable] [--exe=executable] [--demangle[=style]]\n" +" [--basenames] [--functions] [addr addr ...]\n" +msgstr "" +"»È¤¤Êý: %s [-CfsHV] [-b bfd̾] [--target=bfd̾]\n" +" [-e ¼Â¹Ô¥Õ¥¡¥¤¥ë] [--exe=¼Â¹Ô¥Õ¥¡¥¤¥ë] [--demangle[=Êý¼°]]\n" +" [--basenames] [--functions] [¥¢¥É¥ì¥¹ ¥¢¥É¥ì¥¹ ...]\n" + +#: addr2line.c:83 ar.c:288 nlmconv.c:1119 objcopy.c:373 objcopy.c:405 +#: readelf.c:1876 size.c:91 strings.c:530 windres.c:737 +#, c-format +msgid "Report bugs to %s\n" +msgstr "¥Ð¥°¥ì¥Ý¡¼¥È¤Ï %s ¤Þ¤Ç\n" + +#: addr2line.c:243 +#, c-format +msgid "%s: can not get addresses from archive" +msgstr "%s: ¥¢¡¼¥«¥¤¥Ö¤«¤é¥¢¥É¥ì¥¹¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó" + +#: addr2line.c:310 nm.c:436 objdump.c:2857 +#, c-format +msgid "unknown demangling style `%s'" +msgstr "̾Á°Éü¸µ (demangle) ¤ÎÊý¼° `%s' ¤¬ÉÔÌÀ¤Ç¤¹" + +#: ar.c:236 +#, c-format +msgid "no entry %s in archive\n" +msgstr "¹àÌÜ %s ¤¬¥¢¡¼¥«¥¤¥ÖÃæ¤Ë¤¢¤ê¤Þ¤»¤ó\n" + +#: ar.c:253 +#, c-format +msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" +msgstr "»È¤¤Êý: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [¥á¥ó¥Ð̾] [¥«¥¦¥ó¥È] ½ñ¸Ë¥Õ¥¡¥¤¥ë ¥Õ¥¡¥¤¥ë...\n" + +#: ar.c:256 +#, c-format +msgid " %s -M [\n\n" +msgstr "\n<¥á¥ó¥Ð %s>\n\n" + +#: ar.c:845 ar.c:913 +#, c-format +msgid "%s is not a valid archive" +msgstr "%s ¤ÏÀµ¾ï¤Ê½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ar.c:881 +#, c-format +msgid "stat returns negative size for %s" +msgstr "stat(2) ¤¬ %s ¤Î¥µ¥¤¥º¤È¤·¤ÆÉé¤Î¿ô¤òÊÖ¤·¤Þ¤·¤¿" + +#: ar.c:1008 +#, c-format +msgid "%s is not an archive" +msgstr "%s ¤Ï½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ar.c:1015 +#, c-format +msgid "creating %s" +msgstr "%s ¤òºîÀ®¤·¤Þ¤¹" + +#: ar.c:1221 +#, c-format +msgid "No member named `%s'\n" +msgstr "`%s' ¤È¤¤¤¦Ì¾Á°¤Î¥á¥ó¥Ð¤Ï¤¢¤ê¤Þ¤»¤ó\n" + +#: ar.c:1273 +#, c-format +msgid "no entry %s in archive %s!" +msgstr "¥¨¥ó¥È¥ê %s ¤Ï½ñ¸Ë %s ¤Ë¤¢¤ê¤Þ¤»¤ó!" + +#: ar.c:1434 +#, c-format +msgid "%s: no archive map to update" +msgstr "%s: ¹¹¿·¤¹¤Ù¤­½ñ¸Ë¥Þ¥Ã¥×¤¬¤¢¤ê¤Þ¤»¤ó" + +#: arsup.c:88 +#, c-format +msgid "No entry %s in archive.\n" +msgstr "¥¨¥ó¥È¥ê %s ¤Ï½ñ¸ËÆâ¤Ë¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: arsup.c:120 +#, c-format +msgid "Can't open file %s\n" +msgstr "¥Õ¥¡¥¤¥ë %s¤ò³«¤±¤Þ¤»¤ó\n" + +#: arsup.c:170 +#, c-format +msgid "%s: Can't open output archive %s\n" +msgstr "%s: ½ÐÎϽñ¸Ë %s ¤ò³«¤±¤Þ¤»¤ó\n" + +#: arsup.c:182 +#, c-format +msgid "%s: Can't open input archive %s\n" +msgstr "%s: ÆþÎϽñ¸Ë %s ¤ò³«¤±¤Þ¤»¤ó\n" + +#: arsup.c:188 +#, c-format +msgid "%s: file %s is not an archive\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë %s ¤Ï½ñ¸Ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó\n" + +#: arsup.c:229 +#, c-format +msgid "%s: no output archive specified yet\n" +msgstr "%s: ½ÐÎϽñ¸Ë¤¬¤Þ¤À»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#: arsup.c:249 arsup.c:284 arsup.c:320 arsup.c:340 arsup.c:398 +#, c-format +msgid "%s: no open output archive\n" +msgstr "%s: ½ÐÎÏÍѽñ¸Ë¤¬³«¤«¤ì¤Æ¤¤¤Þ¤»¤ó\n" + +#: arsup.c:257 arsup.c:358 arsup.c:378 +#, c-format +msgid "%s: can't open file %s\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó\n" + +#: arsup.c:305 arsup.c:374 arsup.c:453 +#, c-format +msgid "%s: can't find module file %s\n" +msgstr "%s: ¥â¥¸¥å¡¼¥ë¥Õ¥¡¥¤¥ë %s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n" + +#: arsup.c:405 +#, c-format +msgid "Current open archive is %s\n" +msgstr "¸½ºß³«¤«¤ì¤¿½ñ¸Ë¤Ï %s ¤Ç¤¹\n" + +#: arsup.c:432 +#, c-format +msgid "%s: no open archive\n" +msgstr "%s: ³«¤¤¤Æ¤¤¤ë½ñ¸Ë¤¬¤¢¤ê¤Þ¤»¤ó\n" + +#: bucomm.c:135 +#, c-format +msgid "can't set BFD default target to `%s': %s" +msgstr "BFD ¥Ç¥Õ¥©¥ë¥È¥¿¡¼¥²¥Ã¥È¤ò `%s' ¤ËÀßÄê¤Ç¤­¤Þ¤»¤ó: %s" + +#: bucomm.c:147 +#, c-format +msgid "%s: Matching formats:" +msgstr "%s: ·Á¼°¤ò¾È¹ç¤·¤Þ¤¹:" + +#: bucomm.c:164 +msgid "Supported targets:" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È:" + +#: bucomm.c:166 +#, c-format +msgid "%s: supported targets:" +msgstr "%s: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥¿¡¼¥²¥Ã¥È:" + +#: bucomm.c:272 +#, c-format +msgid "%s: bad number: %s" +msgstr "%s: ÉÔÀµ¤ÊÈÖ¹æ: %s" + +#: coffdump.c:94 +#, c-format +msgid "#lines %d " +msgstr "#¹Ô %d " + +#: coffdump.c:456 sysdump.c:719 +#, c-format +msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" +msgstr "%s: SYSROFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Î²ò¼á¤ò¿Í´Ö¤¬Æɤߤ䤹¤¤·Á¼°¤Çɽ¼¨¤¹¤ë\n" + +#: coffdump.c:498 srconv.c:1941 sysdump.c:755 +#, c-format +msgid "GNU %s version %s\n" +msgstr "GNU %s ¥Ð¡¼¥¸¥ç¥ó %s\n" + +#: coffdump.c:516 srconv.c:1975 sysdump.c:775 +msgid "no input file specified" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: debug.c:653 +msgid "debug_add_to_current_namespace: no current file" +msgstr "debug_add_to_current_namespace: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:736 +msgid "debug_start_source: no debug_set_filename call" +msgstr "debug_start_source: debug_set_filename ¸Æ¤Ó½Ð¤·¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:795 +msgid "debug_record_function: no debug_set_filename call" +msgstr "debug_record_function: debug_set_filename ¸Æ¤Ó½Ð¤·¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:851 +msgid "debug_record_parameter: no current function" +msgstr "debug_record_parameter: ¸½ºß¤Î´Ø¿ô¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:885 +msgid "debug_end_function: no current function" +msgstr "debug_end_function: ¸½ºß¤Î´Ø¿ô¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:891 +msgid "debug_end_function: some blocks were not closed" +msgstr "debug_end_function: ÊĤ¸¤é¤ì¤Æ¤¤¤Ê¤¤¥Ö¥í¥Ã¥¯¤¬¤¢¤ê¤Þ¤¹" + +#: debug.c:921 +msgid "debug_start_block: no current block" +msgstr "debug_start_block: ¸½ºß¤Î¥Ö¥í¥Ã¥¯¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:959 +msgid "debug_end_block: no current block" +msgstr "debug_end_block: ¸½ºß¤Î¥Ö¥í¥Ã¥¯¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:966 +msgid "debug_end_block: attempt to close top level block" +msgstr "debug_end_block: ¥È¥Ã¥×¥ì¥Ù¥ë¥Ö¥í¥Ã¥¯¤òÊĤ¸¤è¤¦¤È¤·¤Þ¤·¤¿" + +#: debug.c:992 +msgid "debug_record_line: no current unit" +msgstr "debug_record_line: ¸½ºß¤Î¥æ¥Ë¥Ã¥È¤¬¤¢¤ê¤Þ¤»¤ó" + +#. FIXME +#: debug.c:1046 +msgid "debug_start_common_block: not implemented" +msgstr "debug_start_common_block: ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#. FIXME +#: debug.c:1058 +msgid "debug_end_common_block: not implemented" +msgstr "debug_end_common_block: ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#. FIXME. +#: debug.c:1152 +msgid "debug_record_label not implemented" +msgstr "debug_record_label ¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: debug.c:1178 +msgid "debug_record_variable: no current file" +msgstr "debug_record_variable: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:1194 +msgid "debug_record_variable: no current block" +msgstr "debug_record_variable: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:1764 +msgid "debug_make_undefined_type: unsupported kind" +msgstr "debug_make_undefined_type: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¼ïÎà¤Ç¤¹" + +#: debug.c:1970 +msgid "debug_name_type: no current file" +msgstr "debug_name_type: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:2018 +msgid "debug_tag_type: no current file" +msgstr "debug_tag_type: ¸½ºß¤Î¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:2026 +msgid "debug_tag_type: extra tag attempted" +msgstr "debug_tag_type: ;ʬ¤Ê¥¿¥°¤¬»î¤µ¤ì¤Þ¤·¤¿" + +#: debug.c:2066 +#, c-format +msgid "Warning: changing type size from %d to %d\n" +msgstr "·Ù¹ð: ·¿¤Î¥µ¥¤¥º¤ò %d ¤«¤é %d ¤ËÊѹ¹¤·¤Þ¤¹\n" + +#: debug.c:2090 +msgid "debug_find_named_type: no current compilation unit" +msgstr "debug_find_named_type: ¸½ºß¤Î¥³¥ó¥Ñ¥¤¥ëñ°Ì¤¬¤¢¤ê¤Þ¤»¤ó" + +#: debug.c:2197 +#, c-format +msgid "debug_get_real_type: circular debug information for %s\n" +msgstr "debug_get_real_type: %s ¤Î¥Ç¥Ð¥Ã¥°¾ðÊ󤬽۴Ĥ·¤Æ¤¤¤Þ¤¹\n" + +#: debug.c:2662 +msgid "debug_write_type: illegal type encountered" +msgstr "debug_write_type: ÉÔÀµ¤Ê·¿¤ËÁø¶ø¤·¤Þ¤·¤¿" + +#: dlltool.c:737 dlltool.c:762 dlltool.c:788 +#, c-format +msgid "Internal error: Unknown machine type: %d" +msgstr "ÆâÉô¥¨¥é¡¼: ÉÔÌÀ¤Ê¥Þ¥·¥ó·¿¤Ç¤¹: %d" + +#: dlltool.c:825 +#, c-format +msgid "Can't open def file: %s" +msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:830 +#, c-format +msgid "Processing def file: %s" +msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò½èÍý¤·¤Þ¤¹: %s" + +#: dlltool.c:834 +msgid "Processed def file" +msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤ò½èÍý¤·¤Þ¤·¤¿" + +#: dlltool.c:859 +#, c-format +msgid "Syntax error in def file %s:%d" +msgstr "ÄêµÁ¥Õ¥¡¥¤¥ë¤Çʸˡ¥¨¥é¡¼¤Ç¤¹ %s:%d" + +#: dlltool.c:892 +#, c-format +msgid "NAME: %s base: %x" +msgstr "NAME: %s ¥Ù¡¼¥¹: %x" + +#: dlltool.c:895 dlltool.c:914 +msgid "Can't have LIBRARY and NAME" +msgstr "LIBRARY ¤ä NAME ¤ò»ý¤Æ¤Þ¤»¤ó" + +#: dlltool.c:911 +#, c-format +msgid "LIBRARY: %s base: %x" +msgstr "LIBRARY: %s ¥Ù¡¼¥¹: %x" + +#: dlltool.c:1169 resrc.c:271 +#, c-format +msgid "wait: %s" +msgstr "wait: %s" + +#: dlltool.c:1174 dllwrap.c:456 resrc.c:276 +#, c-format +msgid "subprocess got fatal signal %d" +msgstr "»Ò¥×¥í¥»¥¹¤¬Ã×̿Ū¤Ê¥·¥°¥Ê¥ë¤ò %d ¼õ¤±¼è¤ê¤Þ¤·¤¿" + +#: dlltool.c:1180 dllwrap.c:463 resrc.c:283 +#, c-format +msgid "%s exited with status %d" +msgstr "%s ¤Ï¥¹¥Æ¡¼¥¿¥¹ %d ¤Ç½ªÎ»¤·¤Þ¤·¤¿" + +#: dlltool.c:1212 +#, c-format +msgid "Sucking in info from %s section in %s" +msgstr "%s ¥»¥¯¥·¥ç¥ó(%s Æâ) ¤«¤é¾ðÊó¤ò¼è¤ê¹þ¤ß¤Þ¤¹" + +#: dlltool.c:1336 +#, c-format +msgid "Excluding symbol: %s" +msgstr "¥·¥ó¥Ü¥ë¤ò½ü³°¤·¤Þ¤¹: %s" + +#: dlltool.c:1431 dlltool.c:1442 nm.c:946 nm.c:957 objdump.c:443 objdump.c:460 +#, c-format +msgid "%s: no symbols" +msgstr "%s: ¥·¥ó¥Ü¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#. FIXME: we ought to read in and block out the base relocations +#: dlltool.c:1469 +#, c-format +msgid "Done reading %s" +msgstr "%s ¤ÎÆɼè¤ê¤¬´°Î»¤·¤Þ¤·¤¿" + +#: dlltool.c:1480 +#, c-format +msgid "Unable to open object file: %s" +msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:1483 +#, c-format +msgid "Scanning object file %s" +msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë %s ¤òÁöºº¤·¤Þ¤¹" + +#: dlltool.c:1498 +#, c-format +msgid "Cannot produce mcore-elf dll from archive file: %s" +msgstr "½ñ¸Ë¥Õ¥¡¥¤¥ë¤«¤é mcore-elf dll ¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó: %s" + +#: dlltool.c:1590 +msgid "Adding exports to output file" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ë exports ¤òÄɲä·¤Þ¤¹" + +#: dlltool.c:1635 +msgid "Added exports to output file" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ë exports ¤òÄɲä·¤Þ¤·¤¿" + +#: dlltool.c:1759 +#, c-format +msgid "Generating export file: %s" +msgstr "export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹: %s" + +#: dlltool.c:1764 +#, c-format +msgid "Unable to open temporary assembler file: %s" +msgstr "°ì»þ¥¢¥»¥ó¥Ö¥ê¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:1767 +#, c-format +msgid "Opened temporary file: %s" +msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤·¤¿: %s" + +#: dlltool.c:1981 +msgid "Generated exports file" +msgstr "exports ¥Õ¥¡¥¤¥ë¤¬À¸À®¤µ¤ì¤Þ¤·¤¿" + +#: dlltool.c:2236 +#, c-format +msgid "bfd_open failed open stub file: %s" +msgstr "bfd_open ¤¬¥¹¥¿¥Ö¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó¤Ç¤·¤¿: %s" + +#: dlltool.c:2239 +#, c-format +msgid "Creating stub file: %s" +msgstr "¥¹¥¿¥Ö¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹: %s" + +#: dlltool.c:2626 +#, c-format +msgid "failed to open temporary head file: %s" +msgstr "°ì»þ head ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:2685 +#, c-format +msgid "failed to open temporary tail file: %s" +msgstr "°ì»þ tail ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:2753 +#, c-format +msgid "Can't open .lib file: %s" +msgstr ".lib ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:2756 +#, c-format +msgid "Creating library file: %s" +msgstr "¥é¥¤¥Ö¥é¥ê¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤¹: %s" + +#: dlltool.c:2815 +#, c-format +msgid "cannot delete %s: %s" +msgstr "%s ¤òºï½ü¤Ç¤­¤Þ¤»¤ó: %s" + +#: dlltool.c:2819 +msgid "Created lib file" +msgstr "lib ¥Õ¥¡¥¤¥ë¤òºîÀ®¤·¤Þ¤·¤¿" + +#: dlltool.c:2924 +#, c-format +msgid "Warning, ignoring duplicate EXPORT %s %d,%d" +msgstr "·Ù¹ð¡¢½ÅÊ£¤·¤¿ EXPORT %s %d,%d ¤ò̵»ë¤·¤Þ¤¹" + +#: dlltool.c:2930 +#, c-format +msgid "Error, duplicate EXPORT with oridinals: %s" +msgstr "¥¨¥é¡¼¡¢½ø¿ôÉÕ¤­ EXPORT ¤¬½ÅÊ£¤·¤Þ¤·¤¿: %s" + +#: dlltool.c:3057 +msgid "Processing definitions" +msgstr "ÄêµÁ¤ò½èÍý¤·¤Þ¤¹" + +#: dlltool.c:3095 +msgid "Processed definitions" +msgstr "ÄêµÁ¤ò½èÍý¤·¤Þ¤·¤¿" + +#. xgetext:c-format +#: dlltool.c:3106 dllwrap.c:520 +#, c-format +msgid "Usage %s \n" +msgstr "»È¤¤Êý %s <¥ª¥×¥·¥ç¥ó> <¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë>...\n" + +#. xgetext:c-format +#: dlltool.c:3108 +#, c-format +msgid " -m --machine Create as DLL for . [default: %s]\n" +msgstr " -m --machine <¥Þ¥·¥ó> <¥Þ¥·¥ó> ÍÑ DLL ¤òºîÀ®¤¹¤ë¡£ [default: %s]\n" + +#: dlltool.c:3109 +msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" +msgstr " ²Äǽ¤Ê <¥Þ¥·¥ó>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" + +#: dlltool.c:3110 +msgid " -e --output-exp Generate an export file.\n" +msgstr " -e --output-exp <½ÐÎÏ̾> export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£\n" + +#: dlltool.c:3111 +msgid " -l --output-lib Generate an interface library.\n" +msgstr " -l --output-lib <½ÐÎÏ̾> interface ¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¡£\n" + +#: dlltool.c:3112 +msgid " -a --add-indirect Add dll indirects to export file.\n" +msgstr " -a --add-indirect export ¥Õ¥¡¥¤¥ë¤Ë´ÖÀÜ dll ¤òÄɲ乤롣\n" + +#: dlltool.c:3113 +msgid " -D --dllname Name of input dll to put into interface lib.\n" +msgstr " -D --dllname <̾Á°> interface ¥é¥¤¥Ö¥é¥ê¤ËÃÖ¤¯ÆþÎÏ dll ¤Î̾Á°¡£\n" + +#: dlltool.c:3114 +msgid " -d --input-def Name of .def file to be read in.\n" +msgstr " -d --input-def Æɹþ¤Þ¤ì¤ë .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" + +#: dlltool.c:3115 +msgid " -z --output-def Name of .def file to be created.\n" +msgstr " -z --output-def ºîÀ®¤µ¤ì¤ë .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" + +#: dlltool.c:3116 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols .def ¤ËÁ´¤Æ¤Î¥·¥ó¥Ü¥ë¤ò export ¤¹¤ë\n" + +#: dlltool.c:3117 +msgid " --no-export-all-symbols Only export listed symbols\n" +msgstr " --no-export-all-symbols ¥ê¥¹¥È¤µ¤ì¤¿¥·¥ó¥Ü¥ë¤À¤±¤ò export ¤¹¤ë\n" + +#: dlltool.c:3118 +msgid " --exclude-symbols Don't export \n" +msgstr " --exclude-symbols <¥ê¥¹¥È> <¥ê¥¹¥È> ¤ò export ¤·¤Ê¤¤\n" + +#: dlltool.c:3119 +msgid " --no-default-excludes Clear default exclude symbols\n" +msgstr " --no-default-excludes ¥Ç¥Õ¥©¥ë¥È¤Ç½ü³°¤µ¤ì¤ë¥·¥ó¥Ü¥ë¤ò¥¯¥ê¥¢¤¹¤ë\n" + +#: dlltool.c:3120 +msgid " -b --base-file Read linker generated base file.\n" +msgstr " -b --base-file ¥ê¥ó¥«¤¬À¸À®¤·¤¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ë\n" + +#: dlltool.c:3121 +msgid " -x --no-idata4 Don't generate idata$4 section.\n" +msgstr " -x --no-idata4 idata$4 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤¡£\n" + +#: dlltool.c:3122 +msgid " -c --no-idata5 Don't generate idata$5 section.\n" +msgstr " -c --no-idata5 idata$5 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤¡£\n" + +#: dlltool.c:3123 +msgid " -U --add-underscore Add underscores to symbols in interface library.\n" +msgstr " -U --add-underscore interface Æâ¤Î¥·¥ó¥Ü¥ë¤Ë²¼Àþ¤ò¤Ä¤±¤ë\n" + +#: dlltool.c:3124 +msgid " -k --kill-at Kill @ from exported names.\n" +msgstr " -k --kill-at export ¤µ¤ì¤¿Ì¾Á°¤«¤é @ ¤òºï¤ë¡£\n" + +#: dlltool.c:3125 +msgid " -A --add-stdcall-alias Add aliases without @.\n" +msgstr " -A --add-stdcall-alias @ ̵¤·¤Î¥¨¥¤¥ê¥¢¥¹¤òÄɲ乤롣\n" + +#: dlltool.c:3126 +msgid " -S --as Use for assembler.\n" +msgstr " -S --as <̾Á°> ¥¢¥»¥ó¥Ö¥éÍѤΠ<̾Á°> ¤ò»È¤¦¡£\n" + +#: dlltool.c:3127 +msgid " -f --as-flags Pass to the assembler.\n" +msgstr " -f --as-flags <¥Õ¥é¥°> ¥¢¥»¥ó¥Ö¥é¤Ë <¥Õ¥é¥°> ¤òÅϤ¹¡£\n" + +#: dlltool.c:3128 +msgid " -C --compat-implib Create backward compatible import library.\n" +msgstr " -C --compat-implib ¸åÊý¸ß´¹ import ¥é¥¤¥Ö¥é¥ê¤òºîÀ®¤¹¤ë¡£\n" + +#: dlltool.c:3129 +msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" +msgstr " -n --no-delete °ì»þ¥Õ¥¡¥¤¥ë¤ò¾Ãµî¤·¤Ê¤¤ (;ʬ¤Ê¤â¤Î¤âÊݸ¤¹¤ë¤Ê¤é·«¤êÊÖ¤¹¤³¤È)¡£\n" + +#: dlltool.c:3130 +msgid " -v --verbose Be verbose.\n" +msgstr " -v --verbose ñÁÀå¥â¡¼¥É¡£\n" + +#: dlltool.c:3131 +msgid " -V --version Display the program version.\n" +msgstr " -V --version ¥×¥í¥°¥é¥à¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë¡£\n" + +#: dlltool.c:3132 +msgid " -h --help Display this information.\n" +msgstr " -h --help ¤³¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n" + +#: dlltool.c:3134 +msgid " -M --mcore-elf Process mcore-elf object files into .\n" +msgstr " -M --mcore-elf <½ÐÎÏ̾> <½ÐÎÏ̾> ¤Ø mcore-elf ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë\n" + +#: dlltool.c:3135 +msgid " -L --linker Use as the linker.\n" +msgstr " -L --linker <̾Á°> <̾Á°> ¤ò¥ê¥ó¥«¤È¤·¤Æ»ÈÍѤ¹¤ë¡£\n" + +#: dlltool.c:3136 +msgid " -F --linker-flags Pass to the linker.\n" +msgstr " -F --linker-flags <¥Õ¥é¥°> <¥Õ¥é¥°> ¤ò¥ê¥ó¥«¤ËÅϤ¹¡£\n" + +#: dlltool.c:3280 +#, c-format +msgid "Unable to open base-file: %s" +msgstr "¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó: %s" + +#: dlltool.c:3309 +#, c-format +msgid "Machine '%s' not supported" +msgstr "¥Þ¥·¥ó '%s' ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#: dlltool.c:3412 dllwrap.c:241 +#, c-format +msgid "Tried file: %s" +msgstr "»î¤·¤¿¥Õ¥¡¥¤¥ë: %s" + +#: dlltool.c:3419 dllwrap.c:248 +#, c-format +msgid "Using file: %s" +msgstr "»ÈÍѤ¹¤ë¥Õ¥¡¥¤¥ë: %s" + +#: dllwrap.c:335 +#, c-format +msgid "Keeping temporary base file %s" +msgstr "°ì»þ¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" + +#: dllwrap.c:337 +#, c-format +msgid "Deleting temporary base file %s" +msgstr "°ì»þ¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" + +#: dllwrap.c:351 +#, c-format +msgid "Keeping temporary exp file %s" +msgstr "°ì»þ exp ¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" + +#: dllwrap.c:353 +#, c-format +msgid "Deleting temporary exp file %s" +msgstr "°ì»þ exp ¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" + +#: dllwrap.c:366 +#, c-format +msgid "Keeping temporary def file %s" +msgstr "°ì»þ def ¥Õ¥¡¥¤¥ë %s ¤òÊݸ¤·¤Þ¤¹" + +#: dllwrap.c:368 +#, c-format +msgid "Deleting temporary def file %s" +msgstr "°ì»þ def ¥Õ¥¡¥¤¥ë %s ¤òºï½ü¤·¤Þ¤¹" + +#: dllwrap.c:521 +msgid " Generic options:\n" +msgstr " °ìÈÌ¥ª¥×¥·¥ç¥ó:\n" + +#: dllwrap.c:522 +msgid " --quiet, -q Work quietly\n" +msgstr " --quiet, -q ÀŤ«¤ËÆ°ºî¤¹¤ë\n" + +#: dllwrap.c:523 +msgid " --verbose, -v Verbose\n" +msgstr " --verbose, -v ñÁÀå\n" + +#: dllwrap.c:524 +msgid " --version Print dllwrap version\n" +msgstr " --version dllwrap ¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨\n" + +#: dllwrap.c:525 +msgid " --implib Synonym for --output-lib\n" +msgstr " --implib <½ÐÎÏ̾> --output-lib ¤ÈƱµÁ¸ì\n" + +#: dllwrap.c:526 +#, c-format +msgid " Options for %s:\n" +msgstr " %s ÍÑ¥ª¥×¥·¥ç¥ó:\n" + +#: dllwrap.c:527 +msgid " --driver-name Defaults to \"gcc\"\n" +msgstr " --driver-name <¥É¥é¥¤¥Ð> \"gcc\" ¤¬¥Ç¥Õ¥©¥ë¥È\n" + +#: dllwrap.c:528 +msgid " --driver-flags Override default ld flags\n" +msgstr " --driver-flags <¥Õ¥é¥°> ¥Ç¥Õ¥©¥ë¥È ld ¥Õ¥é¥°¤ò¾å½ñ¤­¤¹¤ë\n" + +#: dllwrap.c:529 +msgid " --dlltool-name Defaults to \"dlltool\"\n" +msgstr " --dlltool-name \"dlltool\" ¤¬¥Ç¥Õ¥©¥ë¥È\n" + +#: dllwrap.c:530 +msgid " --entry Specify alternate DLL entry point\n" +msgstr " --entry ÂåÂØ DLL ¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¤ò»ØÄꤹ¤ë\n" + +#: dllwrap.c:531 +msgid " --image-base Specify image base address\n" +msgstr " --image-base image ¥Ù¡¼¥¹¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë\n" + +#: dllwrap.c:532 +msgid " --target i386-cygwin32 or i386-mingw32\n" +msgstr " --target <¥Þ¥·¥ó> i386-cygwin32 Ëô¤Ï i386-mingw32\n" + +#: dllwrap.c:533 +msgid " --dry-run Show what needs to be run\n" +msgstr " --dry-run Æ°ºî¤ËɬÍפʤ³¤È¤òÌÀ¤é¤«¤Ë¤¹¤ë\n" + +#: dllwrap.c:534 +msgid " --mno-cygwin Create Mingw DLL\n" +msgstr " --mno-cygwin Mingw DLL ¤òºîÀ®¤¹¤ë\n" + +#: dllwrap.c:535 +msgid " Options passed to DLLTOOL:\n" +msgstr " DLLTOOL ¤ËÅϤµ¤ì¤ë¥ª¥×¥·¥ç¥ó:\n" + +#: dllwrap.c:536 +msgid " --machine \n" +msgstr " --machine <¥Þ¥·¥ó>\n" + +#: dllwrap.c:537 +msgid " --output-exp Generate export file.\n" +msgstr " --output-exp <½ÐÎÏ̾> export ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤¹¤ë¡£\n" + +#: dllwrap.c:538 +msgid " --output-lib Generate input library.\n" +msgstr " --output-lib <½ÐÎÏ̾> input ¥é¥¤¥Ö¥é¥ê¤òÀ¸À®¤¹¤ë¡£\n" + +#: dllwrap.c:539 +msgid " --add-indirect Add dll indirects to export file.\n" +msgstr " --add-indirect export ¥Õ¥¡¥¤¥ë¤Ë´ÖÀÜ dll ¤òÄɲ乤롣\n" + +#: dllwrap.c:540 +msgid " --dllname Name of input dll to put into output lib.\n" +msgstr " --dllname <̾Á°> ½ÐÎÏ lib ¤ËÃÖ¤¯ÆþÎÏ dll ¤Î̾Á°¡£\n" + +#: dllwrap.c:541 +msgid " --def Name input .def file\n" +msgstr " --def ÆþÎÏ .def ¥Õ¥¡¥¤¥ë¤Î̾Á°\n" + +#: dllwrap.c:542 +msgid " --output-def Name output .def file\n" +msgstr " --output-def ½ÐÎÏ .def ¥Õ¥¡¥¤¥ë¤Î̾Á°¡£\n" + +#: dllwrap.c:543 +msgid " --export-all-symbols Export all symbols to .def\n" +msgstr " --export-all-symbols .def ¤ËÁ´¥·¥ó¥Ü¥ë¤ò export ¤¹¤ë\n" + +#: dllwrap.c:544 +msgid " --no-export-all-symbols Only export .drectve symbols\n" +msgstr " --no-export-all-symbols .drectve ¥·¥ó¥Ü¥ë¤Î¤ß¤ò export ¤¹¤ë\n" + +#: dllwrap.c:545 +msgid " --exclude-symbols Exclude from .def\n" +msgstr " --exclude-symbols .def ¤«¤é ¤ò½ü³°¤¹¤ë\n" + +#: dllwrap.c:546 +msgid " --no-default-excludes Zap default exclude symbols\n" +msgstr " --no-default-excludes ¥Ç¥Õ¥©¥ë¥È¤Ç½ü³°¤µ¤ì¤ë¥·¥ó¥Ü¥ë¤ò̵¤¯¤¹\n" + +#: dllwrap.c:547 +msgid " --base-file Read linker generated base file\n" +msgstr " --base-file ¥ê¥ó¥«¤¬ºîÀ®¤·¤¿¥Ù¡¼¥¹¥Õ¥¡¥¤¥ë¤òÆɤ߼è¤ë\n" + +#: dllwrap.c:548 +msgid " --no-idata4 Don't generate idata$4 section\n" +msgstr " --no-idata4 idata$4 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤\n" + +#: dllwrap.c:549 +msgid " --no-idata5 Don't generate idata$5 section\n" +msgstr " --no-idata5 idata$5 ¥»¥¯¥·¥ç¥ó¤òÀ¸À®¤·¤Ê¤¤\n" + +#: dllwrap.c:550 +msgid " -U Add underscores to .lib\n" +msgstr " -U .lib ¤Ë²¼Àþ¤òÄɲ乤ë\n" + +#: dllwrap.c:551 +msgid " -k Kill @ from exported names\n" +msgstr " -k export ¤µ¤ì¤¿Ì¾Á°¤«¤é @ ¤òºï¤ë\n" + +#: dllwrap.c:552 +msgid " --add-stdcall-alias Add aliases without @\n" +msgstr " --add-stdcall-alias @ ¤Ê¤·¤Î¥¨¥¤¥ê¥¢¥¹¤òÄɲ乤ë\n" + +#: dllwrap.c:553 +msgid " --as Use for assembler\n" +msgstr " --as <̾Á°> ¥¢¥»¥ó¥Ö¥é¤È¤·¤Æ <̾Á°> ¤ò»È¤¦\n" + +#: dllwrap.c:554 +msgid " --nodelete Keep temp files.\n" +msgstr " --nodelete °ì»þ¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Ê¤¤¡£\n" + +#: dllwrap.c:555 +msgid " Rest are passed unmodified to the language driver\n" +msgstr " »Ä¤ê¤Ï¤½¤Î¤Þ¤Þ¸À¸ì¥É¥é¥¤¥Ð¤ËÅϤµ¤ì¤Þ¤¹\n" + +#: dllwrap.c:816 +msgid "Must provide at least one of -o or --dllname options" +msgstr "¾¯¤Ê¤¯¤È¤â -o ¤« --dllname ¥ª¥×¥·¥ç¥ó¤Î¤É¤Á¤é¤«¤Ï»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" + +#: dllwrap.c:844 +msgid "no export definition file provided" +msgstr "export ÄêµÁ¥Õ¥¡¥¤¥ë¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: dllwrap.c:845 +msgid "creating one, but that may not be what you want" +msgstr "°ì¤ÄºîÀ®¤·¤Þ¤¹¤¬¡¢¤³¤ì¤Ï¤¢¤Ê¤¿¤¬Ë¾¤à¤â¤Î¤Ç¤Ï¤Ê¤¤¤È»×¤ï¤ì¤Þ¤¹" + +#: dllwrap.c:1006 +#, c-format +msgid "DLLTOOL name : %s\n" +msgstr "DLLTOOL ̾ : %s\n" + +#: dllwrap.c:1007 +#, c-format +msgid "DLLTOOL options : %s\n" +msgstr "DLLTOOL ¥ª¥×¥·¥ç¥ó: %s\n" + +#: dllwrap.c:1008 +#, c-format +msgid "DRIVER name : %s\n" +msgstr "DRIVER ̾ : %s\n" + +#: dllwrap.c:1009 +#, c-format +msgid "DRIVER options : %s\n" +msgstr "DRIVER ¥ª¥×¥·¥ç¥ó: %s\n" + +#: ieee.c:317 +msgid "unexpected end of debugging information" +msgstr "¥Ç¥Ð¥Ã¥°¾ðÊó¤¬Í½´ü¤·¤Ê¤¤½ê¤Ç½ª¤ï¤Ã¤Æ¤¤¤Þ¤¹" + +#: ieee.c:412 +msgid "invalid number" +msgstr "ÉÔŬÀÚ¤ÊÈÖ¹æ" + +#: ieee.c:471 +msgid "invalid string length" +msgstr "ÉÔŬÀÚ¤Êʸ»úÎóĹ" + +#: ieee.c:528 ieee.c:569 +msgid "expression stack overflow" +msgstr "¼°¥¹¥¿¥Ã¥¯¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: ieee.c:548 +msgid "unsupported IEEE expression operator" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ IEEE ¼°±é»»»Ò¤Ç¤¹" + +#: ieee.c:563 +msgid "unknown section" +msgstr "ÉÔÌÀ¤Ê¥»¥¯¥·¥ç¥ó¤Ç¤¹" + +#: ieee.c:584 +msgid "expression stack underflow" +msgstr "¼°¥¹¥¿¥Ã¥¯¤¬¥¢¥ó¥À¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: ieee.c:598 +msgid "expression stack mismatch" +msgstr "¼°¥¹¥¿¥Ã¥¯¤¬°ìÃפ·¤Þ¤»¤ó" + +#: ieee.c:637 +msgid "unknown builtin type" +msgstr "ÉÔÌÀ¤ÊÁȤ߹þ¤ß·¿¤Ç¤¹" + +#: ieee.c:782 +msgid "BCD float type not supported" +msgstr "BCD ÉâÆ°¾®¿ô·¿¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#: ieee.c:928 +msgid "unexpected number" +msgstr "ͽ´ü¤·¤Ê¤¤ÈÖ¹æ¤Ç¤¹" + +#: ieee.c:935 +msgid "unexpected record type" +msgstr "ͽ´ü¤·¤Ê¤¤¥ì¥³¡¼¥É·¿¤Ç¤¹" + +#: ieee.c:968 +msgid "blocks left on stack at end" +msgstr "¥Ö¥í¥Ã¥¯¤¬¥¹¥¿¥Ã¥¯¤Î½ª¤ê¤Ë»Ä¤Ã¤Æ¤¤¤Þ¤¹" + +#: ieee.c:1233 +msgid "unknown BB type" +msgstr "ÉÔÌÀ¤Ê BB ·¿¤Ç¤¹" + +#: ieee.c:1242 +msgid "stack overflow" +msgstr "¥¹¥¿¥Ã¥¯¤¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: ieee.c:1267 +msgid "stack underflow" +msgstr "¥¹¥¿¥Ã¥¯¤¬¥¢¥ó¥À¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: ieee.c:1381 ieee.c:1453 ieee.c:2152 +msgid "illegal variable index" +msgstr "ÊÑ¿ô¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹" + +#: ieee.c:1431 +msgid "illegal type index" +msgstr "·¿¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬ÉÔÀµ¤Ç¤¹" + +#: ieee.c:1441 ieee.c:1478 +msgid "unknown TY code" +msgstr "ÉÔÌÀ¤Ê TY ¥³¡¼¥É¤Ç¤¹" + +#: ieee.c:1460 +msgid "undefined variable in TY" +msgstr "TY ¤Ë̤ÄêµÁ¤ÎÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹" + +#. Pascal file name. FIXME. +#: ieee.c:1871 +msgid "Pascal file name not supported" +msgstr "Pascal ¥Õ¥¡¥¤¥ë̾¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ieee.c:1919 +msgid "unsupported qualifer" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤½¤¾þ»Ò¤Ç¤¹" + +#: ieee.c:2190 +msgid "undefined variable in ATN" +msgstr "ATN ¤Ë̤ÄêµÁ¤ÎÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹" + +#: ieee.c:2233 +msgid "unknown ATN type" +msgstr "ÉÔÌÀ¤Ê ATN ·¿¤Ç¤¹" + +#. Reserved for FORTRAN common. +#: ieee.c:2355 +msgid "unsupported ATN11" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ ATN11 ¤Ç¤¹" + +#. We have no way to record this information. FIXME. +#: ieee.c:2382 +msgid "unsupported ATN12" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ ATN12 ¤Ç¤¹" + +#: ieee.c:2442 +msgid "unexpected string in C++ misc" +msgstr "C++ misc ¤Ëͽ´ü¤·¤Ê¤¤Ê¸»úÎ󤬤¢¤ê¤Þ¤¹" + +#: ieee.c:2455 +msgid "bad misc record" +msgstr "ÉÔÀµ¤Ê misc ¥ì¥³¡¼¥É¤Ç¤¹" + +#: ieee.c:2498 +msgid "unrecognized C++ misc record" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ misc ¥ì¥³¡¼¥É¤Ç¤¹" + +#: ieee.c:2615 +msgid "undefined C++ object" +msgstr "̤ÄêµÁ¤Î C++ ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹" + +#: ieee.c:2649 +msgid "unrecognized C++ object spec" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ ¥ª¥Ö¥¸¥§¥¯¥È»ÅÍͤǤ¹" + +#: ieee.c:2685 +msgid "unsupported C++ object type" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ C++ ¥ª¥Ö¥¸¥§¥¯¥È·¿¤Ç¤¹" + +#: ieee.c:2695 +msgid "C++ base class not defined" +msgstr "C++ ¥Ù¡¼¥¹¥¯¥é¥¹¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ieee.c:2707 ieee.c:2812 +msgid "C++ object has no fields" +msgstr "C++ ¥ª¥Ö¥¸¥§¥¯¥È¤¬¥Õ¥£¡¼¥ë¥É¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó" + +#: ieee.c:2726 +msgid "C++ base class not found in container" +msgstr "C++ ¥Ù¡¼¥¹¥¯¥é¥¹¤¬¥³¥ó¥Æ¥ÊÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: ieee.c:2833 +msgid "C++ data member not found in container" +msgstr "C++ ¥Ç¡¼¥¿¥á¥ó¥Ð¤¬¥³¥ó¥Æ¥ÊÆâ¤Ë¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: ieee.c:2874 ieee.c:3024 +msgid "unknown C++ visibility" +msgstr "ÉÔÌÀ¤Ê C++ ²Ä»ëÀ­¤Ç¤¹" + +#: ieee.c:2908 +msgid "bad C++ field bit pos or size" +msgstr "C++ ¥Õ¥£¡¼¥ë¥É¥Ó¥Ã¥È°ÌÃÖËô¤Ï¥µ¥¤¥º¤¬ÉÔÀµ¤Ç¤¹" + +#: ieee.c:3000 +msgid "bad type for C++ method function" +msgstr "C++ ¥á¥½¥Ã¥É´Ø¿ô¤Î·¿¤¬ÉÔÀµ¤Ç¤¹" + +#: ieee.c:3010 +msgid "no type information for C++ method function" +msgstr "C++ ¥á¥½¥Ã¥É´Ø¿ô¤Î·¿¾ðÊ󤬤¢¤ê¤Þ¤»¤ó" + +#: ieee.c:3049 +msgid "C++ static virtual method" +msgstr "C++ static virtual ¥á¥½¥Ã¥É¤Ç¤¹" + +#: ieee.c:3144 +msgid "unrecognized C++ object overhead spec" +msgstr "C++ ¥ª¥Ö¥¸¥§¥¯¥È¥ª¡¼¥Ð¡¼¥Ø¥Ã¥É»ÅÍͤòǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: ieee.c:3183 +msgid "undefined C++ vtable" +msgstr "C++ ²¾ÁÛ´Ø¿ô¥Æ¡¼¥Ö¥ë(vtable) ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: ieee.c:3254 +msgid "C++ default values not in a function" +msgstr "C++ ¥Ç¥Õ¥©¥ë¥ÈÃͤ¬´Ø¿ôÆâ¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: ieee.c:3294 +msgid "unrecognized C++ default type" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ ¥Ç¥Õ¥©¥ë¥È·¿¤Ç¤¹" + +#: ieee.c:3325 +msgid "reference parameter is not a pointer" +msgstr "»²¾È¥Ñ¥é¥á¥¿¤¬¥Ý¥¤¥ó¥¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ieee.c:3410 +msgid "unrecognized C++ reference type" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤ C++ »²¾È·¿¤Ç¤¹" + +#: ieee.c:3492 +msgid "C++ reference not found" +msgstr "C++ »²¾È¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó" + +#: ieee.c:3500 +msgid "C++ reference is not pointer" +msgstr "C++ »²¾È¤¬¥Ý¥¤¥ó¥¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: ieee.c:3529 ieee.c:3537 +msgid "missing required ASN" +msgstr "Í׵ᤵ¤ì¤¿ ASN ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: ieee.c:3567 ieee.c:3575 +msgid "missing required ATN65" +msgstr "Í׵ᤵ¤ì¤¿ ATN65 ¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: ieee.c:3589 +msgid "bad ATN65 record" +msgstr "ATN65 ¥ì¥³¡¼¥É¤¬ÉÔÀµ¤Ç¤¹" + +#: ieee.c:4236 +msgid "IEEE numeric overflow: 0x" +msgstr "IEEE ¿ôÃͤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: 0x" + +#: ieee.c:4282 +#, c-format +msgid "IEEE string length overflow: %u\n" +msgstr "IEEE ʸ»úÎóŤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿: %u\n" + +#: ieee.c:5324 +#, c-format +msgid "IEEE unsupported integer type size %u\n" +msgstr "IEEE ¤ÏÀ°¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" + +#: ieee.c:5360 +#, c-format +msgid "IEEE unsupported float type size %u\n" +msgstr "IEEE ¤ÏÉâÆ°¾®¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" + +#: ieee.c:5396 +#, c-format +msgid "IEEE unsupported complex type size %u\n" +msgstr "IEEE ¤ÏÊ£ÁÇ¿ô·¿¥µ¥¤¥º %u ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó\n" + +#: nlmconv.c:275 srconv.c:1966 +msgid "input and output files must be different" +msgstr "ÆþÎϤȽÐÎϤϰۤʤë¥Õ¥¡¥¤¥ë¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" + +#: nlmconv.c:322 +msgid "input file named both on command line and with INPUT" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë̾¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤È INPUT ¤ÎξÊý¤ÇÍ¿¤¨¤é¤ì¤Þ¤·¤¿" + +#: nlmconv.c:331 +msgid "no input file" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó" + +#: nlmconv.c:361 +msgid "no name for output file" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ëÍѤÎ̾Á°¤¬¤¢¤ê¤Þ¤»¤ó" + +#: nlmconv.c:374 +msgid "warning: input and output formats are not compatible" +msgstr "·Ù¹ð: ÆþÎϤȽÐÎϤηÁ¼°¤Ë¸ß´¹À­¤¬¤¢¤ê¤Þ¤»¤ó" + +#: nlmconv.c:403 +msgid "make .bss section" +msgstr ".bss ¥»¥¯¥·¥ç¥ó¤ÎºîÀ®" + +#: nlmconv.c:412 +msgid "make .nlmsections section" +msgstr ".nlmsections ¥»¥¯¥·¥ç¥ó¤ÎºîÀ®" + +#: nlmconv.c:414 +msgid "set .nlmsections flags" +msgstr ".nlmsections ¥Õ¥é¥°¤òÀßÄê" + +#: nlmconv.c:442 +msgid "set .bss vma" +msgstr ".bss vma ¤òÀßÄê" + +#: nlmconv.c:449 +msgid "set .data size" +msgstr ".data size ¤òÀßÄê" + +#: nlmconv.c:629 +#, c-format +msgid "warning: symbol %s imported but not in import list" +msgstr "·Ù¹ð: ¥·¥ó¥Ü¥ë %s ¤¬ import ¤µ¤ì¤Þ¤·¤¿¤¬ import ¥ê¥¹¥È¤Ë¤¢¤ê¤Þ¤»¤ó" + +#: nlmconv.c:649 +msgid "set start address" +msgstr "³«»Ï¥¢¥É¥ì¥¹¤òÀßÄê" + +#: nlmconv.c:698 +#, c-format +msgid "warning: START procedure %s not defined" +msgstr "·Ù¹ð: START ¥×¥í¥·¡¼¥¸¥ã %s ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: nlmconv.c:700 +#, c-format +msgid "warning: EXIT procedure %s not defined" +msgstr "·Ù¹ð: EXIT ¥×¥í¥·¡¼¥¸¥ã %s ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: nlmconv.c:702 +#, c-format +msgid "warning: CHECK procedure %s not defined" +msgstr "·Ù¹ð: CHECK ¥×¥í¥·¡¼¥¸¥ã %s ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: nlmconv.c:723 nlmconv.c:912 +msgid "custom section" +msgstr "¥«¥¹¥¿¥à¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:744 nlmconv.c:941 +msgid "help section" +msgstr "¥Ø¥ë¥×¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:766 nlmconv.c:959 +msgid "message section" +msgstr "¥á¥Ã¥»¡¼¥¸¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:782 nlmconv.c:992 +msgid "module section" +msgstr "¥â¥¸¥å¡¼¥ë¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:802 nlmconv.c:1008 +msgid "rpc section" +msgstr "rpc ¥»¥¯¥·¥ç¥ó" + +#. There is no place to record this information. +#: nlmconv.c:838 +#, c-format +msgid "%s: warning: shared libraries can not have uninitialized data" +msgstr "%s: ·Ù¹ð: ¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ï̤½é´ü²½¥Ç¡¼¥¿¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó" + +#: nlmconv.c:859 nlmconv.c:1027 +msgid "shared section" +msgstr "¶¦Í­¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:867 +msgid "warning: No version number given" +msgstr "·Ù¹ð: ¥Ð¡¼¥¸¥ç¥óÈֹ椬Ϳ¤¨¤é¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022 +#, c-format +msgid "%s: read: %s" +msgstr "%s: Æɹþ¤ß: %s" + +#: nlmconv.c:929 +msgid "warning: MAP and FULLMAP are not supported; try ld -M" +msgstr "·Ù¹ð: MAP ¤È FULLMAP ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó -- ld -M ¤ò»î¤·¤Æ¤¯¤À¤µ¤¤" + +#: nlmconv.c:1099 +#, c-format +msgid "%s: Convert an object file into a NetWare Loadable Module\n" +msgstr "%s: ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò NetWare ¥í¡¼¥À¥Ö¥ë¥â¥¸¥å¡¼¥ë¤ËÊÑ´¹¤·¤Þ¤¹\n" + +#: nlmconv.c:1111 +#, c-format +msgid "" +"Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n" +" [--input-target=bfdname] [--output-target=bfdname]\n" +" [--header-file=file] [--linker=linker] [--debug]\n" +" [--help] [--version]\n" +" [in-file [out-file]]\n" +msgstr "" +"Usage: %s [-dhV] [-I bfd̾] [-O bfd̾] [-T ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë] [-l ¥ê¥ó¥«]\n" +" [--input-target=bfd̾] [--output-target=bfd̾]\n" +" [--header-file=¥Õ¥¡¥¤¥ë] [--linker=¥ê¥ó¥«] [--debug]\n" +" [--help] [--version]\n" +" [ÆþÎÏ¥Õ¥¡¥¤¥ë [½ÐÎÏ¥Õ¥¡¥¤¥ë]]\n" + +#: nlmconv.c:1151 +#, c-format +msgid "support not compiled in for %s" +msgstr "%s ÍÑ¥µ¥Ý¡¼¥È¤Ï¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤»¤ó" + +#: nlmconv.c:1191 +msgid "make section" +msgstr "make ¥»¥¯¥·¥ç¥ó" + +#: nlmconv.c:1205 +msgid "set section size" +msgstr "¥»¥¯¥·¥ç¥ó¥µ¥¤¥º¤òÀßÄê" + +#: nlmconv.c:1211 +msgid "set section alignment" +msgstr "¥»¥¯¥·¥ç¥ó¥¢¥é¥¤¥ó¥á¥ó¥È¤òÀßÄê" + +#: nlmconv.c:1215 +msgid "set section flags" +msgstr "¥»¥¯¥·¥ç¥ó¥Õ¥é¥°¤òÀßÄê" + +#: nlmconv.c:1226 +msgid "set .nlmsections size" +msgstr ".nlmsections ¥µ¥¤¥º¤òÀßÄê" + +#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336 +msgid "set .nlmsection contents" +msgstr ".nlmsection ¤ÎÆâÍƤòÀßÄê" + +#: nlmconv.c:1839 +msgid "stub section sizes" +msgstr "¥¹¥¿¥Ö¥»¥¯¥·¥ç¥ó¥µ¥¤¥º" + +#: nlmconv.c:1888 +msgid "writing stub" +msgstr "¥¹¥¿¥Ö¤Î½ñ¹þ¤ßÃæ" + +#: nlmconv.c:1978 +#, c-format +msgid "unresolved PC relative reloc against %s" +msgstr "%s ¤ËÂФ¹¤ë PC ´ØÏ¢ºÆÇÛÃÖ¤ò²ò·è¤Ç¤­¤Þ¤»¤ó" + +#: nlmconv.c:2042 +#, c-format +msgid "overflow when adjusting relocation against %s" +msgstr "%s ¤ËÂФ¹¤ëºÆÇÛÃÖ¤òÄ´À°Ãæ¤Ë¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: nlmconv.c:2159 +#, c-format +msgid "%s: execution of %s failed: " +msgstr "%s: %s ¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤·¤¿: " + +#: nlmconv.c:2174 +#, c-format +msgid "Execution of %s failed" +msgstr "%s ¤Î¼Â¹Ô¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: nm.c:294 +#, c-format +msgid "Usage: %s [OPTION]... [FILE]...\n" +msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó]... [¥Õ¥¡¥¤¥ë]...\n" + +#: nm.c:295 +msgid "List symbols from FILEs (a.out by default).\n" +msgstr "¥Õ¥¡¥¤¥ë(¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï a.out)¤«¤é¥·¥ó¥Ü¥ë¤ò¥ê¥¹¥Èɽ¼¨¤·¤Þ¤¹¡£\n" + +#: nm.c:296 +msgid "" +"\n" +" -a, --debug-syms Display debugger-only symbols\n" +" -A, --print-file-name Print name of the input file before every symbol\n" +" -B Same as --format=bsd\n" +" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n" +" The STYLE, if specified, can be `auto' (the default),\n" +" `gnu', 'lucid', 'arm', 'hp', 'edg' or 'gnu-new-abi'\n" +" --no-demangle Do not demangle low-level symbol names\n" +" -D, --dynamic Display dynamic symbols instead of normal symbols\n" +" --defined-only Display only defined symbols\n" +" -e (ignored)\n" +" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n" +" `sysv' or `posix'. The default is `bsd'\n" +" -g, --extern-only Display only external symbols\n" +" -h, --help Display this information\n" +" -l, --line-numbers Use debugging information to find a filename and\n" +" line number for each symbol\n" +" -n, --numeric-sort Sort symbols numerically by address\n" +" -o Same as -A\n" +" -p, --no-sort Do not sort the symbols\n" +" -P, --portability Same as --format=posix\n" +" -r, --reverse-sort Reverse the sense of the sort\n" +" -s, --print-armap Include index for symbols from archive members\n" +" --size-sort Sort symbols by size\n" +" -t, --radix=RADIX Use RADIX for printing symbol values\n" +" --target=BFDNAME Specify the target object format as BFDNAME\n" +" -u, --undefined-only Display only undefined symbols\n" +" -V, --version Display this program's version number\n" +" -X 32_64 (ignored)\n" +"\n" +msgstr "" +"\n" +" -a, --debug-syms ¥Ç¥Ð¥Ã¥°ÀìÍÑ¥·¥ó¥Ü¥ë¤òɽ¼¨¤¹¤ë\n" +" -A, --print-file-name ³Æ¥·¥ó¥Ü¥ë¤ÎÁ°¤ËÆþÎÏ¥Õ¥¡¥¤¥ë̾¤òɽ¼¨¤¹¤ë\n" +" -B --format=bsd ¤ÈƱ¤¸\n" +" -C, --demangle[=STYLE] Äã°Ì¥·¥ó¥Ü¥ë̾¤ò¥æ¡¼¥¶¥ì¥Ù¥ë̾¤ËÉü¸µ¤¹¤ë\n" +" STYLE ¤Ë°Ê²¼¤Î¤â¤Î¤ò»ØÄê¤Ç¤­¤ë -- `auto'(default),\n" +" `gnu', 'lucid', 'arm', 'hp', 'edg', 'gnu-new-abi'\n" +" --no-demangle Äã°Ì¥·¥ó¥Ü¥ë̾¤òÉü¸µ¤·¤Ê¤¤\n" +" -D, --dynamic Ä̾亮¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¯Æ°Åª¥·¥ó¥Ü¥ë¤òɽ¼¨¤¹¤ë¡£\n" +" --defined-only ÄêµÁºÑ¥·¥ó¥Ü¥ë¤Î¤ß¤òɽ¼¨¤¹¤ë\n" +" -e (̵»ë¤µ¤ì¤ë)\n" +" -f, --format=FORMAT ½ÐÎÏ·Á¼°¤ò FORMAT ¤È¤¹¤ë¡£FORMAT ¤Ë¤Ï `bsd',\n" +" `sysv', `posix' ¤ò»ØÄê¤Ç¤­¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï `bsd'\n" +" -g, --extern-only ³°Éô¥·¥ó¥Ü¥ë¤Î¤ß¤òɽ¼¨¤¹¤ë\n" +" -h, --help ¤³¤Î¾ðÊó¤òɽ¼¨¤¹¤ë\n" +" -l, --line-numbers ³Æ¥·¥ó¥Ü¥ë¤Î¥Ç¥Ð¥Ã¥°¾ðÊ󤫤顢¥·¥ó¥Ü¥ë¤Î¥Õ¥¡¥¤¥ë̾¤È\n" +" ¹ÔÈÖ¹æ¤ò¸«¤Ä¤±¤ë\n" +" -n, --numeric-sort ¥¢¥É¥ì¥¹Ãͤˤè¤Ã¤Æ¥½¡¼¥È¤¹¤ë\n" +" -o -A ¤ÈƱ¤¸\n" +" -p, --no-sort ¥·¥ó¥Ü¥ë¤Ë¤è¤ë¥½¡¼¥È¤ò¹Ô¤ï¤Ê¤¤\n" +" -P, --portability --format=posix ¤ÈƱ¤¸\n" +" -r, --reverse-sort ¥½¡¼¥È½ç¤òµÕ¤Ë¤¹¤ë\n" +" -s, --print-armap ½ñ¸Ë¥á¥ó¥Ð¤«¤é¤Î¥·¥ó¥Ü¥ëÍѤκ÷°ú¤ò´Þ¤á¤ë\n" +" --size-sort ¥µ¥¤¥º¤Ë¤è¤Ã¤Æ¥½¡¼¥È¤¹¤ë\n" +" -t, --radix=RADIX ¥·¥ó¥Ü¥ëÃͤÎɽ¼¨´ð¿ô¤Ë RADIX ¤ò»È¤¦\n" +" --target=BFDNAME ¥¿¡¼¥²¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È·Á¼°¤ò BFDNAME ¤È¤·¤Æ»ØÄꤹ¤ë\n" +" -u, --undefined-only ̤ÄêµÁ¥·¥ó¥Ü¥ë¤Î¤ß¤òɽ¼¨¤¹¤ë\n" +" -V, --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë\n" +" -X 32_64 (̵»ë¤µ¤ì¤ë)\n" +"\n" + +#: nm.c:328 objdump.c:274 +#, c-format +msgid "Report bugs to %s.\n" +msgstr "¥Ð¥°Êó¹ð¤Ï %s ¤Þ¤Ç¡£\n" + +#: nm.c:361 +#, c-format +msgid "%s: invalid radix" +msgstr "%s: ´ð¿ô¤¬ÉÔŬÀڤǤ¹" + +#: nm.c:386 +#, c-format +msgid "%s: invalid output format" +msgstr "%s: ½ÐÎÏ·Á¼°¤¬ÉÔŬÀڤǤ¹" + +#: nm.c:493 +msgid "Only -X 32_64 is supported" +msgstr "-X 32_64 ¤·¤«¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó" + +#: nm.c:535 +#, c-format +msgid "data size %ld" +msgstr "¥Ç¡¼¥¿¥µ¥¤¥º %ld" + +#: nm.c:1325 +#, c-format +msgid "\n\nUndefined symbols from %s:\n\n" +msgstr "\n\n%s ¤«¤é¤Î̤ÄêµÁ¥·¥ó¥Ü¥ë:\n\n" + +#: nm.c:1327 +#, c-format +msgid "\n\nSymbols from %s:\n\n" +msgstr "\n\n%s ¤«¤é¤Î¥·¥ó¥Ü¥ë:\n\n" + +#: nm.c:1328 nm.c:1382 +msgid "Name Value Class Type Size Line Section\n\n" +msgstr "̾Á° ÃÍ ¥¯¥é¥¹ ·¿ ¥µ¥¤¥º ¹Ô ¥»¥¯¥·¥ç¥ó\n\n" + +#: nm.c:1379 +#, c-format +msgid "\n\nUndefined symbols from %s[%s]:\n\n" +msgstr "\n\n%s[%s] ¤«¤é¤Î̤ÄêµÁ¥·¥ó¥Ü¥ë:\n\n" + +#: nm.c:1381 +#, c-format +msgid "\n\nSymbols from %s[%s]:\n\n" +msgstr "\n\n%s[%s] ¤«¤é¤Î¥·¥ó¥Ü¥ë:\n\n" + +#: nm.c:1552 +msgid "\nArchive index:\n" +msgstr "\n½ñ¸Ë¥¤¥ó¥Ç¥Ã¥¯¥¹:\n" + +#: objcopy.c:322 +#, c-format +msgid "Usage: %s in-file [out-file]\n" +msgstr "»È¤¤Êý: %s <¥¹¥¤¥Ã¥Á> ÆþÎÏ¥Õ¥¡¥¤¥ë [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" + +#: objcopy.c:323 objcopy.c:383 +msgid " The switches are:\n" +msgstr " ¥¹¥¤¥Ã¥Á¤Ï°Ê²¼¤ÎÄ̤ê:\n" + +#: objcopy.c:324 +msgid "" +" -I --input-target Assume input file is in format \n" +" -O --output-target Create an output file in format \n" +" -F --target Set both input and output format to \n" +" --debugging Convert debugging information, if possible\n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -j --only-section Only copy section into the output\n" +" -R --remove-section Remove section from the output\n" +" -S --strip-all Remove all symbol and relocation information\n" +" -g --strip-debug Remove all debugging symbols\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol Do not copy symbol \n" +" -K --keep-symbol Only copy symbol \n" +" -L --localize-symbol Force symbol to be marked as a local\n" +" -W --weaken-symbol Force symbol to be marked as a weak\n" +" --weaken Force all global symbols to be marked as weak\n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -i --interleave Only copy one out of every bytes\n" +" -b --byte Select byte in every interleaved block\n" +" --gap-fill Fill gaps between sections with \n" +" --pad-to Pad the last section up to address \n" +" --set-start Set the start address to \n" +" {--change-start|--adjust-start} \n" +" Add to the start address\n" +" {--change-addresses|--adjust-vma} \n" +" Add to LMA, VMA and start addresses\n" +" {--change-section-address|--adjust-section-vma} {=|+|-}\n" +" Change LMA and VMA of section by \n" +" --change-section-lma {=|+|-}\n" +" Change the LMA of section by \n" +" --change-section-vma {=|+|-}\n" +" Change the VMA of section by \n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" Warn if a named section does not exist\n" +" --set-section-flags =\n" +" Set section 's properties to \n" +" --add-section = Add section found in to output\n" +" --change-leading-char Force output format's leading character style\n" +" --remove-leading-char Remove leading character from global symbols\n" +" --redefine-sym = Redefine symbol name to \n" +" --srec-len Restrict the length of generated Srecords\n" +" --srec-forceS3 Restrict the type of generated Srecords to S3\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +msgstr "" +" -I --input-target ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò ·Á¼°¤ò¤È¤ß¤Ê¤¹\n" +" -O --output-target ½ÐÎÏ·Á¼°¤ò ¤È¤·¤ÆºîÀ®¤¹¤ë\n" +" -F --target ÆþÎÏ¡¦½ÐÎÏξÊý¤Ë ·Á¼°¤ò»ÈÍѤ¹¤ë\n" +" --debugging ²Äǽ¤Ç¤¢¤ì¤Ð¥Ç¥Ð¥Ã¥°¾ðÊó¤òÊÑ´¹¤¹¤ë\n" +" -p --preserve-dates ½¤Àµ/¥¢¥¯¥»¥¹»þ¹ï¾ðÊó¤ò½ÐÎϤ˥³¥Ô¡¼¤¹¤ë\n" +" -j --only-section <̾Á°> <̾Á°> ¤Î¥»¥¯¥·¥ç¥ó¤À¤±¤ò½ÐÎϤ¹¤ë\n" +" -R --remove-section <̾Á°> <̾Á°> ¤Î¥»¥¯¥·¥ç¥ó¤ò½ÐÎϤ«¤é¼è¤ê½ü¤¯\n" +" -S --strip-all Á´¤Æ¤Î¥·¥ó¥Ü¥ëµÚ¤ÓºÆÇÛÃÖ¾ðÊó¤ò¼è¤ê½ü¤¯\n" +" -g --strip-debug Á´¤Æ¤Î¥Ç¥Ð¥Ã¥°¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" --strip-unneeded ºÆÇÛÃÖ¤ËɬÍפʥ·¥ó¥Ü¥ë°Ê³°¤òÁ´¤Æ¼è¤ê½ü¤¯\n" +" -N --strip-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤·¤Ê¤¤\n" +" -K --keep-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤¹¤ë\n" +" -L --localize-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤Ë local ¥Þ¡¼¥¯¤ò¤Ä¤±¤ë\n" +" -W --weaken-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤Ë weak ¥Þ¡¼¥¯¤ò¤Ä¤±¤ë\n" +" --weaken Á´¤Æ¤ÎÂç°è¥·¥ó¥Ü¥ë¤Ë weak ¥Þ¡¼¥¯¤ò¤Ä¤±¤ë\n" +" -x --discard-all Á´¤Æ¤ÎÈóÂç°è¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" -X --discard-locals ¤¢¤ë¼ï¤Î¥³¥ó¥Ñ¥¤¥éÀ¸À®¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" -i --interleave <¿ôÃÍ> <¿ôÃÍ> ¥Ð¥¤¥Èʬ¤´¤È¤Ë¥³¥Ô¡¼¤¹¤ë\n" +" -b --byte <¿ôÃÍ> ³Æ interleave ¥Ö¥í¥Ã¥¯¤Ç¤Î¥Ð¥¤¥È¿ô¤òÁªÂò\n" +" --gap-fill <ÃÍ> ¥»¥¯¥·¥ç¥ó´Ö¤Î·ä´Ö¤ò <ÃÍ> ¤ÇËä¤á¤ë\n" +" --pad-to <¥¢¥É¥ì¥¹> ľÁ°¤Î¥»¥¯¥·¥ç¥ó¤«¤é <¥¢¥É¥ì¥¹> ¤Þ¤ÇËä¤á¤ë\n" +" --set-start <¥¢¥É¥ì¥¹> ³«»Ï¥¢¥É¥ì¥¹¤ò <¥¢¥É¥ì¥¹> ¤ËÀßÄꤹ¤ë\n" +" {--change-start|--adjust-start} <Áýʬ>\n" +" ³«»Ï¥¢¥É¥ì¥¹¤Ë <Áýʬ> ²Ã¤¨¤ë\n" +" {--change-addresses|--adjust-vma} <Áýʬ>\n" +" LMA, VMA µÚ¤Ó³«»Ï¥¢¥É¥ì¥¹¤Ë <Áýʬ> ²Ã¤¨¤ë\n" +" {--change-section-address|--adjust-section-vma} <̾Á°>{=|+|-}<ÃÍ>\n" +" ¥»¥¯¥·¥ç¥ó<̾Á°>¤Î LMA, VMA ¤ò<ÃÍ>¤ËÊѹ¹\n" +" --change-section-lma {=|+|-}\n" +" ¥»¥¯¥·¥ç¥ó <̾Á°> ¤Î LMA ¤ò <ÃÍ> ¤ËÊѹ¹\n" +" --change-section-vma {=|+|-}\n" +" ¥»¥¯¥·¥ç¥ó <̾Á°> ¤Î VMA ¤ò <ÃÍ> ¤ËÊѹ¹\n" +" {--[no-]change-warnings|--[no-]adjust-warnings}\n" +" ̾Á°ÉÕ¤­¥»¥¯¥·¥ç¥ó¤¬Ìµ¤±¤ì¤Ð·Ù¹ð¤¹¤ë\n" +" --set-section-flags <̾Á°>=<¥Õ¥é¥°>\n" +" ¥»¥¯¥·¥ç¥ó<̾Á°> ¤ÎÆüÁ¤ò <¥Õ¥é¥°> ¤ËÀßÄê\n" +" --add-section = ¥»¥¯¥·¥ç¥ó<̾Á°> ¤ò½ÐÎÏ<¥Õ¥¡¥¤¥ë>¤ËÄɲÃ\n" +" --change-leading-char ½ÐÎÏ·Á¼°¤ÎÀèƬʸ»úÊý¼°¤ò¶¯À©¤¹¤ë\n" +" --remove-leading-char Âç°è¥·¥ó¥Ü¥ë¤«¤éÀèƬʸ»ú¤ò¼è¤ê½ü¤¯\n" +" --redefine-sym <µì>=<¿·> ¥·¥ó¥Ü¥ë̾ <µì> ¤ò <¿·> ¤ËºÆÄêµÁ¤¹¤ë\n" +" --srec-len <¿ôÃÍ> À¸À®¤µ¤ì¤ë S¥ì¥³¡¼¥ÉŤò¸·Ì©¤Ë<¿ôÃÍ>¤È¤¹¤ë\n" +" --srec-forceS3 À¸À®¤µ¤ì¤ë S3 ÍÑ S¥ì¥³¡¼¥É·¿¤ò¸·Ì©¤Ë¤¹¤ë\n" +" -v --verbose ½¤Àµ¤µ¤ì¤¿Á´¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È\n" +" -V --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" +" -h --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" + +#: objcopy.c:382 +#, c-format +msgid "Usage: %s in-file(s)\n" +msgstr "»È¤¤Êý: %s <¥¹¥¤¥Ã¥Á> ÆþÎÏ¥Õ¥¡¥¤¥ë...\n" + +#: objcopy.c:384 +msgid "" +" -I --input-target Assume input file is in format \n" +" -O --output-target Create an output file in format \n" +" -F --target Set both input and output format to \n" +" -p --preserve-dates Copy modified/access timestamps to the output\n" +" -R --remove-section Remove section from the output\n" +" -s --strip-all Remove all symbol and relocation information\n" +" -g -S --strip-debug Remove all debugging symbols\n" +" --strip-unneeded Remove all symbols not needed by relocations\n" +" -N --strip-symbol Do not copy symbol \n" +" -K --keep-symbol Only copy symbol \n" +" -x --discard-all Remove all non-global symbols\n" +" -X --discard-locals Remove any compiler-generated symbols\n" +" -v --verbose List all object files modified\n" +" -V --version Display this program's version number\n" +" -h --help Display this output\n" +" -o Place stripped output into \n" +msgstr "" +" -I --input-target ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò ·Á¼°¤È¤ß¤Ê¤¹\n" +" -O --output-target ½ÐÎϤò ·Á¼°¤ÇºîÀ®¤¹¤ë\n" +" -F --target ÆþÎÏ¡¦½ÐÎÏξÊý¤Ë ·Á¼°¤ò»ÈÍѤ¹¤ë\n" +" -p --preserve-dates ½¤Àµ/¥¢¥¯¥»¥¹»þ¹ï¾ðÊó¤ò½ÐÎϤ˥³¥Ô¡¼¤¹¤ë\n" +" -R --remove-section <̾Á°> <̾Á°> ¤Î¥»¥¯¥·¥ç¥ó¤ò½ÐÎϤ«¤é¼è¤ê½ü¤¯\n" +" -s --strip-all Á´¤Æ¤Î¥·¥ó¥Ü¥ëµÚ¤ÓºÆÇÛÃÖ¾ðÊó¤ò¼è¤ê½ü¤¯\n" +" -g -S --strip-debug Á´¤Æ¤Î¥Ç¥Ð¥Ã¥°¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" --strip-unneeded ºÆÇÛÃÖ¤ËɬÍפʥ·¥ó¥Ü¥ë°Ê³°¤òÁ´¤Æ¼è¤ê½ü¤¯ \n" +" -N --strip-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤·¤Ê¤¤\n" +" -K --keep-symbol <̾Á°> <̾Á°> ¤Î¥·¥ó¥Ü¥ë¤ò¥³¥Ô¡¼¤¹¤ë\n" +" -x --discard-all Á´¤Æ¤ÎÈóÂç°è¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" -X --discard-locals ¤¢¤ë¼ï¤Î¥³¥ó¥Ñ¥¤¥éÀ¸À®¥·¥ó¥Ü¥ë¤ò¼è¤ê½ü¤¯\n" +" -v --verbose ½¤Àµ¤µ¤ì¤¿Á´¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¥ê¥¹¥È\n" +" -V --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" +" -h --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" +" -o <¥Õ¥¡¥¤¥ë> strip ºÑ½ÐÎϤò <¥Õ¥¡¥¤¥ë> ¤Ë½ñ¤­¹þ¤à\n" + +#: objcopy.c:454 +#, c-format +msgid "unrecognized section flag `%s'" +msgstr "¥»¥¯¥·¥ç¥ó¥Õ¥é¥° `%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: objcopy.c:455 +#, c-format +msgid "supported flags: %s" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥Õ¥é¥°: %s" + +#: objcopy.c:712 +#, c-format +msgid "%s: Multiple redefinition of symbol \"%s\"" +msgstr "%s: ¥·¥ó¥Ü¥ë \"%s\" ¤ÎºÆÄêµÁ¤Ç¤¹" + +#: objcopy.c:719 +#, c-format +msgid "%s: Symbol \"%s\" is target of more than one redefinition" +msgstr "%s: ¥·¥ó¥Ü¥ë \"%s\" ²¿ÅÙ¤«ºÆÄêµÁ¤µ¤ì¤¿¥¿¡¼¥²¥Ã¥È¤Ç¤¹" + +#: objcopy.c:773 +#, c-format +msgid "copy from %s(%s) to %s(%s)\n" +msgstr "%s(%s) ¤«¤é %s(%s) ¤Ø¥³¥Ô¡¼¤·¤Þ¤¹\n" + +#: objcopy.c:792 +#, c-format +msgid "Warning: Output file cannot represent architecture %s" +msgstr "·Ù¹ð: ½ÐÎÏ¥Õ¥¡¥¤¥ë¤¬¥¢¡¼¥­¥Æ¥¯¥Á¥ã %s ¤ËÂбþ¤·¤Æ¤¤¤Þ¤»¤ó" + +#: objcopy.c:819 +#, c-format +msgid "can't create section `%s': %s" +msgstr "¥»¥¯¥·¥ç¥ó `%s' ¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: objcopy.c:905 +#, c-format +msgid "Can't fill gap after %s: %s" +msgstr "%s °Ê¹ß¤Î·ä´Ö¤òËä¤á¤é¤ì¤Þ¤»¤ó: %s" + +#: objcopy.c:930 +#, c-format +msgid "Can't add padding to %s: %s" +msgstr "%s ¤Ë¥Ñ¥Ç¥£¥ó¥°¤Ç¤­¤Þ¤»¤ó: %s" + +#: objcopy.c:1068 +#, c-format +msgid "%s: error copying private BFD data: %s" +msgstr "%s: ¥×¥é¥¤¥Ù¡¼¥È BFD ¥Ç¡¼¥¿¥³¥Ô¡¼Ãæ¤Î¥¨¥é¡¼: %s" + +#: objcopy.c:1102 +#, c-format +msgid "cannot mkdir %s for archive copying (error: %s)" +msgstr "½ñ¸Ë¥³¥Ô¡¼¤Î°Ù¤Î mkdir %s ¤¬¤Ç¤­¤Þ¤»¤ó (¥¨¥é¡¼: %s)" + +#: objcopy.c:1291 +msgid "making" +msgstr "ºîÀ®Ãæ" + +#: objcopy.c:1300 +msgid "size" +msgstr "¥µ¥¤¥º" + +#: objcopy.c:1314 +msgid "vma" +msgstr "vma " + +#: objcopy.c:1340 +msgid "alignment" +msgstr "¥¢¥é¥¤¥ó¥á¥ó¥È" + +#: objcopy.c:1349 +msgid "flags" +msgstr "¥Õ¥é¥°" + +#: objcopy.c:1363 +msgid "private data" +msgstr "¥×¥é¥¤¥Ù¡¼¥È¥Ç¡¼¥¿" + +#: objcopy.c:1371 +#, c-format +msgid "%s: section `%s': error in %s: %s" +msgstr "%s: ¥»¥¯¥·¥ç¥ó `%s': %s¤Î¥¨¥é¡¼: %s" + +#: objcopy.c:1645 +#, c-format +msgid "%s: can't create debugging section: %s" +msgstr "%s: ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: %s" + +#: objcopy.c:1660 +#, c-format +msgid "%s: can't set debugging section contents: %s" +msgstr "%s: ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤòÀßÄê¤Ç¤­¤Þ¤»¤ó: %s" + +#: objcopy.c:1669 +#, c-format +msgid "%s: don't know how to write debugging information for %s" +msgstr "%s: %s ÍѥǥХå°¾ðÊó¤Î½ñ¤­Êý¤¬²ò¤ê¤Þ¤»¤ó" + +#: objcopy.c:1775 +#, c-format +msgid "%s: cannot stat: %s" +msgstr "%s: stat(2) ¤¬¤Ç¤­¤Þ¤»¤ó: %s" + +#: objcopy.c:1825 +msgid "byte number must be non-negative" +msgstr "¥Ð¥¤¥È¿ô¤ÏÈóÉé¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" + +#: objcopy.c:1831 +msgid "interleave must be positive" +msgstr "interleave ¤ÏÀµ¤Î¿ôÃͤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" + +#: objcopy.c:1851 objcopy.c:1859 +#, c-format +msgid "%s both copied and removed" +msgstr "%s ¥³¥Ô¡¼¤Èºï½ü¤ÎξÊý¤¬»ØÄꤵ¤ì¤Þ¤·¤¿" + +#: objcopy.c:1928 objcopy.c:1998 objcopy.c:2099 objcopy.c:2127 +#, c-format +msgid "bad format for %s" +msgstr "%s ÍѤȤ·¤Æ¤ÏÉÔÀµ¤Ê·Á¼°¤Ç¤¹" + +#: objcopy.c:1931 +#, c-format +msgid "cannot stat: %s: %s" +msgstr "stat(2) ¤Ç¤­¤Þ¤»¤ó: %s: %s" + +#: objcopy.c:1949 +#, c-format +msgid "cannot open: %s: %s" +msgstr "open ¤Ç¤­¤Þ¤»¤ó: %s: %s" + +#: objcopy.c:1953 +#, c-format +msgid "%s: fread failed" +msgstr "%s: fread(3) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿" + +#: objcopy.c:2067 +#, c-format +msgid "Warning: truncating gap-fill from 0x%s to 0x%x" +msgstr "·Ù¹ð: 0x%s ¤«¤é 0x%x ¤Þ¤Ç¤Î·ä´Ö¤ÎËä¤á¹þ¤ß¤òÀÚ¤êµÍ¤á¤Þ¤¹" + +#: objcopy.c:2169 +msgid "byte number must be less than interleave" +msgstr "¥Ð¥¤¥È¿ô¤Ï interleave ̤Ëþ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó" + +#: objcopy.c:2188 +#, c-format +msgid "Cannot stat: %s: %s" +msgstr "stat(2) ¤Ç¤­¤Þ¤»¤ó: %s: %s" + +#: objcopy.c:2228 objcopy.c:2242 +#, c-format +msgid "%s %s%c0x%s never used" +msgstr "%s %s%c0x%s ¤Ï»È¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó" + +#: objdump.c:223 +#, c-format +msgid "Usage: %s OPTION... FILE...\n" +msgstr "»È¤¤Êý: %s ¥ª¥×¥·¥ç¥ó... ¥Õ¥¡¥¤¥ë...\n" + +#: objdump.c:224 +msgid "Display information from object FILE.\n" +msgstr "¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤«¤é¤Î¾ðÊó¤òɽ¼¨¤¹¤ë¡£\n" + +#: objdump.c:225 +msgid "\n At least one of the following switches must be given:\n" +msgstr "\n °Ê²¼¤Î¥¹¥¤¥Ã¥Á¤«¤é¾¯¤Ê¤¯¤È¤â°ì¤Ä¤Ï»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:\n" + +#: objdump.c:226 +msgid "" +" -a, --archive-headers Display archive header information\n" +" -f, --file-headers Display the contents of the overall file header\n" +" -p, --private-headers Display object format specific file header contents\n" +" -h, --[section-]headers Display the contents of the section headers\n" +" -x, --all-headers Display the contents of all headers\n" +" -d, --disassemble Display assembler contents of executable sections\n" +" -D, --disassemble-all Display assembler contents of all sections\n" +" -S, --source Intermix source code with disassembly\n" +" -s, --full-contents Display the full contents of all sections requested\n" +" -g, --debugging Display debug information in object file\n" +" -G, --stabs Display (in raw form) any STABS info in the file\n" +" -t, --syms Display the contents of the symbol table(s)\n" +" -T, --dynamic-syms Display the contents of the dynamic symbol table\n" +" -r, --reloc Display the relocation entries in the file\n" +" -R, --dynamic-reloc Display the dynamic relocation entries in the file\n" +" -V, --version Display this program's version number\n" +" -i, --info List object formats and architectures supported\n" +" -H, --help Display this information\n" +msgstr "" +" -a, --archive-headers ½ñ¸Ë¥Ø¥Ã¥À¾ðÊó¤òɽ¼¨¤¹¤ë\n" +" -f, --file-headers ¥Õ¥¡¥¤¥ë¥Ø¥Ã¥ÀÁ´ÂΤξðÊó¤òɽ¼¨¤¹¤ë\n" +" -p, --private-headers ¥ª¥Ö¥¸¥§¥¯¥È·Á¼°ÆÃÍ­¤Î¥Õ¥¡¥¤¥ë¥Ø¥Ã¥ÀÆâÍƤòɽ¼¨¤¹¤ë\n" +" -h, --[section-]headers ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" +" -x, --all-headers Á´¥Ø¥Ã¥À¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" +" -d, --disassemble executable ¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò¥¢¥»¥ó¥Ö¥ê·Á¼°É½¼¨\n" +" -D, --disassemble-all Á´¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤò¥¢¥»¥ó¥Ö¥ê·Á¼°É½¼¨\n" +" -S, --source µÕ¥¢¥»¥ó¥Ö¥ë¤È¥½¡¼¥¹¥³¡¼¥É¤òº®ºß¤µ¤»¤Æɽ¼¨¤¹¤ë\n" +" -s, --full-contents Í׵ᤵ¤ì¤¿Á´¥»¥¯¥·¥ç¥ó¤ÎÁ´¤Æ¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" +" -g, --debugging ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤Î¥Ç¥Ð¥Ã¥°¾ðÊó¤òɽ¼¨\n" +" -G, --stabs ¥Õ¥¡¥¤¥ë¤Î STABS ¾ðÊó¤òÁǤηÁ¼°¤Çɽ¼¨¤¹¤ë\n" +" -t, --syms ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" +" -T, --dynamic-syms ưŪ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" +" -r, --reloc ¥Õ¥¡¥¤¥ë¤ÎºÆÇÛÃÖ¥¨¥ó¥È¥ê¤òɽ¼¨¤¹¤ë\n" +" -R, --dynamic-reloc ¥Õ¥¡¥¤¥ë¤ÎưŪºÆÇÛÃÖ¥¨¥ó¥È¥ê¤òɽ¼¨¤¹¤ë\n" +" -V, --version ¤³¤Î¥×¥í¥°¥é¥à¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" +" -i, --info ¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È·Á¼°¤È¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤òɽ¼¨\n" +" -H, --help ¤³¤Î¾ðÊó¤òɽ¼¨¤¹¤ë\n" + +#: objdump.c:248 +msgid "\n The following switches are optional:\n" +msgstr "\n °Ê²¼¤Î¥¹¥¤¥Ã¥Á¤Ï¥ª¥×¥·¥ç¥ó¤Ç¤¹:\n" + +#: objdump.c:249 +msgid "" +" -b, --target=BFDNAME Specify the target object format as BFDNAME\n" +" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n" +" -j, --section=NAME Only display information for section NAME\n" +" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n" +" -EB --endian=big Assume big endian format when disassembling\n" +" -EL --endian=little Assume little endian format when disassembling\n" +" --file-start-context Include context from start of file (with -S)\n" +" -l, --line-numbers Include line numbers and filenames in output\n" +" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n" +" The STYLE, if specified, can be `auto', 'gnu',\n" +" 'lucid', 'arm', 'hp', 'edg', or 'gnu-new-abi'\n" +" -w, --wide Format output for more than 80 columns\n" +" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n" +" --start-address=ADDR Only process data whoes address is >= ADDR\n" +" --stop-address=ADDR Only process data whoes address is <= ADDR\n" +" --prefix-addresses Print complete address alongside disassembly\n" +" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n" +" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n" +"\n" +msgstr "" +" -b, --target=BFDNAME ¥¿¡¼¥²¥Ã¥È¥ª¥Ö¥¸¥§¥¯¥È·Á¼°¤ò BFDNAME ¤È»ØÄê\n" +" -m, --architecture=MACHINE ¥¿¡¼¥²¥Ã¥È¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤ò MACHINE ¤È»ØÄê\n" +" -j, --section=NAME ¥»¥¯¥·¥ç¥ó NAME ¤Î¾ðÊó¤À¤±¤òɽ¼¨¤¹¤ë\n" +" -M, --disassembler-options=OPT µÕ¥¢¥»¥ó¥Ö¥é¤Ë OPT ʸ»úÎó¤òÅϤ¹\n" +" -EB --endian=big µÕ¥¢¥»¥ó¥Ö¥ë»þ¤Ë¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó·Á¼°¤È¤¹¤ë\n" +" -EL --endian=little µÕ¥¢¥»¥ó¥Ö¥ë»þ¤Ë¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó·Á¼°¤È¤¹¤ë\n" +" --file-start-context ¥Õ¥¡¥¤¥ë»ÏÅÀ¤«¤é¤Îʸ̮¤ò´Þ¤á¤ë(-S ¤È¶¦¤Ë»ÈÍÑ)\n" +" -l, --line-numbers ½ÐÎϤ˹ÔÈÖ¹æ¤È¥Õ¥¡¥¤¥ë̾¤ò´Þ¤á¤ë\n" +" -C, --demangle[=STYLE] ÊÑ·Á/½èÍý¤µ¤ì¤¿¥·¥ó¥Ü¥ë̾¤òÉü¸µ(demangle)¤¹¤ë\n" +" STYLE ¤ò»ØÄꤹ¤ë¾ì¹ç `auto', 'gnu', 'lucid',\n" +" 'arm', 'hp', 'edg', or 'gnu-new-abi'\n" +" -w, --wide ½ÐÎÏÉý 80 ·å°Ê¾å¤Ç½ÐÎϤòÀ°·Á¤¹¤ë\n" +" -z, --disassemble-zeroes µÕ¥¢¥»¥ó¥Ö¥ë»þ¤Ë¥¼¥í¤Î¥Ö¥í¥Ã¥¯¤òÈô¤Ð¤µ¤Ê¤¤\n" +" --start-address=ADDR ADDR °Ê¾å¤Î¥¢¥É¥ì¥¹¤À¤±¤ò½èÍý¤¹¤ë\n" +" --stop-address=ADDR ADDR °Ê²¼¤Î¥¢¥É¥ì¥¹¤À¤±¤ò½èÍý¤¹¤ë\n" +" --prefix-addresses µÕ¥¢¥»¥ó¥Ö¥ë·ë²Ì¤Î¦¤Ë´°Á´¥¢¥É¥ì¥¹¤òɽ¼¨¤¹¤ë\n" +" --[no-]show-raw-insn µÕ¥¢¥»¥ó¥Ö¥ëÌ¿Îá̾¤Î¦¤Ë 16 ¿Ê¿ô¥³¡¼¥É¤âɽ¼¨\n" +" --adjust-vma=OFFSET Á´¤Æ¤Î¥»¥¯¥·¥ç¥ó¥¢¥É¥ì¥¹¤Ë OFFSET ¤ò²Ã»»¤¹¤ë\n" +"\n" + +#: objdump.c:419 +msgid "Sections:\n" +msgstr "¥»¥¯¥·¥ç¥ó:\n" + +#: objdump.c:422 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "º÷°ú̾ ¥µ¥¤¥º VMA LMA File off Algn" + +#: objdump.c:424 +msgid "Idx Name Size VMA LMA File off Algn" +msgstr "º÷°ú̾ ¥µ¥¤¥º VMA LMA File off Algn" + +#: objdump.c:428 +msgid " Flags" +msgstr " ¥Õ¥é¥°" + +#: objdump.c:478 +#, c-format +msgid "%s: not a dynamic object" +msgstr "%s: ưŪ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: objdump.c:494 +#, c-format +msgid "%s: No dynamic symbols" +msgstr "%s: ưŪ¥·¥ó¥Ü¥ë¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: objdump.c:1197 +msgid "Out of virtual memory" +msgstr "²¾ÁÛ¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó" + +#: objdump.c:1616 +#, c-format +msgid "Can't use supplied machine %s" +msgstr "Í¿¤¨¤é¤ì¤¿¥Þ¥·¥ó %s ¤ò»È¤¨¤Þ¤»¤ó" + +#: objdump.c:1634 +#, c-format +msgid "Can't disassemble for architecture %s\n" +msgstr "%s ¥¢¡¼¥­¥Æ¥¯¥Á¥ãÍѤˤϵե¢¥»¥ó¥Ö¥ë¤Ç¤­¤Þ¤»¤ó\n" + +#: objdump.c:1716 +#, c-format +msgid "Disassembly of section %s:\n" +msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎµÕ¥¢¥»¥ó¥Ö¥ë:\n" + +#: objdump.c:1890 +#, c-format +msgid "No %s section present\n\n" +msgstr "%s ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó\n\n" + +#: objdump.c:1897 +#, c-format +msgid "%s has no %s section" +msgstr "%s ¤Ë¤Ï %s ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó" + +#: objdump.c:1911 +#, c-format +msgid "Reading %s section of %s failed: %s" +msgstr "%s ¥»¥¯¥·¥ç¥ó (%s) Æɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: objdump.c:1923 +#, c-format +msgid "Reading %s section of %s failed: %s\n" +msgstr "%s ¥»¥¯¥·¥ç¥ó (%s) Æɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s\n" + +#: objdump.c:1966 +#, c-format +msgid "Contents of %s section:\n\n" +msgstr "%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍÆ:\n\n" + +#: objdump.c:2066 +#, c-format +msgid "architecture: %s, " +msgstr "¥¢¡¼¥­¥Æ¥¯¥Á¥ã: %s, " + +#: objdump.c:2069 +#, c-format +msgid "flags 0x%08x:\n" +msgstr "¥Õ¥é¥° 0x%08x:\n" + +#: objdump.c:2082 +msgid "\nstart address 0x" +msgstr "\n³«»Ï¥¢¥É¥ì¥¹ 0x" + +#: objdump.c:2114 +#, c-format +msgid "\n%s: file format %s\n" +msgstr "\n%s: ¥Õ¥¡¥¤¥ë·Á¼° %s\n" + +#: objdump.c:2156 +#, c-format +msgid "%s: printing debugging information failed" +msgstr "%s: ¥Ç¥Ð¥Ã¥°¾ðÊó¤Î½ÐÎϤ˼ºÇÔ¤·¤Þ¤·¤¿" + +#: objdump.c:2233 +#, c-format +msgid "In archive %s:\n" +msgstr "½ñ¸Ë %s Æâ:\n" + +#: objdump.c:2285 +#, c-format +msgid "Contents of section %s:\n" +msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n" + +#: objdump.c:2798 +#, c-format +msgid "BFD header file version %s\n" +msgstr "BFD ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¥Ð¡¼¥¸¥ç¥ó %s\n" + +#: objdump.c:2882 +msgid "unrecognized -E option" +msgstr "-E ¤Î¥ª¥×¥·¥ç¥ó¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: objdump.c:2893 +#, c-format +msgid "unrecognized --endian type `%s'" +msgstr "--endian ¥¿¥¤¥× `%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: rdcoff.c:205 +#, c-format +msgid "parse_coff_type: Bad type code 0x%x" +msgstr "parse_coff_type: ÉÔÀµ¤Ê¥¿¥¤¥×¥³¡¼¥É 0x%x" + +#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:730 +#, c-format +msgid "bfd_coff_get_syment failed: %s" +msgstr "bfd_coff_get_syment ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: rdcoff.c:439 rdcoff.c:750 +#, c-format +msgid "bfd_coff_get_auxent failed: %s" +msgstr "bfd_coff_get_auxent ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: rdcoff.c:817 +#, c-format +msgid "%ld: .bf without preceding function" +msgstr "%ld: Á°Êý¤Ë´Ø¿ô¤¬¤Ê¤¤ .bf ¤¬¤¢¤ê¤Þ¤¹" + +#: rdcoff.c:867 +#, c-format +msgid "%ld: unexpected .ef\n" +msgstr "%ld: ͽ´ü¤·¤Ê¤¤ .ef ¤Ç¤¹\n" + +#: rddbg.c:87 +#, c-format +msgid "%s: no recognized debugging information" +msgstr "%s: ǧ¼±¤µ¤ì¤¿¥Ç¥Ð¥Ã¥°¾ðÊó¤Ï¤¢¤ê¤Þ¤»¤ó" + +#: rddbg.c:410 +msgid "Last stabs entries before error:\n" +msgstr "¥¨¥é¡¼¤ÎľÁ°¤Î¥¹¥¿¥Ö¥¨¥ó¥È¥ê:\n" + +#: readelf.c:260 +#, c-format +msgid "Unable to seek to start of %s at %x\n" +msgstr "%s ¤Î»ÏÅÀ¤Ø seek ¤Ç¤­¤Þ¤»¤ó(%x)\n" + +#: readelf.c:268 +#, c-format +msgid "Out of memory allocating %d bytes for %s\n" +msgstr "%d ¥Ð¥¤¥È¤Î¥á¥â¥ê³ÎÊݤ¬¤Ç¤­¤Þ¤»¤ó (%s)\n" + +#: readelf.c:274 +#, c-format +msgid "Unable to read in %d bytes of %s\n" +msgstr "%d ¥Ð¥¤¥È¤ÎÆɹþ¤ß¤Ë¼ºÇÔ (%s)\n" + +#: readelf.c:284 +#, c-format +msgid "Unable to seek to %x for %s\n" +msgstr "%x ¤Ø seek ¤Ç¤­¤Þ¤»¤ó (%s)\n" + +#: readelf.c:289 +#, c-format +msgid "Unable to read data at %x for %s\n" +msgstr "%x ¤Ç¤Î¥Ç¡¼¥¿¤è¸«¹þ¤ß¤¬¤Ç¤­¤Þ¤»¤ó (%s)\n" + +#: readelf.c:304 readelf.c:330 +#, c-format +msgid "%s: Error: " +msgstr "%s: ¥¨¥é¡¼: " + +#: readelf.c:316 readelf.c:345 +#, c-format +msgid "%s: Warning: " +msgstr "%s: ·Ù¹ð: " + +#: readelf.c:395 readelf.c:533 +#, c-format +msgid "Unhandled data length: %d\n" +msgstr "¼è¤ê°·¤ï¤ì¤Ê¤«¤Ã¤¿¥Ç¡¼¥¿Ä¹: %d\n" + +#: readelf.c:597 +msgid "Don't know about relocations on this machine architecture\n" +msgstr "¤³¤Î¥Þ¥·¥ó¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤Ç¤ÎºÆÇÛÃ֤ˤĤ¤¤Æ²ò¤Ã¤Æ¤¤¤Þ¤»¤ó\n" + +#: readelf.c:637 readelf.c:666 readelf.c:698 readelf.c:726 +msgid "out of memory parsing relocs" +msgstr "ºÆÇÛÃ֥ǡ¼¥¿²òÀÏÃæ¤Ë¥á¥â¥êÉÔ­¤Ë´Ù¤ê¤Þ¤·¤¿" + +#: readelf.c:744 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Offset ¾ðÊó ¥¿¥¤¥× ¥·¥ó¥Ü¥ë¤ÎÃÍ ¥·¥ó¥Ü¥ë̾ Addend\n" + +#: readelf.c:747 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Offset ¾ðÊó ¥¿¥¤¥× ¥·¥ó¥Ü¥ë¤ÎÃÍ ¥·¥ó¥Ü¥ë̾\n" + +#: readelf.c:907 readelf.c:909 +#, c-format +msgid "unrecognised: %-7lx" +msgstr "ǧ¼±¤Ç¤­¤Þ¤»¤ó: %-7lx" + +#: readelf.c:934 +#, c-format +msgid "" +msgstr "<ʸ»úÎó¥Æ¡¼¥Ö¥ë¤Îº÷°ú %3ld>" + +#: readelf.c:1147 +#, c-format +msgid "Processor Specific: %lx" +msgstr "¥×¥í¥»¥Ã¥µ¸ÇÍ­: %lx" + +#: readelf.c:1166 +#, c-format +msgid "Operating System specific: %lx" +msgstr "¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¸ÇÍ­: %lx" + +#: readelf.c:1169 readelf.c:1677 +#, c-format +msgid ": %lx" +msgstr "<ÉÔÌÀ>: %lx" + +#: readelf.c:1183 +msgid "NONE (None)" +msgstr "NONE (̵¤·)" + +#: readelf.c:1184 +msgid "REL (Relocatable file)" +msgstr "REL (ºÆÇÛÃÖ²Äǽ¥Õ¥¡¥¤¥ë)" + +#: readelf.c:1185 +msgid "EXEC (Executable file)" +msgstr "EXEC (¼Â¹Ô²Äǽ¥Õ¥¡¥¤¥ë)" + +#: readelf.c:1186 +msgid "DYN (Shared object file)" +msgstr "DYN (¶¦Í­¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë)" + +#: readelf.c:1187 +msgid "CORE (Core file)" +msgstr "CORE (¥³¥¢¥Õ¥¡¥¤¥ë)" + +#: readelf.c:1191 +#, c-format +msgid "Processor Specific: (%x)" +msgstr "¥×¥í¥»¥Ã¥µ¸ÇÍ­: (%x)" + +#: readelf.c:1193 +#, c-format +msgid "OS Specific: (%x)" +msgstr "OS ¸ÇÍ­: (%x)" + +#: readelf.c:1195 readelf.c:1281 readelf.c:1811 +#, c-format +msgid ": %x" +msgstr "<ÉÔÌÀ>: %x" + +#: readelf.c:1208 +msgid "None" +msgstr "¤Ê¤·" + +#: readelf.c:1849 +msgid "Usage: readelf {options} elf-file(s)\n" +msgstr "»È¤¤Êý: readelf {¥ª¥×¥·¥ç¥ó} elf¥Õ¥¡¥¤¥ë\n" + +#: readelf.c:1850 +msgid " Options are:\n" +msgstr " ¥ª¥×¥·¥ç¥ó:\n" + +#: readelf.c:1851 +msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" +msgstr " -a Ëô¤Ï --all -h -l -S -s -r -d -V -A -I ¤ÈƱ¤¸\n" + +#: readelf.c:1852 +msgid " -h or --file-header Display the ELF file header\n" +msgstr " -h Ëô¤Ï --file-header ELF ¥Õ¥¡¥¤¥ë¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1853 +msgid " -l or --program-headers or --segments\n" +msgstr " -l Ëô¤Ï --program-headers Ëô¤Ï --segments\n" + +#: readelf.c:1854 +msgid " Display the program headers\n" +msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1855 +msgid " -S or --section-headers or --sections\n" +msgstr " -S Ëô¤Ï --section-headers Ëô¤Ï --sections\n" + +#: readelf.c:1856 +msgid " Display the sections' header\n" +msgstr " ¥»¥¯¥·¥ç¥ó¤Î¥Ø¥Ã¥À¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1857 +msgid " -e or --headers Equivalent to: -h -l -S\n" +msgstr " -e Ëô¤Ï --headers -h -l -S ¤ÈƱ¤¸\n" + +#: readelf.c:1858 +msgid " -s or --syms or --symbols Display the symbol table\n" +msgstr " -s Ëô¤Ï --syms Ëô¤Ï --symbols ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1859 +msgid " -n or --notes Display the core notes (if present)\n" +msgstr " -n Ëô¤Ï --notes ¥³¥¢ note ¥»¥°¥á¥ó¥È¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" + +#: readelf.c:1860 +msgid " -r or --relocs Display the relocations (if present)\n" +msgstr " -r Ëô¤Ï --relocs ºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" + +#: readelf.c:1861 +msgid " -d or --dynamic Display the dynamic segment (if present)\n" +msgstr " -d Ëô¤Ï --dynamic ưŪ¥»¥°¥á¥ó¥È¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" + +#: readelf.c:1862 +msgid " -V or --version-info Display the version sections (if present)\n" +msgstr " -V Ëô¤Ï --version-info ¥Ð¡¼¥¸¥ç¥ó¥»¥¯¥·¥ç¥ó¤¬¤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" + +#: readelf.c:1863 +msgid " -A or --arch-specific Display architecture specific information (if any).\n" +msgstr " -A Ëô¤Ï --arch-specific ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¸ÇÍ­¾ðÊ󤬤¢¤ì¤Ðɽ¼¨¤¹¤ë\n" + +#: readelf.c:1864 +msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" +msgstr " -D Ëô¤Ï --use-dynamic ¥·¥ó¥Ü¥ëɽ¼¨¤ËưŪ¥»¥¯¥·¥ç¥ó¾ðÊó¤ò»ÈÍѤ¹¤ë\n" + +#: readelf.c:1865 +msgid " -x or --hex-dump=\n" +msgstr " -x <ÈÖ¹æ> Ëô¤Ï --hex-dump=<ÈÖ¹æ>\n" + +#: readelf.c:1866 +msgid " Dump the contents of section \n" +msgstr " ¥»¥¯¥·¥ç¥ó <ÈÖ¹æ> ¤ÎÆâÍƤò¥À¥ó¥×¤¹¤ë\n" + +#: readelf.c:1867 +msgid " -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" +msgstr " -w[liaprf] Ëô¤Ï --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" + +#: readelf.c:1868 +msgid " Display the contents of DWARF2 debug sections\n" +msgstr " DWARF2 ¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó¤ÎÆâÍƤòɽ¼¨¤¹¤ë\n" + +#: readelf.c:1870 +msgid " -i or --instruction-dump=\n" +msgstr " -i <ÈÖ¹æ> or --instruction-dump=<ÈÖ¹æ>\n" + +#: readelf.c:1871 +msgid " Disassemble the contents of section \n" +msgstr " ¥»¥¯¥·¥ç¥ó <ÈÖ¹æ> ¤ÎÆâÍƤòµÕ¥¢¥»¥ó¥Ö¥ë¤¹¤ë\n" + +#: readelf.c:1873 +msgid " -I or --histogram Display histogram of bucket list lengths\n" +msgstr " -I Ëô¤Ï --histogram ¥Ð¥±¥Ã¥È¥ê¥¹¥ÈŤÎÅÙ¿ôʬÉÛ¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1874 +msgid " -v or --version Display the version number of readelf\n" +msgstr " -v Ëô¤Ï --version readelf ¤Î¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1875 +msgid " -H or --help Display this information\n" +msgstr " -H Ëô¤Ï --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" + +#: readelf.c:1893 +msgid "Out of memory allocating dump request table." +msgstr "Í׵ᤵ¤ì¤¿¥Æ¡¼¥Ö¥ë¤Î¥À¥ó¥×Ãæ¤Ë¥á¥â¥ê³ÎÊݤ¬¼ºÇÔ¤·¤Þ¤·¤¿¡£" + +#: readelf.c:2033 +#, c-format +msgid "Unrecognised debug option '%s'\n" +msgstr "¥Ç¥Ð¥Ã¥°¥ª¥×¥·¥ç¥ó '%s' ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n" + +#: readelf.c:2058 +#, c-format +msgid "Invalid option '-%c'\n" +msgstr "¥ª¥×¥·¥ç¥ó '-%c' ¤¬ÉÔŬÀڤǤ¹\n" + +#: readelf.c:2071 +msgid "Nothing to do.\n" +msgstr "¹Ô¤Ê¤¦¤Ù¤­»ö¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:2084 readelf.c:2101 readelf.c:3740 +msgid "none" +msgstr "¤Ê¤·" + +#: readelf.c:2085 +msgid "ELF32" +msgstr "ELF32" + +#: readelf.c:2086 +msgid "ELF64" +msgstr "ELF64" + +#: readelf.c:2088 readelf.c:2105 readelf.c:2133 +#, c-format +msgid "" +msgstr "<ÉÔÌÀ: %x>" + +#: readelf.c:2102 +msgid "2's complement, little endian" +msgstr "2 ¤ÎÊä¿ô¡¢¥ê¥È¥ë¥¨¥ó¥Ç¥£¥¢¥ó" + +#: readelf.c:2103 +msgid "2's complement, big endian" +msgstr "2 ¤ÎÊä¿ô¡¢¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó" + +#: readelf.c:2118 +msgid "UNIX - System V" +msgstr "UNIX - System V" + +#: readelf.c:2119 +msgid "UNIX - HP-UX" +msgstr "UNIX - HP-UX" + +#: readelf.c:2120 +msgid "UNIX - NetBSD" +msgstr "UNIX - NetBSD" + +#: readelf.c:2121 +msgid "UNIX - Linux" +msgstr "UNIX - Linux" + +#: readelf.c:2122 +msgid "GNU/Hurd" +msgstr "GNU/Hurd" + +#: readelf.c:2123 +msgid "UNIX - Solaris" +msgstr "UNIX - Solaris" + +#: readelf.c:2124 +msgid "UNIX - AIX" +msgstr "UNIX - AIX" + +#: readelf.c:2125 +msgid "UNIX - IRIX" +msgstr "UNIX - IRIX" + +#: readelf.c:2126 +msgid "UNIX - FreeBSD" +msgstr "UNIX - FreeBSD" + +#: readelf.c:2127 +msgid "UNIX - TRU64" +msgstr "UNIX - TRU64" + +#: readelf.c:2128 +msgid "Novell - Modesto" +msgstr "Novell - Modesto" + +#: readelf.c:2129 +msgid "UNIX - OpenBSD" +msgstr "UNIX - OpenBSD" + +#: readelf.c:2130 +msgid "Standalone App" +msgstr "Standalone App" + +#: readelf.c:2131 +msgid "ARM" +msgstr "ARM" + +#: readelf.c:2148 +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "ELF ¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó - »ÏÅÀ¤Ë¤¢¤ë¥Þ¥¸¥Ã¥¯Èֹ椬°Û¤Ê¤ê¤Þ¤¹\n" + +#: readelf.c:2156 +msgid "ELF Header:\n" +msgstr "ELF ¥Ø¥Ã¥À:\n" + +#: readelf.c:2157 +msgid " Magic: " +msgstr " ¥Þ¥¸¥Ã¥¯: " + +#: readelf.c:2161 +#, c-format +msgid " Class: %s\n" +msgstr " ¥¯¥é¥¹: %s\n" + +#: readelf.c:2163 +#, c-format +msgid " Data: %s\n" +msgstr " ¥Ç¡¼¥¿: %s\n" + +#: readelf.c:2165 +#, c-format +msgid " Version: %d %s\n" +msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d %s\n" + +#: readelf.c:2172 +#, c-format +msgid " OS/ABI: %s\n" +msgstr " OS/ABI: %s\n" + +#: readelf.c:2174 +#, c-format +msgid " ABI Version: %d\n" +msgstr " ABI ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:2176 +#, c-format +msgid " Type: %s\n" +msgstr " ¥¿¥¤¥×: %s\n" + +#: readelf.c:2178 +#, c-format +msgid " Machine: %s\n" +msgstr " ¥Þ¥·¥ó: %s\n" + +#: readelf.c:2180 +#, c-format +msgid " Version: 0x%lx\n" +msgstr " ¥Ð¡¼¥¸¥ç¥ó: 0x%lx\n" + +#: readelf.c:2183 +msgid " Entry point address: " +msgstr " ¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È¥¢¥É¥ì¥¹: " + +#: readelf.c:2185 +msgid "\n Start of program headers: " +msgstr "\n ¥×¥í¥°¥é¥à¤Î³«»Ï¥Ø¥Ã¥À: " + +#: readelf.c:2187 +msgid "" +" (bytes into file)\n" +" Start of section headers: " +msgstr "" +" (¥Ð¥¤¥È)\n" +" ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À»ÏÅÀ: " + +#: readelf.c:2189 +msgid " (bytes into file)\n" +msgstr " (¥Ð¥¤¥È)\n" + +#: readelf.c:2191 +#, c-format +msgid " Flags: 0x%lx%s\n" +msgstr " ¥Õ¥é¥°: 0x%lx%s\n" + +#: readelf.c:2194 +#, c-format +msgid " Size of this header: %ld (bytes)\n" +msgstr " ¤³¤Î¥Ø¥Ã¥À¤Î¥µ¥¤¥º: %ld (¥Ð¥¤¥È)\n" + +#: readelf.c:2196 +#, c-format +msgid " Size of program headers: %ld (bytes)\n" +msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¥µ¥¤¥º: %ld (¥Ð¥¤¥È)\n" + +#: readelf.c:2198 +#, c-format +msgid " Number of program headers: %ld\n" +msgstr " ¥×¥í¥°¥é¥à¥Ø¥Ã¥À¿ô: %ld\n" + +#: readelf.c:2200 +#, c-format +msgid " Size of section headers: %ld (bytes)\n" +msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À: %ld (¥Ð¥¤¥È)\n" + +#: readelf.c:2202 +#, c-format +msgid " Number of section headers: %ld\n" +msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À¥µ¥¤¥º: %ld\n" + +#: readelf.c:2204 +#, c-format +msgid " Section header string table index: %ld\n" +msgstr " ¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥Àʸ»úÎó¥Æ¡¼¥Ö¥ëº÷°ú:%ld\n" + +#: readelf.c:2289 +msgid "\nThere are no program headers in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥×¥í¥°¥é¥à¥Ø¥Ã¥À¤Ï¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:2295 +#, c-format +msgid "\nElf file type is %s\n" +msgstr "\nElf ¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ï %s ¤Ç¤¹\n" + +#: readelf.c:2296 +msgid "Entry point " +msgstr "¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È " + +#: readelf.c:2298 +#, c-format +msgid "\nThere are %d program headers, starting at offset " +msgstr "\n%d ¸Ä¤Î¥×¥í¥°¥é¥à¥Ø¥Ã¥À¡¢»ÏÅÀ¥ª¥Õ¥»¥Ã¥È " + +#: readelf.c:2309 readelf.c:2485 readelf.c:2527 readelf.c:2570 readelf.c:2611 +#: readelf.c:3133 readelf.c:3174 readelf.c:3350 readelf.c:4358 readelf.c:4372 +#: readelf.c:7741 readelf.c:7781 +msgid "Out of memory\n" +msgstr "¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó\n" + +#: readelf.c:2327 +#, c-format +msgid "\nProgram Header%s:\n" +msgstr "\n¥×¥í¥°¥é¥à¥Ø¥Ã¥À%.0s:\n" + +#: readelf.c:2331 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " ¥¿¥¤¥× ¥ª¥Õ¥»¥Ã¥È ²¾ÁÛAddr ʪÍýAddr FileSiz MemSiz Flg Align\n" + +#: readelf.c:2335 +msgid " Type Offset VirtAddr PhysAddr\n" +msgstr " ¥¿¥¤¥× ¥ª¥Õ¥»¥Ã¥È ²¾ÁÛAddr ʪÍýAddr\n" + +#: readelf.c:2337 +msgid " FileSiz MemSiz Flags Align\n" +msgstr " ¥Õ¥¡¥¤¥ë¥µ¥¤¥º ¥á¥â¥ê¥µ¥¤¥º ¥Õ¥é¥° ¥¢¥é¥¤¥ó\n" + +#: readelf.c:2395 +msgid "more than one dynamic segment\n" +msgstr "Ê£¿ô¤ÎưŪ¥»¥°¥á¥ó¥È\n" + +#: readelf.c:2403 +msgid "Unable to find program interpreter name\n" +msgstr "¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿Ì¾¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó\n" + +#: readelf.c:2410 +#, c-format +msgid "\n [Requesting program interpreter: %s]" +msgstr "\n [Í׵ᤵ¤ì¤ë¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿: %s]" + +#: readelf.c:2428 +msgid "\n Section to Segment mapping:\n" +msgstr "\n ¥»¥°¥á¥ó¥È¥Þ¥Ã¥Ô¥ó¥°¤Ø¤Î¥»¥¯¥·¥ç¥ó:\n" + +#: readelf.c:2429 +msgid " Segment Sections...\n" +msgstr " ¥»¥°¥á¥ó¥È¥»¥¯¥·¥ç¥ó...\n" + +#: readelf.c:2693 +msgid "\nThere are no sections in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤Ï¥»¥¯¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:2699 +#, c-format +msgid "There are %d section headers, starting at offset 0x%lx:\n" +msgstr "%d ¸Ä¤Î¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À¡¢»ÏÅÀ¥ª¥Õ¥»¥Ã¥È 0x%lx:\n" + +#: readelf.c:2739 +msgid "File contains multiple dynamic symbol tables\n" +msgstr "¥Õ¥¡¥¤¥ë¤¬Ê£¿ô¤ÎưŪ¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n" + +#: readelf.c:2752 +msgid "File contains multiple dynamic string tables\n" +msgstr "¥Õ¥¡¥¤¥ë¤¬Ê£¿ô¤ÎưŪʸ»úÎó¥Æ¡¼¥Ö¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹\n" + +#: readelf.c:2786 +#, c-format +msgid "\nSection Header%s:\n" +msgstr "\n¥»¥¯¥·¥ç¥ó¥Ø¥Ã¥À%.0s:\n" + +#: readelf.c:2790 +msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" +msgstr " [ÈÖ] ̾Á° ¥¿¥¤¥× ¥¢¥É¥ì¥¹ Off ¥µ¥¤¥º ES Flg Lk Inf Al\n" + +#: readelf.c:2793 +msgid " [Nr] Name Type Address Offset\n" +msgstr " [ÈÖ] ̾Á° ¥¿¥¤¥× ¥¢¥É¥ì¥¹ Offset\n" + +#: readelf.c:2794 +msgid " Size EntSize Flags Link Info Align\n" +msgstr " ¥µ¥¤¥º EntSize ¥Õ¥é¥° Link Info Align\n" + +#: readelf.c:2841 +msgid "Key to Flags:\n" +msgstr "¥Õ¥é¥°¤Î¥­¡¼:\n" + +#: readelf.c:2842 +msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" +msgstr " W (write), A (alloc), X (execute), M (merge), S (strings)\n" + +#: readelf.c:2843 +msgid " I (info), L (link order), G (group), x (unknown)\n" +msgstr " I (info), L (link order), G (group), x (ÉÔÌÀ)\n" + +#: readelf.c:2844 +msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" +msgstr " O (OS ¤ÎÆüì½èÍý¤ËɬÍ×) o (OS ¸ÇÍ­), p (processor ¸ÇÍ­)\n" + +#: readelf.c:2902 +#, c-format +msgid "\nRelocation section at offset 0x%lx contains %ld bytes:\n" +msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%lx ¤ÎºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó¤Ï %ld ¥Ð¥¤¥È¤Ç¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:2909 +msgid "\nThere are no dynamic relocations in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏưŪºÆÇÛÃÖ¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:2937 +msgid "\nRelocation section " +msgstr "\nºÆÇÛÃÖ¥»¥¯¥·¥ç¥ó " + +#: readelf.c:2944 +#, c-format +msgid " at offset 0x%lx contains %lu entries:\n" +msgstr " (¥ª¥Õ¥»¥Ã¥È 0x%lx) ¤Ï %lu ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:2972 +msgid "\nThere are no relocations in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏºÆÇÛÃÖ¤µ¤ì¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:3227 +msgid "\nThere is no dynamic segment in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤Ë¤ÏưŪ¥»¥°¥á¥ó¥È¤¬¤¢¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:3261 +msgid "Unable to seek to end of file!" +msgstr "¥Õ¥¡¥¤¥ëËöÈø¤Ë seek ¤Ç¤­¤Þ¤»¤ó!" + +#: readelf.c:3270 +msgid "Unable to determine the number of symbols to load\n" +msgstr "¥í¡¼¥É¤¹¤Ù¤­¥·¥ó¥Ü¥ë¤Î¿ô¤ò·èÄê¤Ç¤­¤Þ¤»¤ó\n" + +#: readelf.c:3300 +msgid "Unable to seek to end of file\n" +msgstr "¥Õ¥¡¥¤¥ëËöÈø¤Ë seek ¤Ç¤­¤Þ¤»¤ó\n" + +#: readelf.c:3306 +msgid "Unable to determine the length of the dynamic string table\n" +msgstr "ưŪʸ»úÎó¥Æ¡¼¥Ö¥ë¤ÎŤµ¤ò·èÄê¤Ç¤­¤Þ¤»¤ó\n" + +#: readelf.c:3367 +#, c-format +msgid "\nDynamic segment at offset 0x%x contains %ld entries:\n" +msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%x ¤ÎưŪ¥»¥°¥á¥ó¥È¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:3370 +msgid " Tag Type Name/Value\n" +msgstr " ¥¿¥° ¥¿¥¤¥× ̾Á°/ÃÍ\n" + +#: readelf.c:3406 +msgid "Auxiliary library" +msgstr "Êä½õ¥é¥¤¥Ö¥é¥ê" + +#: readelf.c:3410 +msgid "Filter library" +msgstr "¥Õ¥£¥ë¥¿¥é¥¤¥Ö¥é¥ê" + +#: readelf.c:3414 +msgid "Configuration file" +msgstr "ÀßÄê¥Õ¥¡¥¤¥ë" + +#: readelf.c:3418 +msgid "Dependency audit library" +msgstr "°Í¸´Ø·¸´Æºº¥é¥¤¥Ö¥é¥ê" + +#: readelf.c:3422 +msgid "Audit library" +msgstr "´Æºº¥é¥¤¥Ö¥é¥ê" + +#: readelf.c:3440 readelf.c:3466 readelf.c:3492 +msgid "Flags:" +msgstr "¥Õ¥é¥°:" + +#: readelf.c:3442 readelf.c:3468 readelf.c:3494 +msgid " None\n" +msgstr " ̵¤·\n" + +#: readelf.c:3613 +#, c-format +msgid "Shared library: [%s]" +msgstr "¶¦Í­¥é¥¤¥Ö¥é¥ê: [%s]" + +#: readelf.c:3616 +msgid " program interpreter" +msgstr " ¥×¥í¥°¥é¥à¥¤¥ó¥¿¥×¥ê¥¿" + +#: readelf.c:3620 +#, c-format +msgid "Library soname: [%s]" +msgstr "¥é¥¤¥Ö¥é¥ê¤Î soname: [%s]" + +#: readelf.c:3624 +#, c-format +msgid "Library rpath: [%s]" +msgstr "¥é¥¤¥Ö¥é¥ê¤Î rpath: [%s]" + +#: readelf.c:3628 +#, c-format +msgid "Library runpath: [%s]" +msgstr "¥é¥¤¥Ö¥é¥ê¤Î runpath: [%s]" + +#: readelf.c:3689 +#, c-format +msgid "Not needed object: [%s]\n" +msgstr "ÉÔÍפʥª¥Ö¥¸¥§¥¯¥È: [%s]\n" + +#: readelf.c:3786 +#, c-format +msgid "\nVersion definition section '%s' contains %ld entries:\n" +msgstr "\n¥Ð¡¼¥¸¥ç¥óÄêµÁ¥»¥¯¥·¥ç¥ó '%s' ¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:3789 +msgid " Addr: 0x" +msgstr " ¥¢¥É¥ì¥¹: 0x" + +#: readelf.c:3791 readelf.c:3979 +#, c-format +msgid " Offset: %#08lx Link: %lx (%s)\n" +msgstr " ¥ª¥Õ¥»¥Ã¥È: %#08lx ¥ê¥ó¥¯: %lx (%s)\n" + +#: readelf.c:3821 +#, c-format +msgid " %#06x: Rev: %d Flags: %s" +msgstr " %#06x: Rev: %d ¥Õ¥é¥°: %s" + +#: readelf.c:3824 +#, c-format +msgid " Index: %d Cnt: %d " +msgstr " º÷°ú: %d Cnt: %d " + +#: readelf.c:3835 +#, c-format +msgid "Name: %s\n" +msgstr "̾Á°: %s\n" + +#: readelf.c:3837 +#, c-format +msgid "Name index: %ld\n" +msgstr "̾Á°º÷°ú: %ld\n" + +#: readelf.c:3852 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr " %#06x: ¿Æ %d: %s\n" + +#: readelf.c:3855 +#, c-format +msgid " %#06x: Parent %d, name index: %ld\n" +msgstr " %#06x: ¿Æ %d, ̾Á°º÷°ú: %ld\n" + +#: readelf.c:3874 +#, c-format +msgid "\nVersion needs section '%s' contains %ld entries:\n" +msgstr "\nɬÍץС¼¥¸¥ç¥ó¥»¥¯¥·¥ç¥ó '%s' ¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:3877 +msgid " Addr: 0x" +msgstr " ¥¢¥É¥ì¥¹: 0x" + +#: readelf.c:3879 +#, c-format +msgid " Offset: %#08lx Link to section: %ld (%s)\n" +msgstr " Offset: %#08lx ¥»¥¯¥·¥ç¥ó¤Ø¤Î¥ê¥ó¥¯: %ld (%s)\n" + +#: readelf.c:3905 +#, c-format +msgid " %#06x: Version: %d" +msgstr " %#06x: ¥Ð¡¼¥¸¥ç¥ó: %d" + +#: readelf.c:3908 +#, c-format +msgid " File: %s" +msgstr " ¥Õ¥¡¥¤¥ë: %s" + +#: readelf.c:3910 +#, c-format +msgid " File: %lx" +msgstr " ¥Õ¥¡¥¤¥ë: %lx" + +#: readelf.c:3912 +#, c-format +msgid " Cnt: %d\n" +msgstr " ¸Ä¿ô: %d\n" + +#: readelf.c:3930 +#, c-format +msgid " %#06x: Name: %s" +msgstr " %#06x: ̾Á°: %s" + +#: readelf.c:3933 +#, c-format +msgid " %#06x: Name index: %lx" +msgstr " %#06x: ̾Á°º÷°ú: %lx" + +#: readelf.c:3936 +#, c-format +msgid " Flags: %s Version: %d\n" +msgstr " ¥Õ¥é¥°: %s ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:3974 +#, c-format +msgid "\nVersion symbols section '%s' contains %d entries:\n" +msgstr "\n¥Ð¡¼¥¸¥ç¥ó¥·¥ó¥Ü¥ë¥»¥¯¥·¥ç¥ó '%s' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:3977 +msgid " Addr: " +msgstr " ¥¢¥É¥ì¥¹: " + +#: readelf.c:4007 +msgid " 0 (*local*) " +msgstr " 0 (*¶É ½ê*) " + +#: readelf.c:4011 +msgid " 1 (*global*) " +msgstr " 1 (*Âç °è*) " + +#: readelf.c:4233 +msgid "\nNo version information found in this file.\n" +msgstr "\n¤³¤Î¥Õ¥¡¥¤¥ë¤«¤é¤Ï¥Ð¡¼¥¸¥ç¥ó¾ðÊ󤬸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:4251 readelf.c:4286 +#, c-format +msgid ": %d" +msgstr "<¥×¥í¥»¥Ã¥µ¸ÇÍ­>: %d" + +#: readelf.c:4253 readelf.c:4298 +#, c-format +msgid ": %d" +msgstr ": %d" + +#: readelf.c:4255 readelf.c:4301 +#, c-format +msgid ": %d" +msgstr "<ÉÔÌÀ>: %d" + +#: readelf.c:4364 +msgid "Unable to read in dynamic data\n" +msgstr "ưŪ¥Ç¡¼¥¿¤òÆɹþ¤á¤Þ¤»¤ó\n" + +#: readelf.c:4406 +msgid "Unable to seek to start of dynamic information" +msgstr "ưŪ¾ðÊó¤Î³«»Ï°ÌÃÖ¤Ë seek ¤Ç¤­¤Þ¤»¤ó" + +#: readelf.c:4412 +msgid "Failed to read in number of buckets\n" +msgstr "¥Ð¥±¥Ã¥È¿ô¤ÎÆɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿\n" + +#: readelf.c:4418 +msgid "Failed to read in number of chains\n" +msgstr "¥Á¥§¥¤¥ó¿ô¤ÎÆɹþ¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿\n" + +#: readelf.c:4438 +msgid "\nSymbol table for image:\n" +msgstr "\n¥¤¥á¡¼¥¸¤Î¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë:\n" + +#: readelf.c:4440 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " bucket¿ô: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" + +#: readelf.c:4442 +msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" +msgstr " bucket¿ô: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" + +#: readelf.c:4486 +#, c-format +msgid "\nSymbol table '%s' contains %lu entries:\n" +msgstr "\n¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë '%s' ¤Ï %lu ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:4490 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " ÈÖ¹æ: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" + +#: readelf.c:4492 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " ÈÖ¹æ: ÃÍ ¥µ¥¤¥º ¥¿¥¤¥× Bind Vis º÷°ú̾\n" + +#: readelf.c:4601 +msgid "bad dynamic symbol" +msgstr "ÉÔÀµ¤ÊưŪ¥·¥ó¥Ü¥ë¤Ç¤¹" + +#: readelf.c:4660 +msgid "\nDynamic symbol information is not available for displaying symbols.\n" +msgstr "\nưŪ¥·¥ó¥Ü¥ë¾ðÊó¤Ïɽ¼¨ÍÑ¥·¥ó¥Ü¥ë¤È¤·¤Æ¤ÏÍøÍѤǤ­¤Þ¤»¤ó¡£\n" + +#: readelf.c:4672 +#, c-format +msgid "\nHistogram for bucket list length (total of %d buckets):\n" +msgstr "\n¥Ð¥±¥Ã¥È¥ê¥¹¥È¤ÎÅÙ¿ôʬÉÛ (Á´ %d ¸Ä¤Î¥Ð¥±¥Ã¥È):\n" + +#: readelf.c:4674 +msgid " Length Number %% of total Coverage\n" +msgstr " Ťµ ¸Ä¿ô ÀêͭΨ ÈÏ°Ï\n" + +#: readelf.c:4679 readelf.c:4698 readelf.c:7423 readelf.c:7616 +msgid "Out of memory" +msgstr "¥á¥â¥ê¤¬Â­¤ê¤Þ¤»¤ó" + +#: readelf.c:4747 +#, c-format +msgid "\nDynamic info segment at offset 0x%lx contains %d entries:\n" +msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%lx ¤ÎưŪ¾ðÊ󥻥°¥á¥ó¥È¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:4750 +msgid " Num: Name BoundTo Flags\n" +msgstr "ÈÖ¹æ: ̾Á° ¶­³¦¤Þ¤Ç ¥Õ¥é¥°\n" + +#: readelf.c:4798 +#, c-format +msgid "\nAssembly dump of section %s\n" +msgstr "\n¥»¥¯¥·¥ç¥ó %s ¤Î¥¢¥»¥ó¥Ö¥ê¥À¥ó¥×\n" + +#: readelf.c:4821 +#, c-format +msgid "\nSection '%s' has no data to dump.\n" +msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï¥À¥ó¥×¤Ç¤­¤ë¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£\n" + +#: readelf.c:4826 +#, c-format +msgid "\nHex dump of section '%s':\n" +msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Î 16 ¿Ê¿ô¥À¥ó¥×:\n" + +#: readelf.c:4978 +msgid "badly formed extended line op encountered!" +msgstr "ÉÔÀµ¤Ê·Á¼°¤Î³ÈÄ¥ line ¥ª¥Ú¥³¡¼¥É¤ËÁø¶ø¤·¤Þ¤·¤¿!" + +#: readelf.c:4985 +#, c-format +msgid " Extended opcode %d: " +msgstr " ³ÈÄ¥¥ª¥Ú¥³¡¼¥É %d: " + +#: readelf.c:4990 +msgid "End of Sequence\n\n" +msgstr "Îó¤Î½ª¤ê\n\n" + +#: readelf.c:4996 +#, c-format +msgid "set Address to 0x%lx\n" +msgstr "ÀßÄꥢ¥É¥ì¥¹ 0x%lx\n" + +#: readelf.c:5001 +msgid " define new File Table entry\n" +msgstr " ¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¥Æ¡¼¥Ö¥ë¥¨¥ó¥È¥ê¤ÎÄêµÁ\n" + +#: readelf.c:5002 readelf.c:5124 +msgid " Entry\tDir\tTime\tSize\tName\n" +msgstr " Entry\tDir\t»þ¹ï\t¥µ¥¤¥º\t̾Á°\n" + +#: readelf.c:5004 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:5007 readelf.c:5009 readelf.c:5011 readelf.c:5136 readelf.c:5138 +#: readelf.c:5140 +#, c-format +msgid "%lu\t" +msgstr "%lu\t" + +#: readelf.c:5012 +#, c-format +msgid "%s\n\n" +msgstr "%s\n\n" + +#: readelf.c:5016 +#, c-format +msgid "UNKNOWN: length %d\n" +msgstr "UNKNOWN: Ťµ %d\n" + +#: readelf.c:5042 +#, c-format +msgid "\nDump of debug contents of section %s:\n\n" +msgstr "\n¥»¥¯¥·¥ç¥óÆâÍƤΥǥХå°¥À¥ó¥× %s:\n\n" + +#: readelf.c:5054 +msgid "The line info appears to be corrupt - the section is too small\n" +msgstr "line ¾ðÊó¤Ï²õ¤ì¤Æ¤¤¤Þ¤¹ - ¥»¥¯¥·¥ç¥ó¤¬¾®¤µ¤¹¤®¤Þ¤¹\n" + +#: readelf.c:5062 +msgid "Only DWARF version 2 line info is currently supported.\n" +msgstr "¸½ºß¤Î¤È¤³¤í¡¢DWARF ¥Ð¡¼¥¸¥ç¥ó 2 ¤À¤±¤¬ line ¾ðÊó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£\n" + +#: readelf.c:5077 +#, c-format +msgid " Length: %ld\n" +msgstr " Ťµ: %ld\n" + +#: readelf.c:5078 +#, c-format +msgid " DWARF Version: %d\n" +msgstr " DWARF ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:5079 +#, c-format +msgid " Prolgue Length: %d\n" +msgstr " Prolgue ¤ÎŤµ: %d\n" + +#: readelf.c:5080 +#, c-format +msgid " Minimum Instruction Length: %d\n" +msgstr " ºÇ¾®Ì¿ÎáĹ: %d\n" + +#: readelf.c:5081 +#, c-format +msgid " Initial value of 'is_stmt': %d\n" +msgstr " 'is_stmt' ¤Î½é´üÃÍ: %d\n" + +#: readelf.c:5082 +#, c-format +msgid " Line Base: %d\n" +msgstr " Line ¥Ù¡¼¥¹: %d\n" + +#: readelf.c:5083 +#, c-format +msgid " Line Range: %d\n" +msgstr " Line ÈÏ°Ï: %d\n" + +#: readelf.c:5084 +#, c-format +msgid " Opcode Base: %d\n" +msgstr " ¥ª¥Ú¥³¡¼¥É¥Ù¡¼¥¹: %d\n" + +#: readelf.c:5093 +msgid "\n Opcodes:\n" +msgstr "\n ¥ª¥Ú¥³¡¼¥É:\n" + +#: readelf.c:5096 +#, c-format +msgid " Opcode %d has %d args\n" +msgstr " ¥ª¥Ú¥³¡¼¥É %d ¤Ï %d ¸Ä¤Î°ú¿ô¤ò»ý¤Á¤Þ¤¹\n" + +#: readelf.c:5102 +msgid "\n The Directory Table is empty.\n" +msgstr "\n ¥Ç¥£¥ì¥¯¥È¥ê¥Æ¡¼¥Ö¥ë¤Ï¶õ¤Ç¤¹¡£\n" + +#: readelf.c:5105 +msgid "\n The Directory Table:\n" +msgstr "\n ¥Ç¥£¥ì¥¯¥È¥ê¥Æ¡¼¥Ö¥ë:\n" + +#: readelf.c:5109 +#, c-format +msgid " %s\n" +msgstr " %s\n" + +#: readelf.c:5120 +msgid "\n The File Name Table is empty.\n" +msgstr "\n ¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë¤Ï¶õ¤Ç¤¹¡£\n" + +#: readelf.c:5123 +msgid "\n The File Name Table:\n" +msgstr "\n ¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë:\n" + +#: readelf.c:5131 +#, c-format +msgid " %d\t" +msgstr " %d\t" + +#: readelf.c:5142 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#. Now display the statements. +#: readelf.c:5150 +msgid "\n Line Number Statements:\n" +msgstr "\n ¹ÔÈֹ楹¥Æ¡¼¥È¥á¥ó¥È:\n" + +#: readelf.c:5169 +msgid " Copy\n" +msgstr " ¥³¥Ô¡¼\n" + +#: readelf.c:5176 +#, c-format +msgid " Advance PC by %d to %lx\n" +msgstr " PC ¤ò %d ʬ¿Ê¤á %lx ¤È¤·¤Þ¤¹\n" + +#: readelf.c:5184 +#, c-format +msgid " Advance Line by %d to %d\n" +msgstr " ¹Ô¤ò %d ¿Ê¤á %d ¤È¤·¤Þ¤¹\n" + +#: readelf.c:5191 +#, c-format +msgid " Set File Name to entry %d in the File Name Table\n" +msgstr " ¥¨¥ó¥È¥ê %d ¤Î¥Õ¥¡¥¤¥ë̾¤ò¥Õ¥¡¥¤¥ë̾¥Æ¡¼¥Ö¥ë¤Ë¥»¥Ã¥È\n" + +#: readelf.c:5199 +#, c-format +msgid " Set column to %d\n" +msgstr " ·åÉý¤ò %d ¤ËÀßÄê\n" + +#: readelf.c:5206 +#, c-format +msgid " Set is_stmt to %d\n" +msgstr " is_stmt ¤ò %d ¤Ë¥»¥Ã¥È\n" + +#: readelf.c:5211 +msgid " Set basic block\n" +msgstr " ´ðËÜ¥Ö¥í¥Ã¥¯¤òÀßÄê\n" + +#: readelf.c:5219 +#, c-format +msgid " Advance PC by constant %d to 0x%lx\n" +msgstr " PC ¤òÄê¿ô %d ʬ¿Ê¤á 0x%lx ¤È¤·¤Þ¤¹\n" + +#: readelf.c:5227 +#, c-format +msgid " Advance PC by fixed size amount %d to 0x%lx\n" +msgstr " PC ¤ò¸ÇÄꥵ¥¤¥º %d ʬ¿Ê¤á 0x%lx ¤È¤·¤Þ¤¹\n" + +#: readelf.c:5235 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr " Æü쥪¥Ú¥³¡¼¥É %d: ¥¢¥É¥ì¥¹¤ò %d ʬ¿Ê¤á 0x%lx ¤È¤·" + +#: readelf.c:5239 +#, c-format +msgid " and Line by %d to %d\n" +msgstr " ¹Ô¤ò %d ʬ¿Ê¤á %d ¤È¤·¤Þ¤¹\n" + +#: readelf.c:5262 readelf.c:5691 +#, c-format +msgid "Contents of the %s section:\n\n" +msgstr "%s ¥»¥¯¥·¥ç¥ó¤ÎÆâÍÆ:\n\n" + +#: readelf.c:5285 +msgid "Only DWARF 2 pubnames are currently supported\n" +msgstr "¸½ºß¤Î¤È¤³¤í¡¢DWARF 2 ¤À¤±¤¬ pubnames ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹\n" + +#: readelf.c:5292 +#, c-format +msgid " Length: %ld\n" +msgstr " Ťµ: %ld\n" + +#: readelf.c:5294 +#, c-format +msgid " Version: %d\n" +msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:5296 +#, c-format +msgid " Offset into .debug_info section: %ld\n" +msgstr " .debug_info ¥»¥¯¥·¥ç¥ó¤Ø¤Î¥ª¥Õ¥»¥Ã¥È:%ld\n" + +#: readelf.c:5298 +#, c-format +msgid " Size of area in .debug_info section: %ld\n" +msgstr " .debug_info ¥»¥¯¥·¥ç¥óÎΰ襵¥¤¥º: %ld\n" + +#: readelf.c:5301 +msgid "\n Offset\tName\n" +msgstr "\n ¥ª¥Õ¥»¥Ã¥È\t̾Á°\n" + +#: readelf.c:5383 +#, c-format +msgid "Unknown TAG value: %lx" +msgstr "ÉÔÌÀ¤Ê TAG ÃÍ: %lx" + +#: readelf.c:5478 +#, c-format +msgid "Unknown AT value: %lx" +msgstr "ÉÔÌÀ¤Ê AT ÃÍ: %lx" + +#: readelf.c:5515 +#, c-format +msgid "Unknown FORM value: %lx" +msgstr "ÉÔÌÀ¤Ê FORM ÃÍ: %lx" + +#: readelf.c:5697 +msgid " Number TAG\n" +msgstr " ÈÖ¹æ TAG\n" + +#: readelf.c:5703 +#, c-format +msgid " %ld %s [%s]\n" +msgstr " %ld %s [%s]\n" + +#: readelf.c:5706 +msgid "has children" +msgstr "»Ò¤¢¤ê" + +#: readelf.c:5706 +msgid "no children" +msgstr "»Ò¤Ê¤·" + +#: readelf.c:5710 +#, c-format +msgid " %-18s %s\n" +msgstr " %-18s %s\n" + +#: readelf.c:5729 +#, c-format +msgid " %lu byte block: " +msgstr " %lu ¥Ð¥¤¥È¥Ö¥í¥Ã¥¯: " + +#: readelf.c:6036 +msgid "(User defined location op)" +msgstr "(¥æ¡¼¥¶ÄêµÁ location op)" + +#: readelf.c:6038 +msgid "(Unknown location op)" +msgstr "(ÉÔÌÀ¤Ê location op)" + +#: readelf.c:6165 +#, c-format +msgid "Unable to handle FORM: %d" +msgstr "FORM ¤ò°·¤¨¤Þ¤»¤ó: %d" + +#: readelf.c:6169 +#, c-format +msgid "Unrecognised form: %d" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤·Á¼°: %d" + +#: readelf.c:6182 +msgid "(not inlined)" +msgstr "(Èó inline)" + +#: readelf.c:6183 +msgid "(inlined)" +msgstr "(inlined ²½)" + +#: readelf.c:6184 +msgid "(declared as inline but ignored)" +msgstr "(inline Àë¸À¤µ¤ì¤¿¤¬Ìµ»ë¤µ¤ì¤¿)" + +#: readelf.c:6185 +msgid "(declared as inline and inlined)" +msgstr "(inline Àë¸À¤µ¤ì inline ²½)" + +#: readelf.c:6186 +#, c-format +msgid " (Unknown inline attribute value: %lx)" +msgstr " (ÉÔÌÀ¤Ê inline °À­ÃÍ: %lx)" + +#: readelf.c:6315 readelf.c:6441 +#, c-format +msgid "The section %s contains:\n\n" +msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n\n" + +#: readelf.c:6337 +#, c-format +msgid " Compilation Unit @ %lx:\n" +msgstr " ¥³¥ó¥Ñ¥¤¥ëñ°Ì @ %lx:\n" + +#: readelf.c:6338 +#, c-format +msgid " Length: %ld\n" +msgstr " Ťµ: %ld\n" + +#: readelf.c:6339 +#, c-format +msgid " Version: %d\n" +msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:6340 +#, c-format +msgid " Abbrev Offset: %ld\n" +msgstr " ¾Êά offset: %ld\n" + +#: readelf.c:6341 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " ¥Ý¥¤¥ó¥¿¥µ¥¤¥º:%d\n" + +#: readelf.c:6345 +msgid "Only version 2 DWARF debug information is currently supported.\n" +msgstr "¸½ºß¤Î¤È¤³¤í¡¢¥Ð¡¼¥¸¥ç¥ó 2 DWARF ¤À¤±¤¬¥Ç¥Ð¥Ã¥°¾ðÊó¤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£\n" + +#: readelf.c:6367 +msgid "Unable to locate .debug_abbrev section!\n" +msgstr ".debug_abbrev ¥»¥¯¥·¥ç¥ó¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó!\n" + +#: readelf.c:6407 +#, c-format +msgid "Unable to locate entry %lu in the abbreviation table\n" +msgstr "¾Êά¥Æ¡¼¥Ö¥ëÆâ¤Î¥¨¥ó¥È¥ê %lu ¤Î°ÌÃÖ¤òÆÃÄê¤Ç¤­¤Þ¤»¤ó\n" + +#: readelf.c:6412 +#, c-format +msgid " <%d><%x>: Abbrev Number: %lu (%s)\n" +msgstr " <%d><%x>: ¾ÊάÈÖ¹æ: %lu (%s)\n" + +#: readelf.c:6462 +msgid "Only DWARF 2 aranges are currently supported.\n" +msgstr "¸½ºß¤Î¤È¤³¤í DWARF 2 ¤À¤±¤¬ arange ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£\n" + +#: readelf.c:6466 +#, c-format +msgid " Length: %ld\n" +msgstr " Ťµ: %ld\n" + +#: readelf.c:6467 +#, c-format +msgid " Version: %d\n" +msgstr " ¥Ð¡¼¥¸¥ç¥ó: %d\n" + +#: readelf.c:6468 +#, c-format +msgid " Offset into .debug_info: %lx\n" +msgstr " .debug_info Æâ¤Ø¤Îoffset: %lx\n" + +#: readelf.c:6469 +#, c-format +msgid " Pointer Size: %d\n" +msgstr " ¥Ý¥¤¥ó¥¿¥µ¥¤¥º: %d\n" + +#: readelf.c:6470 +#, c-format +msgid " Segment Size: %d\n" +msgstr " ¥»¥°¥á¥ó¥È¥µ¥¤¥º: %d\n" + +#: readelf.c:6472 +msgid "\n Address Length\n" +msgstr "\n ¥¢¥É¥ì¥¹Ä¹\n" + +#: readelf.c:6634 +#, c-format +msgid "The section %s contains:\n" +msgstr "¥»¥¯¥·¥ç¥ó %s ¤ÎÆâÍÆ:\n" + +#: readelf.c:7109 +#, c-format +msgid "Displaying the debug contents of section %s is not yet supported.\n" +msgstr "¥»¥¯¥·¥ç¥ó %s ¤Î¥Ç¥Ð¥Ã¥°ÆâÍƤÎɽ¼¨¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£\n" + +#: readelf.c:7173 +#, c-format +msgid "\nSection '%s' has no debugging data.\n" +msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï¥Ç¥Ð¥Ã¥°¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£\n" + +#: readelf.c:7192 +#, c-format +msgid "Unrecognised debug section: %s\n" +msgstr "ǧ¼±¤Ç¤­¤Ê¤¤¥Ç¥Ð¥Ã¥°¥»¥¯¥·¥ç¥ó: %s\n" + +#: readelf.c:7264 +msgid "Some sections were not dumped because they do not exist!\n" +msgstr "¸ºß¤·¤Ê¤¤¤¿¤á¥À¥ó¥×¤µ¤ì¤Ê¤«¤Ã¤¿¥»¥¯¥·¥ç¥ó¤â¤¢¤ê¤Þ¤¹!\n" + +#: readelf.c:7447 +#, c-format +msgid "\nSection '%s' contains %d entries:\n" +msgstr "\n¥»¥¯¥·¥ç¥ó '%s' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:7609 +msgid "conflict list with without table" +msgstr "¥Æ¡¼¥Ö¥ë¤Î̵ͭ¤Î conflict ¥ê¥¹¥È" + +#: readelf.c:7637 +#, c-format +msgid "\nSection '.conflict' contains %d entries:\n" +msgstr "\n¥»¥¯¥·¥ç¥ó '.conflict' ¤Ï %d ¸Ä¤Î¥¨¥ó¥È¥ê¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹:\n" + +#: readelf.c:7638 +msgid " Num: Index Value Name" +msgstr " ÈÖ¹æ: º÷°ú ÃÍ Ì¾Á°" + +#: readelf.c:7663 +msgid "NT_PRSTATUS (prstatus structure)" +msgstr "NT_PRSTATUS (prstatus ¹½Â¤ÂÎ)" + +#: readelf.c:7664 +msgid "NT_FPREGSET (floating point registers)" +msgstr "NT_FPREGSET (ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿)" + +#: readelf.c:7665 +msgid "NT_PRPSINFO (prpsinfo structure)" +msgstr "NT_PRPSINFO (prpsinfo ¹½Â¤ÂÎ)" + +#: readelf.c:7666 +msgid "NT_TASKSTRUCT (task structure)" +msgstr "NT_TASKSTRUCT (task ¹½Â¤ÂÎ)" + +#: readelf.c:7667 +msgid "NT_PRXFPREG (user_xfpregs structure)" +msgstr "NT_PRXFPREG (user_xfpregs ¹½Â¤ÂÎ)" + +#: readelf.c:7668 +msgid "NT_PSTATUS (pstatus structure)" +msgstr "NT_PSTATUS (pstatus ¹½Â¤ÂÎ)" + +#: readelf.c:7669 +msgid "NT_FPREGS (floating point registers)" +msgstr "NT_FPREGS (ÉâÆ°¾®¿ôÅÀ¥ì¥¸¥¹¥¿)" + +#: readelf.c:7670 +msgid "NT_PSINFO (psinfo structure)" +msgstr "NT_PSINFO (psinfo ¹½Â¤ÂÎ)" + +#: readelf.c:7671 +msgid "NT_LWPSTATUS (lwpstatus_t structure)" +msgstr "NT_LWPSTATUS (lwpstatus_t ¹½Â¤ÂÎ)" + +#: readelf.c:7672 +msgid "NT_LWPSINFO (lwpsinfo_t structure)" +msgstr "NT_LWPSINFO (lwpsinfo_t ¹½Â¤ÂÎ)" + +#: readelf.c:7673 +msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" +msgstr "NT_WIN32PSTATUS (win32_pstatus ¹½Â¤ÂÎ)" + +#: readelf.c:7675 +#, c-format +msgid "Unknown note type: (0x%08x)" +msgstr "ÉÔÌÀ¤Ê note ¥¿¥¤¥×: (0x%08x)" + +#: readelf.c:7713 +#, c-format +msgid "\nNotes at offset 0x%08lx with length 0x%08lx:\n" +msgstr "\n¥ª¥Õ¥»¥Ã¥È 0x%08lx, Ťµ 0x%08lx ¤Î note:\n" + +#: readelf.c:7715 +msgid " Owner\t\tData size\tDescription\n" +msgstr " ½êÍ­¼Ô\t\t¥Ç¡¼¥¿¥µ¥¤¥º\tÀâÌÀ\n" + +#: readelf.c:7826 +msgid "No note segments present in the core file.\n" +msgstr "¤³¤Î¥³¥¢¥Õ¥¡¥¤¥ë¤Ë note ¥»¥°¥á¥ó¥È¤¬Í­¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:7904 +msgid "This instance of readelf has been built without support for a\n" +msgstr "¤³¤Î readelf ¤Î¼ÂÂÎ¤Ï 64 bit ¥Ç¡¼¥¿·¿¥µ¥Ý¡¼¥È̵¤·¤Ç¥Ó¥ë¥É¤µ¤ì¤Æ¤ª¤ê¡¢\n" + +#: readelf.c:7905 +msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" +msgstr "64 bit ELF ¥Õ¥¡¥¤¥ë¤òÆɤळ¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£\n" + +#: readelf.c:7940 +#, c-format +msgid "Cannot stat input file %s.\n" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤ò stat(2) ¤Ç¤­¤Þ¤»¤ó¡£\n" + +#: readelf.c:7947 +#, c-format +msgid "Input file %s not found.\n" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£\n" + +#: readelf.c:7953 +#, c-format +msgid "%s: Failed to read file header\n" +msgstr "%s: ¥Õ¥¡¥¤¥ë¥Ø¥Ã¥À¤ÎÆɹþ¤ß¤¬¼ºÇÔ¤·¤Þ¤·¤¿\n" + +#: readelf.c:7967 +#, c-format +msgid "\nFile: %s\n" +msgstr "\n¥Õ¥¡¥¤¥ë: %s\n" + +#: rename.c:131 +#, c-format +msgid "%s: cannot set time: %s" +msgstr "%s: »þ¹ï¤òÀßÄê¤Ç¤­¤Þ¤»¤ó: %s" + +#. We have to clean up here. +#: rename.c:170 rename.c:203 +#, c-format +msgid "%s: rename: %s" +msgstr "%s: rename: %s" + +#: rename.c:211 +#, c-format +msgid "%s: simple_copy: %s" +msgstr "%s: simple_copy: %s" + +#: resbin.c:130 +#, c-format +msgid "%s: not enough binary data" +msgstr "%s: ¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤¬ÉÔ½½Ê¬¤Ç¤¹" + +#: resbin.c:149 +msgid "null terminated unicode string" +msgstr "½ªÃ¼¤¬ null ¤Î unicode ʸ»úÎó¤Ç¤¹" + +#: resbin.c:179 resbin.c:185 +msgid "resource ID" +msgstr "¥ê¥½¡¼¥¹ ID" + +#: resbin.c:229 +msgid "cursor" +msgstr "¥«¡¼¥½¥ë" + +#: resbin.c:263 resbin.c:270 +msgid "menu header" +msgstr "menu ¥Ø¥Ã¥À" + +#: resbin.c:280 +msgid "menuex header" +msgstr "¥á¥Ë¥å¡¼ ex ¥Ø¥Ã¥À" + +#: resbin.c:284 +msgid "menuex offset" +msgstr "¥á¥Ë¥å¡¼ ex ¥ª¥Õ¥»¥Ã¥È" + +#: resbin.c:291 +#, c-format +msgid "unsupported menu version %d" +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥á¥Ë¥å¡¼¥Ð¡¼¥¸¥ç¥ó %d" + +#: resbin.c:319 resbin.c:334 resbin.c:400 +msgid "menuitem header" +msgstr "¥á¥Ë¥å¡¼¥¢¥¤¥Æ¥à¥Ø¥Ã¥À" + +#: resbin.c:430 +msgid "menuitem" +msgstr "¥á¥Ë¥å¡¼¥¢¥¤¥Æ¥à" + +#: resbin.c:471 resbin.c:499 +msgid "dialog header" +msgstr "¥À¥¤¥¢¥í¥°¥Ø¥Ã¥À" + +#: resbin.c:489 +#, c-format +msgid "unexpected dialog signature %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥À¥¤¥¢¥í¥°¼±ÊÌÈÖ¹æ %d" + +#: resbin.c:531 +msgid "dialog font point size" +msgstr "¥À¥¤¥¢¥í¥°¥Õ¥©¥ó¥È¥Ý¥¤¥ó¥È¥µ¥¤¥º" + +#: resbin.c:539 +msgid "dialogex font information" +msgstr "¥À¥¤¥¢¥í¥° ex ¥Õ¥©¥ó¥È¾ðÊó" + +#: resbin.c:564 resbin.c:582 +msgid "dialog control" +msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ë" + +#: resbin.c:574 +msgid "dialogex control" +msgstr "¥À¥¤¥¢¥í¥° ex ¥³¥ó¥È¥í¡¼¥ë" + +#: resbin.c:603 +msgid "dialog control end" +msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ëËöÈø" + +#: resbin.c:615 +msgid "dialog control data" +msgstr "¥À¥¤¥¢¥í¥°¥³¥ó¥È¥í¡¼¥ë¥Ç¡¼¥¿" + +#: resbin.c:658 +msgid "stringtable string length" +msgstr "stringtable ʸ»úÎóĹ" + +#: resbin.c:668 +msgid "stringtable string" +msgstr "stringtable ʸ»úÎó" + +#: resbin.c:701 +msgid "fontdir header" +msgstr "fontdir ¥Ø¥Ã¥À" + +#: resbin.c:714 +msgid "fontdir" +msgstr "fontdir" + +#: resbin.c:730 +msgid "fontdir device name" +msgstr "fontdir ¥Ç¥Ð¥¤¥¹Ì¾" + +#: resbin.c:736 +msgid "fontdir face name" +msgstr "fontdir ¥Õ¥§¥¤¥¹Ì¾" + +#: resbin.c:779 +msgid "accelerator" +msgstr "¥¢¥¯¥»¥é¥ì¡¼¥¿" + +#: resbin.c:843 +msgid "group cursor header" +msgstr "¥°¥ë¡¼¥×¥«¡¼¥½¥ë¥Ø¥Ã¥À" + +#: resbin.c:847 +#, c-format +msgid "unexpected group cursor type %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥°¥ë¡¼¥×¥«¡¼¥½¥ë·¿ %d" + +#: resbin.c:862 +msgid "group cursor" +msgstr "¥°¥ë¡¼¥×¥«¡¼¥½¥ë" + +#: resbin.c:901 +msgid "group icon header" +msgstr "¥°¥ë¡¼¥×¥¢¥¤¥³¥ó¥Ø¥Ã¥À" + +#: resbin.c:905 +#, c-format +msgid "unexpected group icon type %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎó %d" + +#: resbin.c:920 +msgid "group icon" +msgstr "¥°¥ë¡¼¥×¥¢¥¤¥³¥ó" + +#: resbin.c:991 resbin.c:1210 +msgid "unexpected version string" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎó" + +#: resbin.c:1025 +#, c-format +msgid "version length %d does not match resource length %lu" +msgstr "¥Ð¡¼¥¸¥çĹ %d ¤Ï¥ê¥½¡¼¥¹Ä¹ %lu ¤Î°ìÃפ·¤Þ¤»¤ó" + +#: resbin.c:1029 +#, c-format +msgid "unexpected version type %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥ó¥¿¥¤¥× %d" + +#: resbin.c:1041 +#, c-format +msgid "unexpected fixed version information length %d" +msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊóĹ %d" + +#: resbin.c:1044 +msgid "fixed version info" +msgstr "¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊó" + +#: resbin.c:1048 +#, c-format +msgid "unexpected fixed version signature %lu" +msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¼±ÊÌÈÖ¹æ %lu" + +#: resbin.c:1052 +#, c-format +msgid "unexpected fixed version info version %lu" +msgstr "ͽ´ü¤·¤Ê¤¤¸ÇÄê¥Ð¡¼¥¸¥ç¥ó¾ðÊó¥Ð¡¼¥¸¥ç¥ó %lu" + +#: resbin.c:1081 +msgid "version var info" +msgstr "¥Ð¡¼¥¸¥ç¥ó var ¾ðÊó" + +#: resbin.c:1098 +#, c-format +msgid "unexpected stringfileinfo value length %d" +msgstr "ͽ´ü¤·¤Ê¤¤ stringfileinfo ÃͤÎŤµ %d" + +#: resbin.c:1108 +#, c-format +msgid "unexpected version stringtable value length %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥ó stringtable ÃͤÎŤµ %d" + +#: resbin.c:1142 +#, c-format +msgid "unexpected version string length %d != %d + %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óʸ»úÎóĹ %d != %d + %d" + +#: resbin.c:1153 +#, c-format +msgid "unexpected version string length %d < %d" +msgstr "ͽ´ü¤·¤Ê¤¤ÊÑ¿ô¥Õ¥¡¥¤¥ë¾ðÊóÃͤÎŤµ %d < %d" + +#: resbin.c:1170 +#, c-format +msgid "unexpected varfileinfo value length %d" +msgstr "ͽ´ü¤·¤Ê¤¤ varfileinfo ÃͤÎŤµ %d" + +#: resbin.c:1189 +msgid "version varfileinfo" +msgstr "¥Ð¡¼¥¸¥ç¥ó varfileinfo" + +#: resbin.c:1204 +#, c-format +msgid "unexpected version value length %d" +msgstr "ͽ´ü¤·¤Ê¤¤¥Ð¡¼¥¸¥ç¥óÃͤÎŤµ %d" + +#: rescoff.c:128 +msgid "filename required for COFF input" +msgstr "COFF ÆþÎÏÍѤΥե¡¥¤¥ë̾¤¬É¬ÍפǤ¹" + +#: rescoff.c:145 +#, c-format +msgid "%s: no resource section" +msgstr "%s: ¥ê¥½¡¼¥¹¥»¥¯¥·¥ç¥ó¤¬Í­¤ê¤Þ¤»¤ó" + +#: rescoff.c:152 +msgid "can't read resource section" +msgstr "¥ê¥½¡¼¥¹¥»¥¯¥·¥ç¥ó¤òÆɹþ¤á¤Þ¤»¤ó" + +#: rescoff.c:178 +#, c-format +msgid "%s: %s: address out of bounds" +msgstr "%s: %s: ¥¢¥É¥ì¥¹¤¬¶­³¦¤ò±Û¤¨¤Æ¤¤¤Þ¤¹" + +#: rescoff.c:197 +msgid "directory" +msgstr "¥Ç¥£¥ì¥¯¥È¥ê" + +#: rescoff.c:225 +msgid "named directory entry" +msgstr "̾Á°¤Ä¤­¥Ç¥£¥ì¥¯¥È¥ê¹àÌÜ" + +#: rescoff.c:234 +msgid "directory entry name" +msgstr "¥Ç¥£¥ì¥¯¥È¥ê¹àÌÜ̾" + +#: rescoff.c:254 +msgid "named subdirectory" +msgstr "̾Á°¤Ä¤­¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê" + +#: rescoff.c:262 +msgid "named resource" +msgstr "̾Á°¤Ä¤­¥ê¥½¡¼¥¹" + +#: rescoff.c:277 +msgid "ID directory entry" +msgstr "ID ¥Ç¥£¥ì¥¯¥È¥ê¹àÌÜ" + +#: rescoff.c:294 +msgid "ID subdirectory" +msgstr "ID ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê" + +#: rescoff.c:302 +msgid "ID resource" +msgstr "ID ¥ê¥½¡¼¥¹" + +#: rescoff.c:328 +msgid "resource type unknown" +msgstr "¥ê¥½¡¼¥¹·¿¤¬ÉÔÌÀ¤Ç¤¹" + +#: rescoff.c:331 +msgid "data entry" +msgstr "¥Ç¡¼¥¿¹àÌÜ" + +#: rescoff.c:339 +msgid "resource data" +msgstr "¥ê¥½¡¼¥¹¥Ç¡¼¥¿" + +#: rescoff.c:344 +msgid "resource data size" +msgstr "¥ê¥½¡¼¥¹¥Ç¡¼¥¿¥µ¥¤¥º" + +#: rescoff.c:439 +msgid "filename required for COFF output" +msgstr "COFF ½ÐÎÏÍѤΥե¡¥¤¥ë̾¤¬É¬ÍפǤ¹" + +#: rescoff.c:738 +msgid "can't get BFD_RELOC_RVA relocation type" +msgstr "BFD_RELOC_RVA ºÆÇÛÃÖ¥¿¥¤¥×¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó" + +#: resrc.c:240 resrc.c:312 +#, c-format +msgid "can't open temporary file `%s': %s" +msgstr "°ì»þ¥Õ¥¡¥¤¥ë¤ò³«¤±¤Þ¤»¤ó `%s': %s" + +#: resrc.c:246 +#, c-format +msgid "can't redirect stdout: `%s': %s" +msgstr "ɸ½à½ÐÎϤ˥ê¥À¥¤¥ì¥¯¥È¤Ç¤­¤Þ¤»¤ó: `%s': %s" + +#: resrc.c:262 +#, c-format +msgid "%s %s: %s" +msgstr "%s %s: %s" + +#: resrc.c:308 +#, c-format +msgid "can't execute `%s': %s" +msgstr "`%s' ¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó: %s" + +#: resrc.c:317 +#, c-format +msgid "Using temporary file `%s' to read preprocessor output\n" +msgstr "¥×¥ê¥×¥í¥»¥Ã¥µ½ÐÎϤòÆɹþ¤à¤¿¤á¤Ë°ì»þ¥Õ¥¡¥¤¥ë `%s' ¤ò»È¤¤¤Þ¤¹\n" + +#: resrc.c:324 +#, c-format +msgid "can't popen `%s': %s" +msgstr "`%s' ¤ò popen ¤Ç¤­¤Þ¤»¤ó: %s" + +#: resrc.c:326 +msgid "Using popen to read preprocessor output\n" +msgstr "¥×¥ê¥×¥í¥»¥Ã¥µ½ÐÎϤòÆɹþ¤à¤¿¤á¤Ë popen ¤ò»È¤¤¤Þ¤¹\n" + +#: resrc.c:369 +#, c-format +msgid "Tried `%s'\n" +msgstr "`%s' ¤ò»î¤·¤Þ¤·¤¿\n" + +#: resrc.c:380 +#, c-format +msgid "Using `%s'\n" +msgstr "`%s' ¤ò»È¤¤¤Þ¤¹\n" + +#: resrc.c:541 +#, c-format +msgid "%s:%d: %s\n" +msgstr "%s:%d: %s\n" + +#: resrc.c:550 +#, c-format +msgid "%s: unexpected EOF" +msgstr "%s: ͽ´ü¤·¤Ê¤¤ EOF ¤Ç¤¹" + +#: resrc.c:607 +#, c-format +msgid "%s: read of %lu returned %lu" +msgstr "%s: %lu ¸Ä¤ÎÆɹþ¤ß¤Ç %lu ¤¬Ê֤äƤ­¤Þ¤·¤¿" + +#: resrc.c:649 resrc.c:903 resrc.c:1176 resrc.c:1330 +#, c-format +msgid "stat failed on bitmap file `%s': %s" +msgstr "¥Ó¥Ã¥È¥Þ¥Ã¥×¥Õ¥¡¥¤¥ë `%s' ¤Î stat(2) ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: resrc.c:702 +#, c-format +msgid "cursor file `%s' does not contain cursor data" +msgstr "¥«¡¼¥½¥ë¥Õ¥¡¥¤¥ë `%s' ¤¬¥«¡¼¥½¥ë¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó" + +#: resrc.c:734 resrc.c:1047 +#, c-format +msgid "%s: fseek to %lu failed: %s" +msgstr "%s: %lu ¤Ø¤Î fseek ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: resrc.c:871 +msgid "help ID requires DIALOGEX" +msgstr "¥Ø¥ë¥× ID ¤Ë¤Ï DIALOGEX ¤¬É¬ÍפȤʤê¤Þ¤¹" + +#: resrc.c:873 +msgid "control data requires DIALOGEX" +msgstr "¥³¥ó¥È¥í¡¼¥ë¥Ç¡¼¥¿¤Ë¤Ï DIALOGEX ¤¬É¬ÍפȤʤê¤Þ¤¹" + +#: resrc.c:1016 +#, c-format +msgid "icon file `%s' does not contain icon data" +msgstr "¥¢¥¤¥³¥ó¥Õ¥¡¥¤¥ë `%s' ¤¬¥¢¥¤¥³¥ó¥Ç¡¼¥¿¤ò´Þ¤ó¤Ç¤¤¤Þ¤»¤ó" + +#: resrc.c:1535 +#, c-format +msgid "can't open `%s' for output: %s" +msgstr "½ÐÎÏÍѤΠ`%s' ¤ò³«¤±¤Þ¤»¤ó: %s" + +#: size.c:79 +#, c-format +msgid "" +"Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n" +" [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n" +" [-V | --version] [--target=bfdname] [--help] [file...]\n" +msgstr "" +"»È¤¤Êý: %s [-A | --format=sysv | -B | --format=berkeley]\n" +" [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n" +" [-V | --version] [--target=bfdname] [--help] [¥Õ¥¡¥¤¥ë...]\n" + +#: size.c:85 +msgid "default is --format=berkeley\n" +msgstr "¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï --format=berkeley ¤Ç¤¹\n" + +#: size.c:87 +msgid "default is --format=sysv\n" +msgstr "¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï --format=sysv ¤Ç¤¹\n" + +#: size.c:141 +#, c-format +msgid "invalid argument to --format: %s" +msgstr "--format ¤ËÂФ·¤ÆÉÔŬÀڤʰú¿ô¤Ç¤¹: %s" + +#: size.c:168 +#, c-format +msgid "Invalid radix: %s\n" +msgstr "ÉÔŬÀڤʴð¿ô¤Ç¤¹: %s\n" + +#: srconv.c:1880 +#, c-format +msgid "Usage: %s [-dhVq] in-file [out-file]\n" +msgstr "»È¤¤Êý: %s [-dhVq] ÆþÎÏ¥Õ¥¡¥¤¥ë [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" + +#: srconv.c:1887 +#, c-format +msgid "%s: Convert a COFF object file into a SYSROFF object file\n" +msgstr "%s: COFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò SYSROFF ¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ËÊÑ´¹¤·¤Þ¤¹\n" + +#: srconv.c:2020 +#, c-format +msgid "unable to open output file %s" +msgstr "½ÐÎÏ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó" + +#: stabs.c:349 stabs.c:1770 +msgid "numeric overflow" +msgstr "¿ôÃͤ¬¥ª¡¼¥Ð¡¼¥Õ¥í¡¼¤·¤Þ¤·¤¿" + +#: stabs.c:360 +#, c-format +msgid "Bad stab: %s\n" +msgstr "ÉÔÀµ¤Ê¥¹¥¿¥Ö¤Ç¤¹: %s\n" + +#: stabs.c:370 +#, c-format +msgid "Warning: %s: %s\n" +msgstr "·Ù¹ð: %s: %s\n" + +#: stabs.c:492 +msgid "N_LBRAC not within function\n" +msgstr "N_LBRAC ¤¬´Ø¿ôÆâ¤Ë¤¢¤ê¤Þ¤»¤ó\n" + +#: stabs.c:531 +msgid "Too many N_RBRACs\n" +msgstr "N_RBRAC ¤Î¿ô¤¬Â¿¤¹¤®¤Þ¤¹\n" + +#: stabs.c:780 +msgid "unknown C++ encoded name" +msgstr "ÉÔÌÀ¤Ê C++ ¥¨¥ó¥³¡¼¥É̾¤Ç¤¹" + +#. Complain and keep going, so compilers can invent new +#. cross-reference types. +#: stabs.c:1307 +msgid "unrecognized cross reference type" +msgstr "Áê¸ß»²¾È·¿¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#. Does this actually ever happen? Is that why we are worrying +#. about dealing with it rather than just calling error_type? +#: stabs.c:1862 +msgid "missing index type" +msgstr "¥¤¥ó¥Ç¥Ã¥¯¥¹·¿¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: stabs.c:2189 +msgid "unknown virtual character for baseclass" +msgstr "´ðÄ쥯¥é¥¹ÍѲ¾ÁÛʸ»ú¤¬ÉÔÌÀ¤Ç¤¹" + +#: stabs.c:2207 +msgid "unknown visibility character for baseclass" +msgstr "´ðÄ쥯¥é¥¹ÍѲĻëÀ­Ê¸»ú¤¬ÉÔÌÀ¤Ç¤¹" + +#: stabs.c:2399 +msgid "unnamed $vb type" +msgstr "$vb ·¿¤Î̾Á°¤¬¤¢¤ê¤Þ¤»¤ó" + +#: stabs.c:2405 +msgid "unrecognized C++ abbreviation" +msgstr "C++ ¾Êά̾¤òǧ¼±¤Ç¤­¤Þ¤»¤ó" + +#: stabs.c:2485 +msgid "unknown visibility character for field" +msgstr "¥Õ¥£¡¼¥ë¥ÉÍѤβĻëÀ­Ê¸»ú¤¬ÉÔÌÀ¤Ç¤¹" + +#: stabs.c:2741 +msgid "const/volatile indicator missing" +msgstr "const/volatile »Ø¼¨»Ò¤ò·ç¤¤¤Æ¤¤¤Þ¤¹" + +#: stabs.c:2981 +#, c-format +msgid "No mangling for \"%s\"\n" +msgstr "\"%s\" ¤Î̾Á°¤ÎÊÑ·Á(mangling) ¤¬¤¢¤ê¤Þ¤»¤ó\n" + +#: stabs.c:3294 +msgid "Undefined N_EXCL" +msgstr "N_EXCL ¤¬Ì¤ÄêµÁ¤Ç¤¹" + +#: stabs.c:3382 +#, c-format +msgid "Type file number %d out of range\n" +msgstr "¥Õ¥¡¥¤¥ëÈֹ淿 %d ¤¬Èϰϳ°¤Ç¤¹\n" + +#: stabs.c:3387 +#, c-format +msgid "Type index number %d out of range\n" +msgstr "¥¤¥ó¥Ç¥Ã¥¯¥¹Èֹ淿 %d ¤¬Èϰϳ°¤Ç¤¹\n" + +#: stabs.c:3474 +#, c-format +msgid "Unrecognized XCOFF type %d\n" +msgstr "XCOFF ¥¿¥¤¥× %d ¤òǧ¼±¤Ç¤­¤Þ¤»¤ó\n" + +#: stabs.c:3773 +#, c-format +msgid "bad mangled name `%s'\n" +msgstr "ÉÔÀµ¤ÊÊÑ·Á̾ (mangled name) `%s'\n" + +#: stabs.c:3869 +msgid "no argument types in mangled string\n" +msgstr "ÊÑ·Á¤µ¤ì¤¿(mangled) ʸ»úÎó¤Ë°ú¿ô¤Î·¿¤¬¤¢¤ê¤Þ¤»¤ó\n" + +#: strings.c:177 +#, c-format +msgid "invalid number %s" +msgstr "ÉÔŬÀÚ¤ÊÃÍ %s" + +#: strings.c:513 +#, c-format +msgid "invalid integer argument %s" +msgstr "ÉÔŬÀÚ¤ÊÀ°¿ô°ú¿ô %s" + +#: strings.c:523 +#, c-format +msgid "" +"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n" +" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--help] [--version] file...\n" +msgstr "" +"»È¤¤Êý: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n" +" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--help] [--version] ¥Õ¥¡¥¤¥ë...\n" + +#: sysdump.c:712 +#, c-format +msgid "Usage: %s [-hV] in-file\n" +msgstr "»È¤¤Êý: %s [-hV] ÆþÎÏ¥Õ¥¡¥¤¥ë\n" + +#: sysdump.c:781 +#, c-format +msgid "cannot open input file %s" +msgstr "ÆþÎÏ¥Õ¥¡¥¤¥ë %s ¤ò³«¤±¤Þ¤»¤ó" + +#: version.c:39 +msgid "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" +msgstr "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" + +#: version.c:40 +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 "" +"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" +"[»²¹ÍÌõ -- ˡŪ¸úÎϤȤ·¤Æ¤Ï±Ñʸ¤¬Å¬ÍѤµ¤ì¤Þ¤¹]\n" +"¤³¤ì¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹ -- GNU GPL ¤Îʸ¸À¤Ë½¾¤Ã¤ÆÊ£À½¤¬µö²Ä¤µ¤ì¤Þ¤¹¡£\n" +"¤³¤Î¥×¥í¥°¥é¥à¤Ë¤Ï¤¤¤«¤Ê¤ëÊݾڤ⤢¤ê¤Þ¤»¤ó¡£\n" + +#: windres.c:237 +#, c-format +msgid "can't open %s `%s': %s" +msgstr "%s `%s' ¤ò³«¤±¤Þ¤»¤ó: %s" + +#: windres.c:416 +msgid ": expected to be a directory\n" +msgstr ": ¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹\n" + +#: windres.c:428 +msgid ": expected to be a leaf\n" +msgstr ": ËöÈøÍ×ÁǤǤ¢¤ë¤Ù¤­¤Ç¤¹\n" + +#: windres.c:437 +#, c-format +msgid "%s: warning: " +msgstr "%s: ·Ù¹ð: " + +#: windres.c:439 +msgid ": duplicate value\n" +msgstr ": ½ÅÊ£¤·¤¿ÃͤǤ¹\n" + +#: windres.c:602 +#, c-format +msgid "unknown format type `%s'" +msgstr "ÉÔÌÀ¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È·¿ `%s'" + +#: windres.c:603 +#, c-format +msgid "%s: supported formats:" +msgstr "%s: ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¥Õ¥©¡¼¥Þ¥Ã¥È:" + +#. Otherwise, we give up. +#: windres.c:690 +#, c-format +msgid "can not determine type of file `%s'; use the -I option" +msgstr "¥Õ¥¡¥¤¥ë `%s' ¤Î·¿¤ò·èÄê¤Ç¤­¤Þ¤»¤ó -- -I ¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤·¤ç¤¦" + +#: windres.c:704 +#, c-format +msgid "Usage: %s [options] [input-file] [output-file]\n" +msgstr "»È¤¤Êý: %s [¥ª¥×¥·¥ç¥ó] [ÆþÎÏ¥Õ¥¡¥¤¥ë] [½ÐÎÏ¥Õ¥¡¥¤¥ë]\n" + +#: windres.c:706 +msgid "" +"Options:\n" +" -i FILE, --input FILE Name input file\n" +" -o FILE, --output FILE Name output file\n" +" -I FORMAT, --input-format FORMAT\n" +" Specify input format\n" +" -O FORMAT, --output-format FORMAT\n" +" Specify output format\n" +" -F TARGET, --target TARGET Specify COFF target\n" +" --preprocessor PROGRAM Program to use to preprocess rc file\n" +" --include-dir DIR Include directory when preprocessing rc file\n" +" -DSYM[=VAL], --define SYM[=VAL]\n" +" Define SYM when preprocessing rc file\n" +" -v Verbose - tells you what it's doing\n" +" --language VAL Set language when reading rc file\n" +" --use-temp-file Use a temporary file instead of popen to read\n" +" the preprocessor output\n" +" --no-use-temp-file Use popen (default)\n" +msgstr "" +"¥ª¥×¥·¥ç¥ó:\n" +" -i FILE, --input FILE ÆþÎÏ¥Õ¥¡¥¤¥ë̾\n" +" -o FILE, --output FILE ½ÐÎÏ¥Õ¥¡¥¤¥ë̾\n" +" -I FORMAT, --input-format FORMAT\n" +" ÆþÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë\n" +" -O FORMAT, --output-format FORMAT\n" +" ½ÐÎÏ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò»ØÄꤹ¤ë\n" +" -F TARGET, --target TARGET COFF ¥¿¡¼¥²¥Ã¥È¤ò»ØÄꤹ¤ë\n" +" --preprocessor PROGRAM rc ¥Õ¥¡¥¤¥ë¤ÎÁ°½èÍý¤Ë»È¤¦¥×¥í¥°¥é¥à\n" +" --include-dir DIR rc ¥Õ¥¡¥¤¥ëÁ°½èÍý»þ¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Ç¥£¥ì¥¯¥È¥ê\n" +" -DSYM[=VAL], --define SYM[=VAL]\n" +" rc ¥Õ¥¡¥¤¥ëÁ°½èÍý»þ¤Ë SYM ¤òÄêµÁ¤¹¤ë\n" +" -v ñÁÀå --¹Ô¤ï¤ì¤ë¤³¤È¤òÃΤ餻¤ë\n" +" --language VAL rc Æɹþ¤ß»þ¤Î¸À¸ì¤òÀßÄꤹ¤ë\n" +" --use-temp-file Á°½èÍý½ÐÎϤÎÆɹþ¤ß¤Ë popen ¤Ç¤Ï¤Ê¤¯\n" +" °ì»þ¥Õ¥¡¥¤¥ë¤ò»È¤¦\n" +" --no-use-temp-file popen ¤ò»È¤¦ (¥Ç¥Õ¥©¥ë¥È)\n" + +#: windres.c:725 +msgid " --yydebug Turn on parser debugging\n" +msgstr " --yydebug ¹½Ê¸²òÀÏ´ï¤Î¥Ç¥Ð¥Ã¥°¤òÍ­¸ú¤Ë¤¹¤ë\n" + +#: windres.c:728 +msgid "" +" --help Print this help message\n" +" --version Print version information\n" +msgstr "" +" --help ¤³¤Î»È¤¤Êý¤òɽ¼¨¤¹¤ë\n" +" --version ¥Ð¡¼¥¸¥ç¥ó¾ðÊó¤òɽ¼¨¤¹¤ë\n" + +#: windres.c:731 +msgid "" +"FORMAT is one of rc, res, or coff, and is deduced from the file name\n" +"extension if not specified. A single file name is an input file.\n" +"No input-file is stdin, default rc. No output-file is stdout, default rc.\n" +msgstr "" +"FORMAT ¤Ï rc, res ¤¢¤ë¤¤¤Ï coff ¤Î¤¤¤º¤ì¤«¤È¤Ê¤ê¡¢¤³¤ì¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢\n" +"¥Õ¥¡¥¤¥ë̾¤Î³ÈÄ¥»Ò¤«¤é¿äÄꤵ¤ì¤Þ¤¹¡£ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Ê¤±¤ì¤Ðɸ½àÆþÎϤ¬\n" +"»ÈÍѤµ¤ì¡¢rc ·Á¼°¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ê¤Þ¤¹¡£½ÐÎÏ¥Õ¥¡¥¤¥ë¤¬»ØÄꤵ¤ì¤Ê¤±¤ì¤Ð\n" +"ɸ½à½ÐÎϤ¬»ÈÍѤµ¤ì¡¢rc ·Á¼°¤¬¥Ç¥Õ¥©¥ë¥È¤Ë¤Ê¤ê¤Þ¤¹¡£\n" + +#: windres.c:980 +msgid "no resources" +msgstr "¥ê¥½¡¼¥¹¤¬¤¢¤ê¤Þ¤»¤ó" + +#: wrstabs.c:366 wrstabs.c:2027 +#, c-format +msgid "string_hash_lookup failed: %s" +msgstr "string_hash_lookup ¤¬¼ºÇÔ¤·¤Þ¤·¤¿: %s" + +#: wrstabs.c:666 +#, c-format +msgid "stab_int_type: bad size %u" +msgstr "stab_int_type: ÉÔÀµ¤Ê¥µ¥¤¥º %u ¤Ç¤¹" + +#: wrstabs.c:1467 +#, c-format +msgid "%s: warning: unknown size for field `%s' in struct" +msgstr "%s: ·Ù¹ð: ¹½Â¤ÂΤΥե£¡¼¥ë¥É `%s' ¤Î¥µ¥¤¥º¤¬ÉÔÌÀ¤Ç¤¹" diff -uprN binutils-2.11.92.0.12.3/binutils/po/tr.po binutils-2.11.93.0.2/binutils/po/tr.po --- binutils-2.11.92.0.12.3/binutils/po/tr.po Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/po/tr.po Thu Feb 7 10:21:04 2002 @@ -4,17 +4,17 @@ # msgid "" msgstr "" -"Project-Id-Version: binutils 2.11\n" -"POT-Creation-Date: 2001-01-11 12:02-0800\n" -"PO-Revision-Date: 2001-09-20 08:39EEST\n" +"Project-Id-Version: binutils 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 13:58+0000\n" +"PO-Revision-Date: 2002-02-04 21:49EET\n" "Last-Translator: Deniz Akkus Kanca \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.1\n" +"X-Generator: KBabel 0.9.5\n" -#: addr2line.c:76 +#: addr2line.c:73 #, c-format msgid "" "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n" @@ -25,208 +25,208 @@ msgstr "" " [--target=bfd_adý] hedef\n" " [-e uygulama] [--exe=uygulama] \n" " [--demangle[=tarz]] düzeltme tarzý\n" -" [--basenames] temel isimler [--functions] [adres adres ...]\n" -" iþlevler\n" +" [--basenames] temel isimler\n" +" [--functions] [adres adres ...] iþlevler\n" -#: addr2line.c:83 ar.c:288 nlmconv.c:1119 objcopy.c:373 objcopy.c:405 -#: readelf.c:1876 size.c:91 strings.c:530 windres.c:737 +#: addr2line.c:80 ar.c:289 nlmconv.c:1121 objcopy.c:423 objcopy.c:455 +#: readelf.c:2181 size.c:91 strings.c:655 windres.c:737 #, c-format msgid "Report bugs to %s\n" msgstr "Yazýlým hatalarýný %s adresine, çeviri hatalarýný adresine gönderin\n" -#: addr2line.c:243 +#: addr2line.c:240 #, c-format msgid "%s: can not get addresses from archive" msgstr "%s: arþivden adresler alýnamadý" -#: addr2line.c:310 nm.c:436 objdump.c:2857 +#: addr2line.c:312 nm.c:447 objdump.c:2800 #, c-format msgid "unknown demangling style `%s'" msgstr "bilinmeyen düzeltme tarzý '%s'" -#: ar.c:236 +#: ar.c:237 #, c-format msgid "no entry %s in archive\n" msgstr "arþivde %s girdisi yok\n" -#: ar.c:253 +#: ar.c:254 #, c-format msgid "Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n" msgstr "Kullaným: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [üye-adý] [sayý] arþiv-dosyasý dosya...\n" -#: ar.c:256 +#: ar.c:257 #, c-format msgid " %s -M [\n\n" msgstr "\n<üye %s>\n\n" -#: ar.c:845 ar.c:913 +#: ar.c:850 ar.c:918 #, c-format msgid "%s is not a valid archive" msgstr "%s geçerli bir arþiv deðil" -#: ar.c:881 +#: ar.c:886 #, c-format msgid "stat returns negative size for %s" msgstr "stat komutu, %s için negatif büyüklük gösteriyor" -#: ar.c:1008 +#: ar.c:1013 #, c-format msgid "%s is not an archive" msgstr "%s bir arþiv deðil" -#: ar.c:1015 +#: ar.c:1020 #, c-format msgid "creating %s" msgstr "%s oluþturuluyor" -#: ar.c:1221 +#: ar.c:1226 #, c-format msgid "No member named `%s'\n" msgstr "`%s' adýnda bir üye yok\n" -#: ar.c:1273 +#: ar.c:1278 #, c-format msgid "no entry %s in archive %s!" msgstr "arþiv %2$s içerisinde %1$s girdisi yok!" -#: ar.c:1434 +#: ar.c:1439 #, c-format msgid "%s: no archive map to update" msgstr "%s: güncellenecek arþiv eþlemesi yok" @@ -241,91 +241,95 @@ msgstr "Arþiv içinde %s girdisi yok.\n" msgid "Can't open file %s\n" msgstr "%s dosyasý açýlamadý\n" -#: arsup.c:170 +#: arsup.c:171 #, c-format msgid "%s: Can't open output archive %s\n" msgstr "%s: Çýktý arþivi %s açýlamadý\n" -#: arsup.c:182 +#: arsup.c:183 #, c-format msgid "%s: Can't open input archive %s\n" msgstr "%s: Girdi arþivi %s açýlamadý\n" -#: arsup.c:188 +#: arsup.c:189 #, c-format msgid "%s: file %s is not an archive\n" msgstr "%s: %s dosyasý bir arþiv deðil\n" -#: arsup.c:229 +#: arsup.c:230 #, c-format msgid "%s: no output archive specified yet\n" msgstr "%s: henüz bir çýktý arþivi belirtilmedi\n" -#: arsup.c:249 arsup.c:284 arsup.c:320 arsup.c:340 arsup.c:398 +#: arsup.c:250 arsup.c:285 arsup.c:321 arsup.c:341 arsup.c:399 #, c-format msgid "%s: no open output archive\n" msgstr "%s: açýk çýktý arþivi yok\n" -#: arsup.c:257 arsup.c:358 arsup.c:378 +#: arsup.c:258 arsup.c:359 arsup.c:379 #, c-format msgid "%s: can't open file %s\n" msgstr "%s: %s dosyasý açýlamadý\n" -#: arsup.c:305 arsup.c:374 arsup.c:453 +#: arsup.c:306 arsup.c:375 arsup.c:454 #, c-format msgid "%s: can't find module file %s\n" msgstr "%s: modül dosyasý %s bulunamadý\n" -#: arsup.c:405 +#: arsup.c:406 #, c-format msgid "Current open archive is %s\n" msgstr "Þimdiki açýk arþiv %s\n" -#: arsup.c:432 +#: arsup.c:433 #, c-format msgid "%s: no open archive\n" msgstr "%s: açýk arþiv yok\n" -#: bucomm.c:135 +#: bucomm.c:106 #, c-format msgid "can't set BFD default target to `%s': %s" msgstr "BFD öntanýmlý hedef `%s' olarak atanamadý: %s" -#: bucomm.c:147 +#: bucomm.c:118 #, c-format msgid "%s: Matching formats:" msgstr "%s: Eþleþen biçemler:" -#: bucomm.c:164 +#: bucomm.c:135 msgid "Supported targets:" msgstr "Desteklenen hedefler:" -#: bucomm.c:166 +#: bucomm.c:137 #, c-format msgid "%s: supported targets:" msgstr "%s: desteklenen hedefler:" -#: bucomm.c:272 +#: bucomm.c:153 +msgid "Supported architectures:" +msgstr "Desteklenen platformlar:" + +#: bucomm.c:155 +#, c-format +msgid "%s: supported architectures:" +msgstr "%s: desteklenen platformlar:" + +#: bucomm.c:262 #, c-format msgid "%s: bad number: %s" msgstr "%s: hatalý sayý: %s" -#: coffdump.c:94 +#: coffdump.c:106 #, c-format msgid "#lines %d " msgstr "#satýrlar %d " -#: coffdump.c:456 sysdump.c:719 +#: coffdump.c:468 sysdump.c:740 #, c-format msgid "%s: Print a human readable interpretation of a SYSROFF object file\n" msgstr "%s: SYSROFF nesne dosyasýný insan tarafýndan okunabilir biçemde yazdýrýr\n" -#: coffdump.c:498 srconv.c:1941 sysdump.c:755 -#, c-format -msgid "GNU %s version %s\n" -msgstr "GNU %s sürüm %s\n" - -#: coffdump.c:516 srconv.c:1975 sysdump.c:775 +#: coffdump.c:531 srconv.c:2029 sysdump.c:799 msgid "no input file specified" msgstr "girdi dosyasý belirtilmedi" @@ -426,518 +430,518 @@ msgstr "hata_ayýkla_gerçek_tipi_al: %s i msgid "debug_write_type: illegal type encountered" msgstr "hata_ayýkla_yaz_tipi: geçersiz tip bulundu" -#: dlltool.c:737 dlltool.c:762 dlltool.c:788 +#: dlltool.c:743 dlltool.c:768 dlltool.c:794 #, c-format msgid "Internal error: Unknown machine type: %d" msgstr "Ýç hata: Bilinmeyen makina tipi: %d" -#: dlltool.c:825 +#: dlltool.c:831 #, c-format msgid "Can't open def file: %s" msgstr "Taným dosyasý açýlamadý: %s" -#: dlltool.c:830 +#: dlltool.c:836 #, c-format msgid "Processing def file: %s" msgstr "Taným dosyasý iþleniyor: %s" -#: dlltool.c:834 +#: dlltool.c:840 msgid "Processed def file" msgstr "Taným dosyasý iþlendi" -#: dlltool.c:859 +#: dlltool.c:866 #, c-format msgid "Syntax error in def file %s:%d" msgstr "Taným dosyasý %s'nda sözdizim hatasý:%d" -#: dlltool.c:892 +#: dlltool.c:905 #, c-format msgid "NAME: %s base: %x" msgstr "ÝSÝM: %s temel: %x" -#: dlltool.c:895 dlltool.c:914 +#: dlltool.c:908 dlltool.c:927 msgid "Can't have LIBRARY and NAME" msgstr "KÝTAPLIK ve ÝSÝM beraber olamaz" -#: dlltool.c:911 +#: dlltool.c:924 #, c-format msgid "LIBRARY: %s base: %x" msgstr "KÝTAPLIK: %s temel: %x" -#: dlltool.c:1169 resrc.c:271 +#: dlltool.c:1182 resrc.c:271 #, c-format msgid "wait: %s" msgstr "bekle: %s" -#: dlltool.c:1174 dllwrap.c:456 resrc.c:276 +#: dlltool.c:1187 dllwrap.c:455 resrc.c:276 #, c-format msgid "subprocess got fatal signal %d" msgstr "Ast-iþlem %d ölümcül sinyalini aldý" -#: dlltool.c:1180 dllwrap.c:463 resrc.c:283 +#: dlltool.c:1193 dllwrap.c:462 resrc.c:283 #, c-format msgid "%s exited with status %d" msgstr "%s %d durumu ile çýktý" -#: dlltool.c:1212 +#: dlltool.c:1225 #, c-format msgid "Sucking in info from %s section in %s" msgstr "%2$s'in %1$s bölümünden bilgi emiliyor" -#: dlltool.c:1336 +#: dlltool.c:1349 #, c-format msgid "Excluding symbol: %s" msgstr "Sembol dýþlandý: %s" -#: dlltool.c:1431 dlltool.c:1442 nm.c:946 nm.c:957 objdump.c:443 objdump.c:460 +#: dlltool.c:1444 dlltool.c:1455 nm.c:958 nm.c:969 objdump.c:383 objdump.c:400 #, c-format msgid "%s: no symbols" msgstr "%s: sembol yok" #. FIXME: we ought to read in and block out the base relocations -#: dlltool.c:1469 +#: dlltool.c:1482 #, c-format msgid "Done reading %s" msgstr "%s okundu" -#: dlltool.c:1480 +#: dlltool.c:1493 #, c-format msgid "Unable to open object file: %s" msgstr "Nesne dosyasý açýlamadý: %s" -#: dlltool.c:1483 +#: dlltool.c:1496 #, c-format msgid "Scanning object file %s" msgstr "Nesne dosyasý %s taranýyor" -#: dlltool.c:1498 +#: dlltool.c:1511 #, c-format msgid "Cannot produce mcore-elf dll from archive file: %s" msgstr "Arþiv dosyasýndan mcore-elf dll oluþturulamadý: %s" -#: dlltool.c:1590 +#: dlltool.c:1603 msgid "Adding exports to output file" msgstr "Çýktý dosyasýna ihraçlar ekleniyor" -#: dlltool.c:1635 +#: dlltool.c:1648 msgid "Added exports to output file" msgstr "Çýktý dosyasýna ihraçlar eklendi" -#: dlltool.c:1759 +#: dlltool.c:1772 #, c-format msgid "Generating export file: %s" msgstr "Ýhraç dosyasý oluþturuluyor: %s" -#: dlltool.c:1764 +#: dlltool.c:1777 #, c-format msgid "Unable to open temporary assembler file: %s" msgstr "Geçiçi üretici dosyasý açýlamadý: %s" -#: dlltool.c:1767 +#: dlltool.c:1780 #, c-format msgid "Opened temporary file: %s" msgstr "Geçici dosya açýldý: %s" -#: dlltool.c:1981 +#: dlltool.c:2004 msgid "Generated exports file" msgstr "Ýhraç dosyasý oluþturuldu" -#: dlltool.c:2236 +#: dlltool.c:2266 #, c-format msgid "bfd_open failed open stub file: %s" msgstr "koçan dosyasý bfd_open ile açýlamadý: %s" -#: dlltool.c:2239 +#: dlltool.c:2269 #, c-format msgid "Creating stub file: %s" msgstr "Koçan dosyasý oluþturuluyor: %s" -#: dlltool.c:2626 +#: dlltool.c:2658 #, c-format msgid "failed to open temporary head file: %s" msgstr "geçici baþlýk dosyasý açýlamadý: %s" -#: dlltool.c:2685 +#: dlltool.c:2717 #, c-format msgid "failed to open temporary tail file: %s" msgstr "geçici kuyruk dosyasý açýlamadý: %s" -#: dlltool.c:2753 +#: dlltool.c:2785 #, c-format msgid "Can't open .lib file: %s" msgstr ".lib dosyasý açýlamadý: %s" -#: dlltool.c:2756 +#: dlltool.c:2788 #, c-format msgid "Creating library file: %s" msgstr "Kitaplýk dosyasý açýlamadý: %s" -#: dlltool.c:2815 +#: dlltool.c:2847 #, c-format msgid "cannot delete %s: %s" msgstr "%s silinemedi: %s" -#: dlltool.c:2819 +#: dlltool.c:2851 msgid "Created lib file" msgstr "Lib dosyasý oluþturuldu" -#: dlltool.c:2924 +#: dlltool.c:2956 #, c-format msgid "Warning, ignoring duplicate EXPORT %s %d,%d" msgstr "Uyarý, EXPORT tekrarý %s %d,%d yoksayýldý" -#: dlltool.c:2930 +#: dlltool.c:2962 #, c-format msgid "Error, duplicate EXPORT with oridinals: %s" msgstr "Hata, orjinal hali ile EXPORT tekrarý: %s" -#: dlltool.c:3057 +#: dlltool.c:3089 msgid "Processing definitions" msgstr "Tanýmlar iþleniyor" -#: dlltool.c:3095 +#: dlltool.c:3127 msgid "Processed definitions" msgstr "Tanýmlar iþlendi" #. xgetext:c-format -#: dlltool.c:3106 dllwrap.c:520 +#: dlltool.c:3138 dllwrap.c:519 #, c-format msgid "Usage %s \n" msgstr "Kullaným %s \n" #. xgetext:c-format -#: dlltool.c:3108 +#: dlltool.c:3140 #, c-format msgid " -m --machine Create as DLL for . [default: %s]\n" msgstr " -m --machine için DLL olarak oluþtur. [öntanýmlý: %s]\n" -#: dlltool.c:3109 +#: dlltool.c:3141 msgid " possible : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" msgstr " tanýmlý : arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n" -#: dlltool.c:3110 +#: dlltool.c:3142 msgid " -e --output-exp Generate an export file.\n" msgstr " -e --output-exp <çýktýadý> Ýhraç dosyasý oluþturur.\n" -#: dlltool.c:3111 +#: dlltool.c:3143 msgid " -l --output-lib Generate an interface library.\n" msgstr " -l --output-lib <çýktýadý> Arayüz kitaplýðý oluþturur.\n" -#: dlltool.c:3112 +#: dlltool.c:3144 msgid " -a --add-indirect Add dll indirects to export file.\n" msgstr " -a --add-indirect Ýhraç dosyasýna dll yönlendirmelerini ekler.\n" -#: dlltool.c:3113 +#: dlltool.c:3145 msgid " -D --dllname Name of input dll to put into interface lib.\n" msgstr " -D --dllname Arayüz kitaplýðýna eklenecek girdi dll adý.\n" -#: dlltool.c:3114 +#: dlltool.c:3146 msgid " -d --input-def Name of .def file to be read in.\n" msgstr " -d --input-def Okunacak .def dosyasýnýn adý.\n" -#: dlltool.c:3115 +#: dlltool.c:3147 msgid " -z --output-def Name of .def file to be created.\n" msgstr " -z --output-def Oluþturulacak .def dosyasýnýn adý.\n" -#: dlltool.c:3116 +#: dlltool.c:3148 msgid " --export-all-symbols Export all symbols to .def\n" msgstr " --export-all-symbols Bütün sembolleri .def'e ihraç eder\n" -#: dlltool.c:3117 +#: dlltool.c:3149 msgid " --no-export-all-symbols Only export listed symbols\n" msgstr " --no-export-all-symbols Yalnýzca listelenmiþ sembolleri ihraç eder\n" -#: dlltool.c:3118 +#: dlltool.c:3150 msgid " --exclude-symbols Don't export \n" msgstr " --exclude-symbols 'yi ihraç etmez\n" -#: dlltool.c:3119 +#: dlltool.c:3151 msgid " --no-default-excludes Clear default exclude symbols\n" msgstr " --no-default-excludes Öntanýmlý ihraç edilmeyecek sembol listesini boþaltýr\n" -#: dlltool.c:3120 +#: dlltool.c:3152 msgid " -b --base-file Read linker generated base file.\n" msgstr " -b --base-file Baðlayýcýnýn oluþturduðu temel dosyayý okur.\n" -#: dlltool.c:3121 +#: dlltool.c:3153 msgid " -x --no-idata4 Don't generate idata$4 section.\n" msgstr " -x --no-idata4 idata$4 bölümü oluþturmaz.\n" -#: dlltool.c:3122 +#: dlltool.c:3154 msgid " -c --no-idata5 Don't generate idata$5 section.\n" msgstr " -c --no-idata5 idata$5 bölümü oluþturmaz.\n" -#: dlltool.c:3123 +#: dlltool.c:3155 msgid " -U --add-underscore Add underscores to symbols in interface library.\n" msgstr " -U --add-underscore Arayüz kitaplýðýndaki sembollere alt-tire ekler.\n" -#: dlltool.c:3124 +#: dlltool.c:3156 msgid " -k --kill-at Kill @ from exported names.\n" msgstr " -k --kill-at Ýhraç edilmiþ isimlerden @'da öldürür.\n" -#: dlltool.c:3125 +#: dlltool.c:3157 msgid " -A --add-stdcall-alias Add aliases without @.\n" msgstr " -A --add-stdcall-alias Rumuzlarý @ içermeksizin ekler.\n" -#: dlltool.c:3126 +#: dlltool.c:3158 msgid " -S --as Use for assembler.\n" msgstr " -S --as Üretici olarak kullanýr.\n" -#: dlltool.c:3127 +#: dlltool.c:3159 msgid " -f --as-flags Pass to the assembler.\n" msgstr " -f --as-flags Üreticiye i geçirir.\n" -#: dlltool.c:3128 +#: dlltool.c:3160 msgid " -C --compat-implib Create backward compatible import library.\n" msgstr " -C --compat-implib Geçmiþe uyumlu ithal kitaplýðý oluþturur.\n" -#: dlltool.c:3129 +#: dlltool.c:3161 msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n" msgstr " -n --no-delete Geçici dosyalarý tutar (daha da koruyucu olmasý için tekrarlanabilir).\n" -#: dlltool.c:3130 +#: dlltool.c:3162 msgid " -v --verbose Be verbose.\n" msgstr " -v --verbose Açýklama verir.\n" -#: dlltool.c:3131 +#: dlltool.c:3163 msgid " -V --version Display the program version.\n" msgstr " -V --version Sürüm bilgilerini gösterir.\n" -#: dlltool.c:3132 +#: dlltool.c:3164 msgid " -h --help Display this information.\n" msgstr " -h --help Bu yardýmý gösterir.\n" -#: dlltool.c:3134 +#: dlltool.c:3166 msgid " -M --mcore-elf Process mcore-elf object files into .\n" msgstr " -M --mcore-elf <çýktý_adý> mcore-elf nesne dosyalarýný <çýktý_adý>'na iþler.\n" -#: dlltool.c:3135 +#: dlltool.c:3167 msgid " -L --linker Use as the linker.\n" msgstr " -L --linker Baðlayýcý olarak kullanýr.\n" -#: dlltool.c:3136 +#: dlltool.c:3168 msgid " -F --linker-flags Pass to the linker.\n" msgstr " -F --linker-flags i baðlayýcýya geçirir.\n" -#: dlltool.c:3280 +#: dlltool.c:3315 #, c-format msgid "Unable to open base-file: %s" msgstr "Temel-dosyasý açýlamadý: %s" -#: dlltool.c:3309 +#: dlltool.c:3344 #, c-format msgid "Machine '%s' not supported" msgstr "'%s' makinasý desteklenmiyor" -#: dlltool.c:3412 dllwrap.c:241 +#: dlltool.c:3447 dllwrap.c:240 #, c-format msgid "Tried file: %s" msgstr "Dosya denendi: %s" -#: dlltool.c:3419 dllwrap.c:248 +#: dlltool.c:3454 dllwrap.c:247 #, c-format msgid "Using file: %s" msgstr "Dosya kullanýlýyor: %s" -#: dllwrap.c:335 +#: dllwrap.c:334 #, c-format msgid "Keeping temporary base file %s" msgstr "Geçici temel dosya %s tutuldu" -#: dllwrap.c:337 +#: dllwrap.c:336 #, c-format msgid "Deleting temporary base file %s" msgstr "Geçici temel dosya %s silindi" -#: dllwrap.c:351 +#: dllwrap.c:350 #, c-format msgid "Keeping temporary exp file %s" msgstr "Geçici ihraç dosyasý %s tutuldu" -#: dllwrap.c:353 +#: dllwrap.c:352 #, c-format msgid "Deleting temporary exp file %s" msgstr "Geçici ihraç dosyasý %s silindi" -#: dllwrap.c:366 +#: dllwrap.c:365 #, c-format msgid "Keeping temporary def file %s" msgstr "Geçici taným dosyasý %s tutuldu" -#: dllwrap.c:368 +#: dllwrap.c:367 #, c-format msgid "Deleting temporary def file %s" msgstr "Geçici taným dosyasý %s silindi" -#: dllwrap.c:521 +#: dllwrap.c:520 msgid " Generic options:\n" msgstr " Genel seçenekler: \n" -#: dllwrap.c:522 +#: dllwrap.c:521 msgid " --quiet, -q Work quietly\n" msgstr " --quiet, -q Sessiz çalýþýr\n" -#: dllwrap.c:523 +#: dllwrap.c:522 msgid " --verbose, -v Verbose\n" msgstr " --verbose, -v Açýklamalý\n" -#: dllwrap.c:524 +#: dllwrap.c:523 msgid " --version Print dllwrap version\n" msgstr " --version dllwrap sürümünü yazdýrýr\n" -#: dllwrap.c:525 +#: dllwrap.c:524 msgid " --implib Synonym for --output-lib\n" msgstr " --implib <çýktý_adý> --output-lib ile eþanlamlý\n" -#: dllwrap.c:526 +#: dllwrap.c:525 #, c-format msgid " Options for %s:\n" msgstr " %s için seçenekler:\n" -#: dllwrap.c:527 +#: dllwrap.c:526 msgid " --driver-name Defaults to \"gcc\"\n" msgstr " --driver-name \"gcc\"ye öntanýmlý\n" -#: dllwrap.c:528 +#: dllwrap.c:527 msgid " --driver-flags Override default ld flags\n" msgstr " --driver-flags Öntanýmlý ld seçeneklerinin yerine geçer\n" -#: dllwrap.c:529 +#: dllwrap.c:528 msgid " --dlltool-name Defaults to \"dlltool\"\n" msgstr " --dlltool-name \"dlltool\"a öntanýmlý\n" -#: dllwrap.c:530 +#: dllwrap.c:529 msgid " --entry Specify alternate DLL entry point\n" msgstr " --entry Alternatif DLL giriþ noktasý belirtir\n" -#: dllwrap.c:531 +#: dllwrap.c:530 msgid " --image-base Specify image base address\n" msgstr " --image-base Ýmaj temel adresini belirtir\n" -#: dllwrap.c:532 +#: dllwrap.c:531 msgid " --target i386-cygwin32 or i386-mingw32\n" msgstr " --target hedef makina, i386-cygwin32 veya i386-mingw32\n" -#: dllwrap.c:533 +#: dllwrap.c:532 msgid " --dry-run Show what needs to be run\n" msgstr " --dry-run Çalýþtýrýlmasý gerekenleri gösterir\n" -#: dllwrap.c:534 +#: dllwrap.c:533 msgid " --mno-cygwin Create Mingw DLL\n" msgstr " --mno-cygwin Mingw DLL oluþturur\n" -#: dllwrap.c:535 +#: dllwrap.c:534 msgid " Options passed to DLLTOOL:\n" msgstr " DLLTOOL'a geçirilen seçenekler:\n" -#: dllwrap.c:536 +#: dllwrap.c:535 msgid " --machine \n" msgstr " --machine \n" -#: dllwrap.c:537 +#: dllwrap.c:536 msgid " --output-exp Generate export file.\n" msgstr " --output-exp <çýktý_adý> Ýhraç dosyasý oluþturur.\n" -#: dllwrap.c:538 +#: dllwrap.c:537 msgid " --output-lib Generate input library.\n" msgstr " --output-lib <çýktý_adý> Girdi kitaplýðý oluþturur.\n" -#: dllwrap.c:539 +#: dllwrap.c:538 msgid " --add-indirect Add dll indirects to export file.\n" msgstr " --add-indirect Dll yönlendirmelerini ihraç dosyasýna ekler.\n" -#: dllwrap.c:540 +#: dllwrap.c:539 msgid " --dllname Name of input dll to put into output lib.\n" msgstr " --dllname Çýktý kitaplýðýna konulacak girdi dll adý.\n" -#: dllwrap.c:541 +#: dllwrap.c:540 msgid " --def Name input .def file\n" msgstr " --def Girdi .def dosyasý adý\n" -#: dllwrap.c:542 +#: dllwrap.c:541 msgid " --output-def Name output .def file\n" msgstr " --output-def Çýktý .def dosyasýnýn adý\n" -#: dllwrap.c:543 +#: dllwrap.c:542 msgid " --export-all-symbols Export all symbols to .def\n" msgstr " --export-all-symbols Bütün sembolleri .def'e ihraç eder\n" -#: dllwrap.c:544 +#: dllwrap.c:543 msgid " --no-export-all-symbols Only export .drectve symbols\n" msgstr " --no-export-all-symbols Yalnýzca .drectve sembollerini ihraç eder\n" -#: dllwrap.c:545 +#: dllwrap.c:544 msgid " --exclude-symbols Exclude from .def\n" msgstr " --exclude-symbols deki sembolleri .def'e ihraç etmez\n" -#: dllwrap.c:546 +#: dllwrap.c:545 msgid " --no-default-excludes Zap default exclude symbols\n" msgstr " --no-default-excludes Dýþlanacak sembol öntanýmlarýný boþaltýr\n" -#: dllwrap.c:547 +#: dllwrap.c:546 msgid " --base-file Read linker generated base file\n" msgstr " --base-file Baðlayýcý tarafýndan oluþturulan temel dosyayý okur\n" -#: dllwrap.c:548 +#: dllwrap.c:547 msgid " --no-idata4 Don't generate idata$4 section\n" msgstr " --no-idata4 idata$4 bölümünü oluþturmaz\n" -#: dllwrap.c:549 +#: dllwrap.c:548 msgid " --no-idata5 Don't generate idata$5 section\n" msgstr " --no-idata5 idata$5 bölümünü oluþturmaz\n" -#: dllwrap.c:550 +#: dllwrap.c:549 msgid " -U Add underscores to .lib\n" msgstr " -U .lib'e alt-tire ekler\n" -#: dllwrap.c:551 +#: dllwrap.c:550 msgid " -k Kill @ from exported names\n" msgstr " -k @'i ihraç edilmiþ isimlerden çýkartýr\n" -#: dllwrap.c:552 +#: dllwrap.c:551 msgid " --add-stdcall-alias Add aliases without @\n" msgstr " --add-stdcall-alias Rumuzlarý @ olmaksýzýn ekler\n" -#: dllwrap.c:553 +#: dllwrap.c:552 msgid " --as Use for assembler\n" msgstr " --as Üretici olarak 'i kullanýr\n" -#: dllwrap.c:554 +#: dllwrap.c:553 msgid " --nodelete Keep temp files.\n" msgstr " --nodelete Geçici dosyalarý tutar.\n" -#: dllwrap.c:555 +#: dllwrap.c:554 msgid " Rest are passed unmodified to the language driver\n" msgstr " Kalanlar dil sürücüsüne deðiþtirilmeksizin geçirilir\n" -#: dllwrap.c:816 +#: dllwrap.c:824 msgid "Must provide at least one of -o or --dllname options" msgstr "-o veya --dllname (dll adý) seçeneklerinin en azýndan bir tanesi belirtilmelidir" -#: dllwrap.c:844 -msgid "no export definition file provided" -msgstr "ihraç taným dosyasý verilmemiþ" - -#: dllwrap.c:845 -msgid "creating one, but that may not be what you want" -msgstr "bir tane oluþturuluyor fakat istediðiniz bu olmayabilir" +#: dllwrap.c:852 +msgid "" +"no export definition file provided.\n" +"Creating one, but that may not be what you want" +msgstr "" +"ihraç taným dosyasý verilmemiþ.\n" +"Bir tane oluþturuluyor fakat istediðiniz bu olmayabilir" -#: dllwrap.c:1006 +#: dllwrap.c:1014 #, c-format msgid "DLLTOOL name : %s\n" msgstr "DLLTOOL adý : %s\n" -#: dllwrap.c:1007 +#: dllwrap.c:1015 #, c-format msgid "DLLTOOL options : %s\n" msgstr "DLLTOOL seçenekleri : %s\n" -#: dllwrap.c:1008 +#: dllwrap.c:1016 #, c-format msgid "DRIVER name : %s\n" msgstr "SÜRÜCÜ adý : %s\n" -#: dllwrap.c:1009 +#: dllwrap.c:1017 #, c-format msgid "DRIVER options : %s\n" msgstr "SÜRÜCÜ seçenekleri : %s\n" @@ -1162,134 +1166,134 @@ msgstr "IEEE sayýsal taþma: 0x" msgid "IEEE string length overflow: %u\n" msgstr "IEEE dizge uzunluk taþmasý: %u\n" -#: ieee.c:5324 +#: ieee.c:5333 #, c-format msgid "IEEE unsupported integer type size %u\n" msgstr "IEEE desteklenmeyen tamsayý tip boyu %u\n" -#: ieee.c:5360 +#: ieee.c:5369 #, c-format msgid "IEEE unsupported float type size %u\n" msgstr "IEEE desteklenmeyen gerçel tip boyu %u\n" -#: ieee.c:5396 +#: ieee.c:5405 #, c-format msgid "IEEE unsupported complex type size %u\n" msgstr "IEEE desteklenmeyen karmaþýk tip boyu %u\n" -#: nlmconv.c:275 srconv.c:1966 +#: nlmconv.c:278 srconv.c:2020 msgid "input and output files must be different" msgstr "girdi ve çýktý dosyalarý farklý olmalý" -#: nlmconv.c:322 +#: nlmconv.c:325 msgid "input file named both on command line and with INPUT" msgstr "girdi dosyasý ismi hem komut satýrýnda hem INPUT olarak verilmiþ" -#: nlmconv.c:331 +#: nlmconv.c:334 msgid "no input file" msgstr "girdi dosyasý yok" -#: nlmconv.c:361 +#: nlmconv.c:364 msgid "no name for output file" msgstr "çýktý dosyasý için isim yok" -#: nlmconv.c:374 +#: nlmconv.c:377 msgid "warning: input and output formats are not compatible" msgstr "uyarý: girdi ve çýktý biçemleri uyumlu deðil" -#: nlmconv.c:403 +#: nlmconv.c:406 msgid "make .bss section" msgstr ".bss bölümü oluþtur" -#: nlmconv.c:412 +#: nlmconv.c:415 msgid "make .nlmsections section" msgstr ".nlmsections bölümü oluþtur" -#: nlmconv.c:414 +#: nlmconv.c:417 msgid "set .nlmsections flags" msgstr ".nlmsections seçenekleri atar" -#: nlmconv.c:442 +#: nlmconv.c:445 msgid "set .bss vma" msgstr ".bss vma atar" -#: nlmconv.c:449 +#: nlmconv.c:452 msgid "set .data size" msgstr ".data boyu atar" -#: nlmconv.c:629 +#: nlmconv.c:632 #, c-format msgid "warning: symbol %s imported but not in import list" msgstr "uyarý: %s sembolü ithal edildi ama ithal listesinde deðil" -#: nlmconv.c:649 +#: nlmconv.c:652 msgid "set start address" msgstr "baþlangýç adresini atar" -#: nlmconv.c:698 +#: nlmconv.c:701 #, c-format msgid "warning: START procedure %s not defined" msgstr "uyarý: START altyordamý %s tanýmsýz" -#: nlmconv.c:700 +#: nlmconv.c:703 #, c-format msgid "warning: EXIT procedure %s not defined" msgstr "uyarý: EXIT altyordamý %s tanýmsýz" -#: nlmconv.c:702 +#: nlmconv.c:705 #, c-format msgid "warning: CHECK procedure %s not defined" msgstr "warning: CHECK altyordamý %s tanýmsýz" -#: nlmconv.c:723 nlmconv.c:912 +#: nlmconv.c:726 nlmconv.c:915 msgid "custom section" msgstr "özel bölüm" -#: nlmconv.c:744 nlmconv.c:941 +#: nlmconv.c:747 nlmconv.c:944 msgid "help section" msgstr "yardým bölümü" -#: nlmconv.c:766 nlmconv.c:959 +#: nlmconv.c:769 nlmconv.c:962 msgid "message section" msgstr "ileti bölümü" -#: nlmconv.c:782 nlmconv.c:992 +#: nlmconv.c:785 nlmconv.c:995 msgid "module section" msgstr "modül bölümü" -#: nlmconv.c:802 nlmconv.c:1008 +#: nlmconv.c:805 nlmconv.c:1011 msgid "rpc section" msgstr "rpc bölümü" #. There is no place to record this information. -#: nlmconv.c:838 +#: nlmconv.c:841 #, c-format msgid "%s: warning: shared libraries can not have uninitialized data" msgstr "%s: uyarý: paylaþýmlý kitaplýklar öndeðer atanmamýþ veri kapsayamaz" -#: nlmconv.c:859 nlmconv.c:1027 +#: nlmconv.c:862 nlmconv.c:1030 msgid "shared section" msgstr "paylaþýmlý bölüm" -#: nlmconv.c:867 +#: nlmconv.c:870 msgid "warning: No version number given" msgstr "uyarý: Sürüm numarasý verilmemiþ" -#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022 +#: nlmconv.c:910 nlmconv.c:939 nlmconv.c:957 nlmconv.c:1006 nlmconv.c:1025 #, c-format msgid "%s: read: %s" msgstr "%s: okundu: %s" -#: nlmconv.c:929 +#: nlmconv.c:932 msgid "warning: MAP and FULLMAP are not supported; try ld -M" msgstr "uyarý: MAP ve FULLMAP desteklenmiyor; ld -M komutunu deneyin" -#: nlmconv.c:1099 +#: nlmconv.c:1101 #, c-format msgid "%s: Convert an object file into a NetWare Loadable Module\n" msgstr "%s: Bir nesne dosyasýný NetWare Yüklenebilir Modül haline getirir\n" -#: nlmconv.c:1111 +#: nlmconv.c:1113 #, c-format msgid "" "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n" @@ -1309,73 +1313,73 @@ msgstr "" " [--version] sürüm bilgisini gösterir\n" " [girdi-dosyasý [çýktý-dosyasý]]\n" -#: nlmconv.c:1151 +#: nlmconv.c:1153 #, c-format msgid "support not compiled in for %s" msgstr "%s için destek derlenmemiþ" -#: nlmconv.c:1191 +#: nlmconv.c:1193 msgid "make section" msgstr "bölüm oluþtur" -#: nlmconv.c:1205 +#: nlmconv.c:1207 msgid "set section size" msgstr "bölüm boyu belirtir" -#: nlmconv.c:1211 +#: nlmconv.c:1213 msgid "set section alignment" msgstr "bölüm hizalanmasý atar" -#: nlmconv.c:1215 +#: nlmconv.c:1217 msgid "set section flags" msgstr "bölüm seçeneklerini atar" -#: nlmconv.c:1226 +#: nlmconv.c:1228 msgid "set .nlmsections size" msgstr ".nlmsections boyunu atar" -#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336 +#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338 msgid "set .nlmsection contents" msgstr ".nlmsection içeriðini atar" -#: nlmconv.c:1839 +#: nlmconv.c:1841 msgid "stub section sizes" msgstr "koçan bölüm boylarý" -#: nlmconv.c:1888 +#: nlmconv.c:1890 msgid "writing stub" msgstr "koçan yazýlýyor" -#: nlmconv.c:1978 +#: nlmconv.c:1980 #, c-format msgid "unresolved PC relative reloc against %s" msgstr "%s'e göreli PC yer deðiþtirme çözümlenemedi" -#: nlmconv.c:2042 +#: nlmconv.c:2044 #, c-format msgid "overflow when adjusting relocation against %s" msgstr "%s'e göreli yer deðiþtirme ayarlanýrken taþma oluþtu" -#: nlmconv.c:2159 +#: nlmconv.c:2161 #, c-format msgid "%s: execution of %s failed: " msgstr "%s: %s'in çalýþtýrýlmasý baþarýsýz oldu: " -#: nlmconv.c:2174 +#: nlmconv.c:2176 #, c-format msgid "Execution of %s failed" msgstr "%s'in çalýþtýrýlmasý baþarýsýz oldu" -#: nm.c:294 +#: nm.c:300 #, c-format msgid "Usage: %s [OPTION]... [FILE]...\n" msgstr "Kullaným: %s [SEÇENEK]... [DOSYA]...\n" -#: nm.c:295 +#: nm.c:301 msgid "List symbols from FILEs (a.out by default).\n" msgstr "DOSYAlardaki sembolleri listeler (öntanýmlý a.out).\n" -#: nm.c:296 +#: nm.c:302 msgid "" "\n" " -a, --debug-syms Display debugger-only symbols\n" @@ -1439,43 +1443,43 @@ msgstr "" " -X 32_64 (yoksayýlýr)\n" "\n" -#: nm.c:328 objdump.c:274 +#: nm.c:334 objdump.c:216 #, c-format msgid "Report bugs to %s.\n" msgstr "" "Hatalarý %s adresine, \n" "çeviri hatalarýný adresine bildiriniz.\n" -#: nm.c:361 +#: nm.c:367 #, c-format msgid "%s: invalid radix" msgstr "%s: geçersiz radix" -#: nm.c:386 +#: nm.c:392 #, c-format msgid "%s: invalid output format" msgstr "%s: geçersiz çýktý biçemi" -#: nm.c:493 +#: nm.c:504 msgid "Only -X 32_64 is supported" msgstr "Yalnýz -X 32_64 destekleniyor" -#: nm.c:535 +#: nm.c:546 #, c-format msgid "data size %ld" msgstr "veri büyüklüðü %ld" -#: nm.c:1325 +#: nm.c:1340 #, c-format msgid "\n\nUndefined symbols from %s:\n\n" msgstr "\n\n%s'de tanýmlanmamýþ semboller:\n\n" -#: nm.c:1327 +#: nm.c:1342 #, c-format msgid "\n\nSymbols from %s:\n\n" msgstr "\n\n%s'de semboller:\n\n" -#: nm.c:1328 nm.c:1382 +#: nm.c:1343 nm.c:1397 msgid "Name Value Class Type Size Line Section\n\n" msgstr "" "Name Value Class Type Size Line Section\n" @@ -1483,33 +1487,34 @@ msgstr "" "Ýsim Deðer Sýnýf Tip Boy Satýr Bölüm\n" "\n" -#: nm.c:1379 +#: nm.c:1394 #, c-format msgid "\n\nUndefined symbols from %s[%s]:\n\n" msgstr "\n\n%s[%s]'de tanýmlanmamýþ semboller:\n\n" -#: nm.c:1381 +#: nm.c:1396 #, c-format msgid "\n\nSymbols from %s[%s]:\n\n" msgstr "\n\n%s[%s]'de semboller:\n\n" -#: nm.c:1552 +#: nm.c:1564 msgid "\nArchive index:\n" msgstr "\nArþiv endeksi:\n" -#: objcopy.c:322 +#: objcopy.c:363 #, c-format -msgid "Usage: %s in-file [out-file]\n" +msgid "Usage: %s in-file [out-file]\n" msgstr "Kullaným: %s girdi-dosyasý [çýktý-dosyasý]\n" -#: objcopy.c:323 objcopy.c:383 -msgid " The switches are:\n" -msgstr " Seçenekler:\n" +#: objcopy.c:364 objcopy.c:433 +msgid " The options are:\n" +msgstr " Seçenekler:\n" -#: objcopy.c:324 +#: objcopy.c:365 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format \n" +" -B --binary-architecture Set arch of output file, when input is binary\n" " -F --target Set both input and output format to \n" " --debugging Convert debugging information, if possible\n" " -p --preserve-dates Copy modified/access timestamps to the output\n" @@ -1521,6 +1526,7 @@ msgid "" " -N --strip-symbol Do not copy symbol \n" " -K --keep-symbol Only copy symbol \n" " -L --localize-symbol Force symbol to be marked as a local\n" +" -G --keep-global-symbol Localize all symbols except \n" " -W --weaken-symbol Force symbol to be marked as a weak\n" " --weaken Force all global symbols to be marked as weak\n" " -x --discard-all Remove all non-global symbols\n" @@ -1545,67 +1551,110 @@ msgid "" " --set-section-flags =\n" " Set section 's properties to \n" " --add-section = Add section found in to output\n" +" --rename-section =[,] Rename section to \n" " --change-leading-char Force output format's leading character style\n" " --remove-leading-char Remove leading character from global symbols\n" " --redefine-sym = Redefine symbol name to \n" " --srec-len Restrict the length of generated Srecords\n" " --srec-forceS3 Restrict the type of generated Srecords to S3\n" +" --strip-symbols -N for all symbols listed in \n" +" --keep-symbols -K for all symbols listed in \n" +" --localize-symbols -L for all symbols listed in \n" +" --keep-global-symbols -G for all symbols listed in \n" +" --weaken-symbols -W for all symbols listed in \n" +" --alt-machine-code Use alternate machine code for output\n" " -v --verbose List all object files modified\n" " -V --version Display this program's version number\n" " -h --help Display this output\n" msgstr "" -" -I --input-target Girdi dosyasýnýn biçeminde olduðunu varsayar\n" -" -O --output-target Çýktý dosyasýný biçeminde oluþturur\n" -" -F --target Hem girdi, hem de çýktý biçemini olarak atar\n" -" --debugging Mümkün olduðu kadar hata ayýklama bilgisini dönüþtürür\n" -" -p --preserve-dates Çýktýya deðiþim/eriþim zaman damgalarýný kopyalar\n" +" -I --input-target Girdi dosyasýnýn biçeminde\n" +" olduðunu varsayar\n" +" -O --output-target Çýktý dosyasýný biçeminde\n" +" oluþturur\n" +" -B --binary-architecture Girdi ikilik biçeminde olduðu zaman çýktý\n" +" dosyasýnýn platformunu belirler.\n" +" -F --target Hem girdi, hem de çýktý biçemini \n" +" olarak atar\n" +" --debugging Mümkün olduðu kadar hata ayýklama\n" +" bilgisini dönüþtürür\n" +" -p --preserve-dates Çýktýya deðiþim/eriþim zaman damgalarýný\n" +" kopyalar\n" " -j --only-section Çýktýya yalnýzca bölümünü kopyalar\n" " -R --remove-section Çýktýdan bölümünü çýkarýr\n" -" -S --strip-all Bütün sembol ve yer deðiþtirme bilgisini siler\n" +" -S --strip-all Bütün sembol ve yer deðiþtirme bilgisini\n" +" siler\n" " -g --strip-debug Bütün hata ayýklama sembollerini siler\n" -" --strip-unneeded Yer deðiþtirmeler için gerekmeyen bütün sembolleri siler\n" +" --strip-unneeded Yer deðiþtirmeler için gerekmeyen bütün\n" +" sembolleri siler\n" " -N --strip-symbol sembolünü kopyalamaz\n" " -K --keep-symbol Yalnýzca sembolünü kopyalar\n" -" -L --localize-symbol sembolünün yerel olarak tanýmlanmasýný saðlar\n" -" -W --weaken-symbol sembolünün zayýf olarak tanýmlanmasýný saðlar\n" -" --weaken Bütün evrensel sembollerin zayýf olarak tanýmlanmasýný saðlar\n" +" -L --localize-symbol sembolünün yerel olarak\n" +" tanýmlanmasýný saðlar\n" +" -G --keep-global-symbol haricindeki bütün sembolleri\n" +" yerelleþtirir.\n" +" -W --weaken-symbol sembolünün zayýf olarak\n" +" tanýmlanmasýný saðlar\n" +" --weaken Bütün evrensel sembollerin zayýf olarak\n" +" tanýmlanmasýný saðlar\n" " -x --discard-all Evrensel olmayan bütün sembolleri siler\n" -" -X --discard-locals Derleyici tarafýndan oluþturulan bütün sembolleri siler\n" +" -X --discard-locals Derleyici tarafýndan oluþturulan bütün\n" +" sembolleri siler\n" " -i --interleave Her bayttan yalnýz birini kopyalar\n" -" -b --byte Her serpiþtirilmiþ bloktan numaralý baytý seçer\n" -" --gap-fill Bölümler arasý boþluklarý ile doldurur\n" +" -b --byte Her serpiþtirilmiþ bloktan numaralý\n" +" baytý seçer\n" +" --gap-fill Bölümler arasý boþluklarý ile\n" +" doldurur\n" " --pad-to Son bölümü e kadar boþlukla doldurur\n" " --set-start Baþlangýç adresini olarak belirtir\n" " {--change-start|--adjust-start} \n" " Baþlangýç adresine ekler\n" " {--change-addresses|--adjust-vma} \n" -" LMA, VMA ve baþlangýç adreslerine ekler\n" +" LMA, VMA ve baþlangýç adreslerine \n" +" ekler\n" " {--change-section-address|--adjust-section-vma} {=|+|-}\n" -" bölümünün LMA ve VMA'sýný kadar deðiþtirir\n" +" bölümünün LMA ve VMA'sýný \n" +" kadar deðiþtirir\n" " --change-section-lma {=|+|-}\n" -" bölümünün LMA'sýný kadar deðiþtirir\n" +" bölümünün LMA'sýný kadar\n" +" deðiþtirir\n" " --change-section-vma {=|+|-}\n" -" bölümünün VMA'sýný kadar deðiþtirir\n" +" bölümünün VMA'sýný kadar\n" +" deðiþtirir\n" " {--[no-]change-warnings|--[no-]adjust-warnings}\n" " Eðer isimli bir bölüm yok ise uyarý verir\n" " --set-section-flags =\n" -" bölümünün özniteliklerini e ayarlar\n" -" --add-section = içinde bulunan bölümünü çýktýya ekler\n" -" --change-leading-char Çýktý biçeminin baþlangýç karakter tipini deðiþtiri\n" -" --remove-leading-char Evrensel sembollerden baþlangýç karakterini çýkarýr\n" -" --redefine-sym = isimli sembolü isimli olarak yeniden tanýmlar\n" -" --srec-len Oluþturulan S kayýtlarýnýn boyutunu kýsýtlar\n" -" --srec-forceS3 Oluþturulan S kayýtlarý tipini S3 olarak kýsýtlar\n" +" bölümünün özniteliklerini\n" +" e ayarlar\n" +" --add-section = içinde bulunan bölümünü\n" +" çýktýya ekler\n" +" --rename-section =[,] bölümünü olarak\n" +" yeniden adlandýrýr\n" +" --change-leading-char Çýktý biçeminin baþlangýç karakter tipini\n" +" deðiþtirir\n" +" --remove-leading-char Evrensel sembollerden baþlangýç\n" +" karakterini çýkarýr\n" +" --redefine-sym = isimli sembolü isimli olarak\n" +" yeniden tanýmlar\n" +" --srec-len Oluþturulan S kayýtlarýnýn boyutunu\n" +" kýsýtlar\n" +" --srec-forceS3 Oluþturulan S kayýtlarý tipini S3 olarak\n" +" kýsýtlar\n" +" --strip-symbols daki bütün semboller için -N uygular\n" +" --keep-symbols daki bütün semboller için -K uygular\n" +" --localize-symbols daki bütün semboller için -L uygular\n" +" --keep-global-symbols daki bütün semboller için -G uygular\n" +" --weaken-symbols daki bütün semboller için -W uygular\n" +" --alt-machine-code Çýktý için alternatif makina kodu kullanýr\n" " -v --verbose Deðiþtirilen tüm nesne dosyalarýný listeler\n" " -V --version Bu yazýlýmýn sürüm bilgilerini gösterir\n" " -h --help Bu çýktýyý gösterir\n" -#: objcopy.c:382 +#: objcopy.c:432 #, c-format -msgid "Usage: %s in-file(s)\n" +msgid "Usage: %s in-file(s)\n" msgstr "Kullaným: %s girdi-dosya(larý)\n" -#: objcopy.c:384 +#: objcopy.c:434 msgid "" " -I --input-target Assume input file is in format \n" " -O --output-target Create an output file in format \n" @@ -1641,176 +1690,213 @@ msgstr "" " -h --help Bu çýktýyý gösterir\n" " -o Sembolleri silinmiþ çýktýyý ya yerleþtirir\n" -#: objcopy.c:454 +#: objcopy.c:504 #, c-format msgid "unrecognized section flag `%s'" msgstr "bilinmeyen bölüm seçeneði `%s'" -#: objcopy.c:455 +#: objcopy.c:505 #, c-format msgid "supported flags: %s" msgstr "desteklenen seçenekler: %s" -#: objcopy.c:712 +#: objcopy.c:582 objcopy.c:2206 +#, c-format +msgid "cannot stat: %s: %s" +msgstr "durumlanamadý: %s: %s" + +#: objcopy.c:589 objcopy.c:2224 +#, c-format +msgid "cannot open: %s: %s" +msgstr "açýlamadý: %s: %s" + +#: objcopy.c:592 objcopy.c:2228 +#, c-format +msgid "%s: fread failed" +msgstr "%s: fread baþarýsýz" + +#: objcopy.c:665 +#, c-format +msgid "Ignoring rubbish found on line %d of %s" +msgstr "%2$s içinde %1$d satýrýnda bulunan bozukluk yoksayýldý" + +#: objcopy.c:886 #, c-format msgid "%s: Multiple redefinition of symbol \"%s\"" msgstr "%s: \"%s\" sembolü tekrar tanýmlanmýþ" -#: objcopy.c:719 +#: objcopy.c:891 #, c-format msgid "%s: Symbol \"%s\" is target of more than one redefinition" msgstr "%s: \"%s\" sembolü birden fazla yeniden tanýmlamanýn hedefi" -#: objcopy.c:773 +#: objcopy.c:943 +msgid "Unable to change endianness of input file(s)" +msgstr "Girdi dosyanýn küçük/büyük sonluluðu deðiþtirilemedi" + +#: objcopy.c:951 #, c-format msgid "copy from %s(%s) to %s(%s)\n" msgstr "%s(%s)'dan %s(%s)'a kopyalar\n" -#: objcopy.c:792 +#: objcopy.c:975 #, c-format msgid "Warning: Output file cannot represent architecture %s" msgstr "Uyarý: Çýktý dosyasý %s mimarisini temsil edemez" -#: objcopy.c:819 +#: objcopy.c:1002 #, c-format msgid "can't create section `%s': %s" msgstr "`%s' bölümü oluþturulamadý: %s" -#: objcopy.c:905 +#: objcopy.c:1088 #, c-format msgid "Can't fill gap after %s: %s" msgstr "%s'den sonraki boþluk doldurulamadý: %s" -#: objcopy.c:930 +#: objcopy.c:1113 #, c-format msgid "Can't add padding to %s: %s" msgstr "%s'ye dolgu eklenemedi: %s" -#: objcopy.c:1068 +#: objcopy.c:1252 #, c-format msgid "%s: error copying private BFD data: %s" msgstr "%s: özel BFD verisi kopyalanýrken hata: %s" -#: objcopy.c:1102 +#: objcopy.c:1265 +msgid "unknown alternate machine code, ignored" +msgstr "bilinmeyen alternatif makina kodu, yoksayýldý" + +#: objcopy.c:1295 #, c-format msgid "cannot mkdir %s for archive copying (error: %s)" msgstr "arþiv kopyalamasý için mkdir %s baþarýlý olamadý (hata: %s)" -#: objcopy.c:1291 +#: objcopy.c:1466 +#, c-format +msgid "Multiple renames of section %s" +msgstr "%s bölümünde birden fazla yeniden isimleme" + +#: objcopy.c:1550 msgid "making" msgstr "oluþturuluyor" -#: objcopy.c:1300 +#: objcopy.c:1559 msgid "size" msgstr "boyut" -#: objcopy.c:1314 +#: objcopy.c:1573 msgid "vma" msgstr "vma" -#: objcopy.c:1340 +#: objcopy.c:1599 msgid "alignment" msgstr "hizalama" -#: objcopy.c:1349 +#: objcopy.c:1607 msgid "flags" msgstr "seçenekler" -#: objcopy.c:1363 +#: objcopy.c:1624 msgid "private data" msgstr "özel veri" -#: objcopy.c:1371 +#: objcopy.c:1632 #, c-format msgid "%s: section `%s': error in %s: %s" msgstr "%s: bölüm `%s': %s'da hata: %s" -#: objcopy.c:1645 +#: objcopy.c:1910 #, c-format msgid "%s: can't create debugging section: %s" msgstr "%s: hata ayýklama bölümü oluþturulamadý: %s" -#: objcopy.c:1660 +#: objcopy.c:1925 #, c-format msgid "%s: can't set debugging section contents: %s" msgstr "%s: hata ayýklama bölüm içeriði atanamadý: %s" -#: objcopy.c:1669 +#: objcopy.c:1934 #, c-format msgid "%s: don't know how to write debugging information for %s" msgstr "%s: %s için hata ayýklama bilgisinin nasýl yazýlacaðý bilinmiyor" -#: objcopy.c:1775 +#: objcopy.c:2041 #, c-format msgid "%s: cannot stat: %s" msgstr "%s: durumlanamadý: %s" -#: objcopy.c:1825 +#: objcopy.c:2092 msgid "byte number must be non-negative" msgstr "bayt numarasý negatif olmamalý" -#: objcopy.c:1831 +#: objcopy.c:2102 msgid "interleave must be positive" msgstr "serpiþtirme pozitif olmalý" -#: objcopy.c:1851 objcopy.c:1859 +#: objcopy.c:2122 objcopy.c:2130 #, c-format msgid "%s both copied and removed" msgstr "%s hem kopyalandý hem silindi" -#: objcopy.c:1928 objcopy.c:1998 objcopy.c:2099 objcopy.c:2127 +#: objcopy.c:2203 objcopy.c:2273 objcopy.c:2373 objcopy.c:2400 objcopy.c:2424 +#: objcopy.c:2428 objcopy.c:2448 #, c-format msgid "bad format for %s" msgstr "%s için hatalý biçem" -#: objcopy.c:1931 -#, c-format -msgid "cannot stat: %s: %s" -msgstr "durumlanamadý: %s: %s" - -#: objcopy.c:1949 -#, c-format -msgid "cannot open: %s: %s" -msgstr "açýlamadý: %s: %s" - -#: objcopy.c:1953 -#, c-format -msgid "%s: fread failed" -msgstr "%s: fread baþarýsýz" - -#: objcopy.c:2067 +#: objcopy.c:2342 #, c-format msgid "Warning: truncating gap-fill from 0x%s to 0x%x" msgstr "Uyarý: dolgu, 0x%s'dan 0x%x'ya kýrpýldý" -#: objcopy.c:2169 +#: objcopy.c:2494 +msgid "alternate machine code index must be positive" +msgstr "alternatif makina kodu indeksi pozitif olmalý" + +#: objcopy.c:2512 msgid "byte number must be less than interleave" msgstr "bayt numarasý serpiþtirmeden daha küçük olmalý" -#: objcopy.c:2188 +#: objcopy.c:2539 +#, c-format +msgid "architecture %s unknown" +msgstr "%s platformu bilinmiyor" + +#: objcopy.c:2543 +msgid "Warning: input target 'binary' required for binary architecture parameter." +msgstr "Uyarý: ikilik platform parametresi için ikilik (`binary') girdi hedefi gerekli." + +#: objcopy.c:2544 +#, c-format +msgid " Argument %s ignored" +msgstr " %s argümaný yoksayýldý" + +#: objcopy.c:2550 #, c-format msgid "Cannot stat: %s: %s" msgstr "Durumlanamadý: %s: %s" -#: objcopy.c:2228 objcopy.c:2242 +#: objcopy.c:2590 objcopy.c:2604 #, c-format msgid "%s %s%c0x%s never used" msgstr "%s %s%c0x%s hiç kullanýlmadý" -#: objdump.c:223 +#: objdump.c:164 #, c-format msgid "Usage: %s OPTION... FILE...\n" msgstr "Kullaným: %s SEÇENEK... DOSYA...\n" -#: objdump.c:224 +#: objdump.c:165 msgid "Display information from object FILE.\n" msgstr "Nesne DOSYA'sýndan bilgi gösterir.\n" -#: objdump.c:225 +#: objdump.c:166 msgid "\n At least one of the following switches must be given:\n" msgstr "\n En azýndan aþaðýdaki seçeneklerin biri verilmelidir:\n" -#: objdump.c:226 +#: objdump.c:167 msgid "" " -a, --archive-headers Display archive header information\n" " -f, --file-headers Display the contents of the overall file header\n" @@ -1850,11 +1936,11 @@ msgstr "" " -i, --info Desteklenen biçem ve mimarileri gösterir\n" " -H, --help Bu bilgiyi gösterir\n" -#: objdump.c:248 +#: objdump.c:189 msgid "\n The following switches are optional:\n" msgstr "\n Aþaðýdaki seçenekler isteðe baðlý:\n" -#: objdump.c:249 +#: objdump.c:190 msgid "" " -b, --target=BFDNAME Specify the target object format as BFDNAME\n" " -m, --architecture=MACHINE Specify the target architecture as MACHINE\n" @@ -1896,120 +1982,120 @@ msgstr "" " --adjust-vma=BASAMAK Bütün gösterilen bölüm adreslerine BASAMAK ekler\n" "\n" -#: objdump.c:419 +#: objdump.c:359 msgid "Sections:\n" msgstr "Bölümler:\n" -#: objdump.c:422 +#: objdump.c:362 msgid "Idx Name Size VMA LMA File off Algn" msgstr "Idx Adý Boy VMA LMA Dosya of Hiza" -#: objdump.c:424 +#: objdump.c:364 msgid "Idx Name Size VMA LMA File off Algn" msgstr "Idx Adý Boy VMA LMA Dosya of Hiza" -#: objdump.c:428 +#: objdump.c:368 msgid " Flags" msgstr " Seçenekler" -#: objdump.c:478 +#: objdump.c:418 #, c-format msgid "%s: not a dynamic object" msgstr "%s: dinamik nesne deðil" -#: objdump.c:494 +#: objdump.c:434 #, c-format msgid "%s: No dynamic symbols" msgstr "%s: Dinamik sembol yok" -#: objdump.c:1197 +#: objdump.c:1124 msgid "Out of virtual memory" msgstr "Sanal bellek tükendi" -#: objdump.c:1616 +#: objdump.c:1553 #, c-format msgid "Can't use supplied machine %s" msgstr "Verilen makina %s kullanýlamadý" -#: objdump.c:1634 +#: objdump.c:1571 #, c-format msgid "Can't disassemble for architecture %s\n" msgstr "%s mimarisi için karþýt çevirim yapýlamadý\n" -#: objdump.c:1716 +#: objdump.c:1653 #, c-format msgid "Disassembly of section %s:\n" msgstr "%s bölümünün karþýt çevrimi:\n" -#: objdump.c:1890 +#: objdump.c:1828 #, c-format msgid "No %s section present\n\n" msgstr "%s bölümü yok\n\n" -#: objdump.c:1897 +#: objdump.c:1835 #, c-format msgid "%s has no %s section" msgstr "%s %s bölümü yok" -#: objdump.c:1911 +#: objdump.c:1849 #, c-format msgid "Reading %s section of %s failed: %s" msgstr "%2$s'nin %1$s bölümünün okunmasý baþarýsýz: %3$s" -#: objdump.c:1923 +#: objdump.c:1861 #, c-format msgid "Reading %s section of %s failed: %s\n" msgstr "%2$s'nin %1$s bölümünün okunmasý baþarýsýz: %3$s\n" -#: objdump.c:1966 +#: objdump.c:1904 #, c-format msgid "Contents of %s section:\n\n" msgstr "%s bölümünün içeriði:\n\n" -#: objdump.c:2066 +#: objdump.c:2004 #, c-format msgid "architecture: %s, " msgstr "mimari: %s," -#: objdump.c:2069 +#: objdump.c:2007 #, c-format msgid "flags 0x%08x:\n" msgstr "seçenekler 0x%08x:\n" -#: objdump.c:2082 +#: objdump.c:2020 msgid "\nstart address 0x" msgstr "\nbaþlangýç adresi 0x" -#: objdump.c:2114 +#: objdump.c:2052 #, c-format msgid "\n%s: file format %s\n" msgstr "\n%s: %s dosya biçemi\n" -#: objdump.c:2156 +#: objdump.c:2094 #, c-format msgid "%s: printing debugging information failed" msgstr "%s: hata ayýklama bilgisinin yazdýrýlmasý baþarýsýz" -#: objdump.c:2233 +#: objdump.c:2171 #, c-format msgid "In archive %s:\n" msgstr "%s arþivi içinde:\n" -#: objdump.c:2285 +#: objdump.c:2223 #, c-format msgid "Contents of section %s:\n" msgstr "%s bölümünün içeriði:\n" -#: objdump.c:2798 +#: objdump.c:2736 #, c-format msgid "BFD header file version %s\n" msgstr "BFD baþlýk dosyasý sürümü %s\n" -#: objdump.c:2882 +#: objdump.c:2825 msgid "unrecognized -E option" msgstr "tanýnmayan -E seçeneði" -#: objdump.c:2893 +#: objdump.c:2836 #, c-format msgid "unrecognized --endian type `%s'" msgstr "tanýnmayan --endian tipi `%s'" @@ -2048,386 +2134,336 @@ msgstr "%s: tanýnan hata ayýklama bilgis msgid "Last stabs entries before error:\n" msgstr "Hata öncesi son stabs girdileri:\n" -#: readelf.c:260 -#, c-format -msgid "Unable to seek to start of %s at %x\n" -msgstr "%s'in baþlangýcý %x'de aranamadý\n" - -#: readelf.c:268 +#: readelf.c:318 #, c-format -msgid "Out of memory allocating %d bytes for %s\n" -msgstr "%2$s için %1$d bayt ayrýlýrken bellek tükendi\n" +msgid "%s: Error: " +msgstr "%s: Hata: " -#: readelf.c:274 +#: readelf.c:329 #, c-format -msgid "Unable to read in %d bytes of %s\n" -msgstr "%2$s'in %1$d baytý okunamadý\n" +msgid "%s: Warning: " +msgstr "%s: Uyarý: " -#: readelf.c:284 +#: readelf.c:351 #, c-format msgid "Unable to seek to %x for %s\n" msgstr "%2$s için %1$x'e kadar arama yapýlamadý\n" -#: readelf.c:289 -#, c-format -msgid "Unable to read data at %x for %s\n" -msgstr "%2$s için %1$x'deki veri okunamadý\n" - -#: readelf.c:304 readelf.c:330 +#: readelf.c:362 #, c-format -msgid "%s: Error: " -msgstr "%s: Hata: " +msgid "Out of memory allocating %d bytes for %s\n" +msgstr "%2$s için %1$d bayt ayrýlýrken bellek tükendi\n" -#: readelf.c:316 readelf.c:345 +#: readelf.c:370 #, c-format -msgid "%s: Warning: " -msgstr "%s: Uyarý: " +msgid "Unable to read in %d bytes of %s\n" +msgstr "%2$s'in %1$d baytý okunamadý\n" -#: readelf.c:395 readelf.c:533 +#: readelf.c:423 readelf.c:581 #, c-format msgid "Unhandled data length: %d\n" msgstr "Desteklenmeyen veri uzunluðu: %d\n" -#: readelf.c:597 +#: readelf.c:660 msgid "Don't know about relocations on this machine architecture\n" msgstr "Bu makina mimarisi üzerinde yer deðiþtirmeler konusunda bilgi yok\n" -#: readelf.c:637 readelf.c:666 readelf.c:698 readelf.c:726 +#: readelf.c:682 readelf.c:711 readelf.c:757 readelf.c:784 +msgid "relocs" +msgstr "yerdeðiþimler" + +#: readelf.c:693 readelf.c:722 readelf.c:767 readelf.c:794 msgid "out of memory parsing relocs" msgstr "yer deðiþtirmeleri tararken bellek tükendi" -#: readelf.c:744 -msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" -msgstr " Basamak Bilgi Tip Sembol Deðeri Sembol Adý Sonekleme\n" - -#: readelf.c:747 -msgid " Offset Info Type Symbol's Value Symbol's Name\n" -msgstr " Basamak Bilgi Tip Sembol Deðeri Sembol Adý\n" +#: readelf.c:845 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Görece Bilgi Tür Sembol Deðeri Sembol Adý Sonekleme\n" + +#: readelf.c:848 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Görece Bilgi Tür Sembol Deðeri Sembol Adý\n" + +#: readelf.c:854 +msgid " Offset Info Type Symbol's Value Symbol's Name Addend\n" +msgstr " Görece Bilgi Tür Sembol Deðeri Sembol Adý Sonekleme\n" + +#: readelf.c:857 +msgid " Offset Info Type Symbol's Value Symbol's Name\n" +msgstr " Görece Bilgi Tür Sembol Deðeri Sembol Adý\n" -#: readelf.c:907 readelf.c:909 +#: readelf.c:1061 readelf.c:1063 #, c-format msgid "unrecognised: %-7lx" msgstr "bilinmeyen: %-7lx" -#: readelf.c:934 +#: readelf.c:1085 #, c-format msgid "" msgstr "" -#: readelf.c:1147 +#: readelf.c:1315 #, c-format msgid "Processor Specific: %lx" msgstr "Ýþlemciye Özel: %lx" -#: readelf.c:1166 +#: readelf.c:1334 #, c-format msgid "Operating System specific: %lx" msgstr "Ýþletim Sistemine Özel: %lx" -#: readelf.c:1169 readelf.c:1677 +#: readelf.c:1337 readelf.c:1961 #, c-format msgid ": %lx" msgstr ": %lx" -#: readelf.c:1183 +#: readelf.c:1351 msgid "NONE (None)" msgstr "HÝÇBÝRÝ (Hiçbiri)" -#: readelf.c:1184 +#: readelf.c:1352 msgid "REL (Relocatable file)" msgstr "YER (Yer deðiþtirebilen dosya)" -#: readelf.c:1185 +#: readelf.c:1353 msgid "EXEC (Executable file)" msgstr "UYGU (Uygulama dosyasý)" -#: readelf.c:1186 +#: readelf.c:1354 msgid "DYN (Shared object file)" msgstr "DÝN (Paylaþýmlý nesne dosyasý)" -#: readelf.c:1187 +#: readelf.c:1355 msgid "CORE (Core file)" msgstr "CORE (Core dosyasý)" -#: readelf.c:1191 +#: readelf.c:1359 #, c-format msgid "Processor Specific: (%x)" msgstr "Ýþlemciye Özel: (%x)" -#: readelf.c:1193 +#: readelf.c:1361 #, c-format msgid "OS Specific: (%x)" msgstr "Ýþletim Sistemine Özel: (%x)" -#: readelf.c:1195 readelf.c:1281 readelf.c:1811 +#: readelf.c:1363 readelf.c:1460 readelf.c:2112 #, c-format msgid ": %x" msgstr ": %x" -#: readelf.c:1208 +#: readelf.c:1376 msgid "None" msgstr "Hiçbiri" -#: readelf.c:1849 +#: readelf.c:2152 msgid "Usage: readelf {options} elf-file(s)\n" msgstr "Kullaným: readelf {seçenekler} elf-dosya(larý)\n" -#: readelf.c:1850 +#: readelf.c:2153 msgid " Options are:\n" msgstr " Seçenekler:\n" -#: readelf.c:1851 +#: readelf.c:2154 msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n" msgstr " -a veya --all Buna eþit: -h -l -S -s -r -d -V -A -I\n" -#: readelf.c:1852 +#: readelf.c:2155 msgid " -h or --file-header Display the ELF file header\n" msgstr " -h veya --file-header ELF dosyasý baþlýðýný gösterir\n" -#: readelf.c:1853 +#: readelf.c:2156 msgid " -l or --program-headers or --segments\n" msgstr " -l veya --program-headers veya --segments\n" -#: readelf.c:1854 +#: readelf.c:2157 msgid " Display the program headers\n" msgstr " Yazýlým baþlýklarýný gösterir\n" -#: readelf.c:1855 +#: readelf.c:2158 msgid " -S or --section-headers or --sections\n" msgstr " -S veya --section-headers veya --sections\n" -#: readelf.c:1856 +#: readelf.c:2159 msgid " Display the sections' header\n" msgstr " Bölüm baþlýklarýný gösterir\n" -#: readelf.c:1857 +#: readelf.c:2160 msgid " -e or --headers Equivalent to: -h -l -S\n" msgstr " -e veya --headers Buna eþit: -h -l -S\n" -#: readelf.c:1858 +#: readelf.c:2161 msgid " -s or --syms or --symbols Display the symbol table\n" msgstr " -s veya --syms veya --symbols Sembol tablosunu gösterir\n" -#: readelf.c:1859 +#: readelf.c:2162 msgid " -n or --notes Display the core notes (if present)\n" msgstr " -n veya --notes (Eðer varsa) core notlarýný gösterir\n" -#: readelf.c:1860 +#: readelf.c:2163 msgid " -r or --relocs Display the relocations (if present)\n" msgstr " -r veya --relocs (Eðer varsa) yer deðiþtirmeleri gösterir\n" -#: readelf.c:1861 +#: readelf.c:2164 +msgid " -u or --unwind Display the unwind info (if present)\n" +msgstr " -u veya --unwind (Eðer varsa) geri alma bilgisini gösterir\n" + +#: readelf.c:2165 msgid " -d or --dynamic Display the dynamic segment (if present)\n" msgstr " -d veya --dynamic (Eðer varsa) dinamik bölümü gösterir\n" -#: readelf.c:1862 +#: readelf.c:2166 msgid " -V or --version-info Display the version sections (if present)\n" msgstr " -V veya --version-info (Eðer varsa) sürüm bölümlerini gösterir\n" -#: readelf.c:1863 +#: readelf.c:2167 msgid " -A or --arch-specific Display architecture specific information (if any).\n" msgstr " -A veya --arch-specific (Eðer varsa) mimariye özel bilgiyi gösterir.\n" -#: readelf.c:1864 +#: readelf.c:2168 msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n" msgstr " -D veya --use-dynamic Sembolleri gösterirken dinamik bölüm bilgisini kullanýr\n" -#: readelf.c:1865 +#: readelf.c:2169 msgid " -x or --hex-dump=\n" msgstr " -x veya --hex-dump=\n" -#: readelf.c:1866 +#: readelf.c:2170 msgid " Dump the contents of section \n" msgstr " bölümünün içeriðini gösterir\n" -#: readelf.c:1867 -msgid " -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" -msgstr " -w[liaprf] veya --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n" +#: readelf.c:2171 +msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" +msgstr " -w[liaprmfs] veya --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n" -#: readelf.c:1868 +#: readelf.c:2172 msgid " Display the contents of DWARF2 debug sections\n" msgstr " DWARF2 hata ayýklama bölümlerinin içeriðini gösterir\n" -#: readelf.c:1870 +#: readelf.c:2174 msgid " -i or --instruction-dump=\n" msgstr " -i veya --instruction-dump=\n" -#: readelf.c:1871 +#: readelf.c:2175 msgid " Disassemble the contents of section \n" msgstr " bölümünün içeriðini karþýt-çevirir\n" -#: readelf.c:1873 +#: readelf.c:2177 msgid " -I or --histogram Display histogram of bucket list lengths\n" msgstr " -I veya --histogram Küme liste uzunluðu geçmiþ grafiðini gösterir\n" -#: readelf.c:1874 +#: readelf.c:2178 msgid " -v or --version Display the version number of readelf\n" msgstr " -v veya --version readelf'in sürüm numarasýný gösterir\n" -#: readelf.c:1875 +#: readelf.c:2179 +msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n" +msgstr " -W veya --wide 80 sütuna sýðdýrmak için satýrlarý bölmez veya kesmez\n" + +#: readelf.c:2180 msgid " -H or --help Display this information\n" msgstr " -H veya --help Bu bilgiyi gösterir\n" -#: readelf.c:1893 +#: readelf.c:2198 msgid "Out of memory allocating dump request table." msgstr "Döküm istek tablosu ayrýlýrken bellek tükendi." -#: readelf.c:2033 +#: readelf.c:2357 #, c-format msgid "Unrecognised debug option '%s'\n" msgstr "Tanýnmayan hata ayýklama seçeneði '%s'\n" -#: readelf.c:2058 +#: readelf.c:2385 #, c-format msgid "Invalid option '-%c'\n" msgstr "Geçersiz seçenek '-%c'\n" -#: readelf.c:2071 +#: readelf.c:2398 msgid "Nothing to do.\n" msgstr "Yapýlacak bir þey yok.\n" -#: readelf.c:2084 readelf.c:2101 readelf.c:3740 +#: readelf.c:2411 readelf.c:2428 readelf.c:4700 msgid "none" msgstr "yok" -#: readelf.c:2085 -msgid "ELF32" -msgstr "ELF32" - -#: readelf.c:2086 -msgid "ELF64" -msgstr "ELF64" - -#: readelf.c:2088 readelf.c:2105 readelf.c:2133 +#: readelf.c:2415 readelf.c:2432 readelf.c:2460 #, c-format msgid "" msgstr "" -#: readelf.c:2102 +#: readelf.c:2429 msgid "2's complement, little endian" msgstr "2's complement, little endian" -#: readelf.c:2103 +#: readelf.c:2430 msgid "2's complement, big endian" msgstr "2's complement, big endian" -#: readelf.c:2118 -msgid "UNIX - System V" -msgstr "UNIX - System V" - -#: readelf.c:2119 -msgid "UNIX - HP-UX" -msgstr "UNIX - HP-UX" - -#: readelf.c:2120 -msgid "UNIX - NetBSD" -msgstr "UNIX - NetBSD" - -#: readelf.c:2121 -msgid "UNIX - Linux" -msgstr "UNIX - Linux" - -#: readelf.c:2122 -msgid "GNU/Hurd" -msgstr "GNU/Hurd" - -#: readelf.c:2123 -msgid "UNIX - Solaris" -msgstr "UNIX - Solaris" - -#: readelf.c:2124 -msgid "UNIX - AIX" -msgstr "UNIX - AIX" - -#: readelf.c:2125 -msgid "UNIX - IRIX" -msgstr "UNIX - IRIX" - -#: readelf.c:2126 -msgid "UNIX - FreeBSD" -msgstr "UNIX - FreeBSD" - -#: readelf.c:2127 -msgid "UNIX - TRU64" -msgstr "UNIX - TRU64" - -#: readelf.c:2128 -msgid "Novell - Modesto" -msgstr "Novell - Modesto" - -#: readelf.c:2129 -msgid "UNIX - OpenBSD" -msgstr "UNIX - OpenBSD" - -#: readelf.c:2130 +#: readelf.c:2457 msgid "Standalone App" msgstr "Tekbaþýna Uygulama" -#: readelf.c:2131 -msgid "ARM" -msgstr "ARM" - -#: readelf.c:2148 +#: readelf.c:2475 msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "ELF dosyasý deðil - baþlangýçta yanlýþ sihirli baytlar var\n" -#: readelf.c:2156 +#: readelf.c:2483 msgid "ELF Header:\n" msgstr "ELF Baþlýðý:\n" -#: readelf.c:2157 +#: readelf.c:2484 msgid " Magic: " msgstr " Sihir: " -#: readelf.c:2161 +#: readelf.c:2488 #, c-format msgid " Class: %s\n" msgstr " Sýnýf: %s\n" -#: readelf.c:2163 +#: readelf.c:2490 #, c-format msgid " Data: %s\n" msgstr " Veri: %s\n" -#: readelf.c:2165 +#: readelf.c:2492 #, c-format msgid " Version: %d %s\n" msgstr " Sürüm: %d %s\n" -#: readelf.c:2172 +#: readelf.c:2499 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: readelf.c:2174 +#: readelf.c:2501 #, c-format msgid " ABI Version: %d\n" msgstr " ABI Sürümü: %d\n" -#: readelf.c:2176 +#: readelf.c:2503 #, c-format msgid " Type: %s\n" msgstr " Tip: %s\n" -#: readelf.c:2178 +#: readelf.c:2505 #, c-format msgid " Machine: %s\n" msgstr " Makina: %s\n" -#: readelf.c:2180 +#: readelf.c:2507 #, c-format msgid " Version: 0x%lx\n" msgstr " Sürüm: 0x%lx\n" -#: readelf.c:2183 +#: readelf.c:2510 msgid " Entry point address: " msgstr " Girdi noktasý adresi: " -#: readelf.c:2185 +#: readelf.c:2512 msgid "\n Start of program headers: " msgstr "\n Yazýlým baþlýklarý baþlangýcý: " -#: readelf.c:2187 +#: readelf.c:2514 msgid "" " (bytes into file)\n" " Start of section headers: " @@ -2435,1003 +2471,1246 @@ msgstr "" " (bayt dosya içinde)\n" " Bölüm baþlýklarý baþlangýcý: " -#: readelf.c:2189 +#: readelf.c:2516 msgid " (bytes into file)\n" msgstr " (bayt dosya içinde)\n" -#: readelf.c:2191 +#: readelf.c:2518 #, c-format msgid " Flags: 0x%lx%s\n" msgstr " Seçenekler: 0x%lx%s\n" -#: readelf.c:2194 +#: readelf.c:2521 #, c-format msgid " Size of this header: %ld (bytes)\n" msgstr " Bu baþlýðýn boyu: %ld (bayt)\n" -#: readelf.c:2196 +#: readelf.c:2523 #, c-format msgid " Size of program headers: %ld (bytes)\n" msgstr " Yazýlým baþlýk boyu: %ld (bayt)\n" -#: readelf.c:2198 +#: readelf.c:2525 #, c-format msgid " Number of program headers: %ld\n" msgstr " Yazýlým baþlýk sayýsý: %ld\n" -#: readelf.c:2200 +#: readelf.c:2527 #, c-format msgid " Size of section headers: %ld (bytes)\n" msgstr " Bölüm baþlýk boyu: %ld (bayt)\n" -#: readelf.c:2202 +#: readelf.c:2529 #, c-format -msgid " Number of section headers: %ld\n" -msgstr " Bölüm baþlýklarý sayýsý: %ld\n" +msgid " Number of section headers: %ld" +msgstr " Bölüm baþlýklarý sayýsý: %ld" -#: readelf.c:2204 +#: readelf.c:2534 #, c-format -msgid " Section header string table index: %ld\n" -msgstr " Bölüm baþlýðý dizge tablo endeksi: %ld\n" +msgid " Section header string table index: %ld" +msgstr " Bölüm baþlýðý dizge tablo endeksi: %ld" + +#: readelf.c:2568 readelf.c:2604 +msgid "program headers" +msgstr "Yazýlým Baþlýklarý" -#: readelf.c:2289 +#: readelf.c:2638 msgid "\nThere are no program headers in this file.\n" msgstr "\nBu dosyada yazýlým baþlýðý yok.\n" -#: readelf.c:2295 +#: readelf.c:2644 #, c-format msgid "\nElf file type is %s\n" msgstr "\nElf dosya tipi: %s\n" -#: readelf.c:2296 +#: readelf.c:2645 msgid "Entry point " msgstr "Giriþ noktasý " -#: readelf.c:2298 +#: readelf.c:2647 #, c-format msgid "\nThere are %d program headers, starting at offset " msgstr "\n%d adet yazýlým baþlýðý var, göreli konumdan baþlanýyor" -#: readelf.c:2309 readelf.c:2485 readelf.c:2527 readelf.c:2570 readelf.c:2611 -#: readelf.c:3133 readelf.c:3174 readelf.c:3350 readelf.c:4358 readelf.c:4372 -#: readelf.c:7741 readelf.c:7781 +#: readelf.c:2658 readelf.c:2883 readelf.c:2929 readelf.c:2992 readelf.c:3059 +#: readelf.c:4087 readelf.c:4130 readelf.c:4310 readelf.c:5246 readelf.c:5260 +#: readelf.c:9246 readelf.c:9286 msgid "Out of memory\n" msgstr "Bellek tükendi\n" -#: readelf.c:2327 +#: readelf.c:2676 #, c-format msgid "\nProgram Header%s:\n" msgstr "\nYazýlým Baþlýðý%s:\n" -#: readelf.c:2331 +#: readelf.c:2680 msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" msgstr " Tip Basamak SanalAdr GerçAdrs DosyaBoyBelBoy Seç Hiza\n" -#: readelf.c:2335 +#: readelf.c:2683 +msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n" +msgstr " Tür Görece SanalAdr GerçAdrs DosyaBoy BelBoy Seç Hiza\n" + +#: readelf.c:2687 msgid " Type Offset VirtAddr PhysAddr\n" msgstr " Tip Basamak SanalAdres GerçekAdres\n" -#: readelf.c:2337 +#: readelf.c:2689 msgid " FileSiz MemSiz Flags Align\n" msgstr " DosyaBoyu BellekBoyu Seç Hiza\n" -#: readelf.c:2395 +#: readelf.c:2789 msgid "more than one dynamic segment\n" msgstr "bir dinamik parçadan fazla\n" -#: readelf.c:2403 +#: readelf.c:2797 msgid "Unable to find program interpreter name\n" msgstr "Yazýlým yorumlayýcýsý adý bulunamadý\n" -#: readelf.c:2410 +#: readelf.c:2804 #, c-format msgid "\n [Requesting program interpreter: %s]" msgstr "\n [Yazýlým yorumlayýcýsý isteniyor: %s]" -#: readelf.c:2428 +#: readelf.c:2822 msgid "\n Section to Segment mapping:\n" msgstr "\n Bölümden parçaya eþleþme:\n" -#: readelf.c:2429 +#: readelf.c:2823 msgid " Segment Sections...\n" msgstr " Parça Bölümleri...\n" -#: readelf.c:2693 +#: readelf.c:2874 readelf.c:2920 +msgid "section headers" +msgstr "Bölüm Baþlýklarý" + +#: readelf.c:2968 readelf.c:3035 +msgid "symbols" +msgstr "semboller" + +#: readelf.c:2979 readelf.c:3046 +msgid "symtab shndx" +msgstr "symtab shndx" + +#: readelf.c:3147 msgid "\nThere are no sections in this file.\n" msgstr "\nBu dosyada bölüm yok.\n" -#: readelf.c:2699 +#: readelf.c:3153 #, c-format msgid "There are %d section headers, starting at offset 0x%lx:\n" msgstr "%d adet bölüm baþlýðý mevcut, göreli konum 0x%lx'dan baþlanýyor:\n" -#: readelf.c:2739 +#: readelf.c:3170 readelf.c:3479 readelf.c:3826 readelf.c:5397 +msgid "string table" +msgstr "dizge tablosu" + +#: readelf.c:3191 msgid "File contains multiple dynamic symbol tables\n" msgstr "Dosyada birden fazla dinamik sembol tablosu var\n" -#: readelf.c:2752 +#: readelf.c:3203 msgid "File contains multiple dynamic string tables\n" msgstr "Dosyada birden fazla dinamik dizge tablosu var\n" -#: readelf.c:2786 +#: readelf.c:3209 +msgid "dynamic strings" +msgstr "dinamik dizgeler" + +#: readelf.c:3215 +msgid "File contains multiple symtab shndx tables\n" +msgstr "Dosyada birden fazla symtab shndx tablosu var\n" + +#: readelf.c:3250 #, c-format msgid "\nSection Header%s:\n" msgstr "\nBölüm Baþlýðý%s:\n" -#: readelf.c:2790 +#: readelf.c:3254 msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n" msgstr " [Nr] Ýsim Tip Adres Bas Boy ES Seç Lk Inf Al\n" -#: readelf.c:2793 +#: readelf.c:3257 +msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n" +msgstr " [Nr] Ýsim Tür Adres Görece Boy ES Seç Lk Inf Al\n" + +#: readelf.c:3260 msgid " [Nr] Name Type Address Offset\n" msgstr " [Nr] Ýsim Tip Adres Basamak\n" -#: readelf.c:2794 +#: readelf.c:3261 msgid " Size EntSize Flags Link Info Align\n" msgstr " Boy EntBoy Seç Bað Bilgi Hiza\n" -#: readelf.c:2841 -msgid "Key to Flags:\n" -msgstr "Seçeneklere Anahtar:\n" - -#: readelf.c:2842 -msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n" -msgstr " W (yaz), A (ayýr), X (çalýþtýr), M (birleþtir) S (dizgeler)\n" - -#: readelf.c:2843 -msgid " I (info), L (link order), G (group), x (unknown)\n" -msgstr " I (bilgi), L (bað sýrasý), G (grup), x (bilinmeyen)\n" - -#: readelf.c:2844 -msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n" -msgstr " O (fazla ÝS iþlemi gerekli) o (ÝS'e özel), p (iþlemciye özel)\n" +#: readelf.c:3356 +msgid "" +"Key to Flags:\n" +" W (write), A (alloc), X (execute), M (merge), S (strings)\n" +" I (info), L (link order), G (group), x (unknown)\n" +" O (extra OS processing required) o (OS specific), p (processor specific)\n" +msgstr "" +"Seçenekler:\n" +" W (yazdýrýr), A (ayýrýr), X (uygular), M (birleþtirir), S (dizgeler)\n" +" I (bilgi), L (bað sýrasý), G (grup), x (bilinmeyen)\n" +" O (daha fazla OS iþlemesi gerekli) o (OS'e özgü), p (iþlemciye özgü)\n" -#: readelf.c:2902 +#: readelf.c:3417 #, c-format msgid "\nRelocation section at offset 0x%lx contains %ld bytes:\n" msgstr "\nGöreli konum 0x%lx'da yer deðiþtirme bölümü %ld bayt içeriyor:\n" -#: readelf.c:2909 +#: readelf.c:3424 msgid "\nThere are no dynamic relocations in this file.\n" msgstr "\nBu dosyada dinamik yer deðiþtirmeler yok.\n" -#: readelf.c:2937 +#: readelf.c:3451 msgid "\nRelocation section " msgstr "\nYer deðiþtirme bölümü " -#: readelf.c:2944 +#: readelf.c:3458 readelf.c:3905 #, c-format msgid " at offset 0x%lx contains %lu entries:\n" msgstr "göreli konum 0x%lx %lu girdi içeriyor:\n" -#: readelf.c:2972 +#: readelf.c:3496 msgid "\nThere are no relocations in this file.\n" msgstr "\nBu dosyada yer deðiþtirmeler yok.\n" -#: readelf.c:3227 +#: readelf.c:3692 +msgid "unwind table" +msgstr "geri alma tablosu" + +#: readelf.c:3743 readelf.c:3755 readelf.c:7608 readelf.c:7619 +#, c-format +msgid "Skipping unexpected symbol type %u\n" +msgstr "beklenmeyen sembol türü %u atlanýyor\n" + +#: readelf.c:3763 +#, c-format +msgid "Skipping unexpected relocation type %s\n" +msgstr "beklenmeyen yerdeðiþim türü %s atlanýyor\n" + +#: readelf.c:3808 readelf.c:3833 +msgid "\nThere are no unwind sections in this file.\n" +msgstr "\nBu dosyada geri alma bölümü yok.\n" + +#: readelf.c:3884 +msgid "\nCould not find unwind info section for " +msgstr "\nGeri alma bilgi bölümü bulunamadý " + +#: readelf.c:3896 +msgid "unwind info" +msgstr "geri alma bilgisi" + +#: readelf.c:3898 +msgid "\nUnwind section " +msgstr "\nGeri alma bölümü " + +#: readelf.c:4071 readelf.c:4114 +msgid "dynamic segment" +msgstr "dinamik bölüm" + +#: readelf.c:4183 msgid "\nThere is no dynamic segment in this file.\n" msgstr "\nBu dosyada dinamik parça yok.\n" -#: readelf.c:3261 +#: readelf.c:4217 msgid "Unable to seek to end of file!" msgstr "Dosya sonuna kadar aranamýyor!" -#: readelf.c:3270 +#: readelf.c:4228 msgid "Unable to determine the number of symbols to load\n" msgstr "Yüklenecek sembol sayýsý belirlenemedi\n" -#: readelf.c:3300 +#: readelf.c:4258 msgid "Unable to seek to end of file\n" msgstr "Dosyanýn sonuna kadar aranamadý\n" -#: readelf.c:3306 +#: readelf.c:4264 msgid "Unable to determine the length of the dynamic string table\n" msgstr "Dinamik dizge tablosunun uzunluðu belirlenemedi\n" -#: readelf.c:3367 +#: readelf.c:4269 +msgid "dynamic string table" +msgstr "dinamik dizge tablosu" + +#: readelf.c:4303 +msgid "symbol information" +msgstr "sembol bilgisi" + +#: readelf.c:4327 #, c-format msgid "\nDynamic segment at offset 0x%x contains %ld entries:\n" msgstr "\nGöreli konum 0x%x'deki dinamik parça %ld girdi içeriyor:\n" -#: readelf.c:3370 +#: readelf.c:4330 msgid " Tag Type Name/Value\n" msgstr " Etiket Tip Ýsim/Deðer\n" -#: readelf.c:3406 +#: readelf.c:4366 msgid "Auxiliary library" msgstr "Yardýmcý kitaplýk" -#: readelf.c:3410 +#: readelf.c:4370 msgid "Filter library" msgstr "Filtre kitaplýðý" -#: readelf.c:3414 +#: readelf.c:4374 msgid "Configuration file" msgstr "Ayar dosyasý" -#: readelf.c:3418 +#: readelf.c:4378 msgid "Dependency audit library" msgstr "Baðýmlýlýk denetim kitaplýðý" -#: readelf.c:3422 +#: readelf.c:4382 msgid "Audit library" msgstr "Denetim kitaplýðý" -#: readelf.c:3440 readelf.c:3466 readelf.c:3492 +#: readelf.c:4400 readelf.c:4426 readelf.c:4452 msgid "Flags:" msgstr "Seçenekler:" -#: readelf.c:3442 readelf.c:3468 readelf.c:3494 +#: readelf.c:4402 readelf.c:4428 readelf.c:4454 msgid " None\n" msgstr " Hiçbiri\n" -#: readelf.c:3613 +#: readelf.c:4573 #, c-format msgid "Shared library: [%s]" msgstr "Paylaþýmlý kitaplýk: [%s]" -#: readelf.c:3616 +#: readelf.c:4576 msgid " program interpreter" msgstr " yazýlým yorumlayýcýsý" -#: readelf.c:3620 +#: readelf.c:4580 #, c-format msgid "Library soname: [%s]" msgstr "Kitaplýk so_adý: [%s]" -#: readelf.c:3624 +#: readelf.c:4584 #, c-format msgid "Library rpath: [%s]" msgstr "Kitaplýk r_yolu: [%s]" -#: readelf.c:3628 +#: readelf.c:4588 #, c-format msgid "Library runpath: [%s]" msgstr "Kitaplýk çalýþým yolu: [%s]" -#: readelf.c:3689 +#: readelf.c:4649 #, c-format msgid "Not needed object: [%s]\n" msgstr "Gereksiz nesne: [%s]\n" -#: readelf.c:3786 +#: readelf.c:4746 #, c-format msgid "\nVersion definition section '%s' contains %ld entries:\n" msgstr "\nSürüm tanýmý bölümü '%s' %ld girdi içeriyor:\n" -#: readelf.c:3789 +#: readelf.c:4749 msgid " Addr: 0x" msgstr " Adres: 0x" -#: readelf.c:3791 readelf.c:3979 +#: readelf.c:4751 readelf.c:4946 #, c-format msgid " Offset: %#08lx Link: %lx (%s)\n" msgstr " Basamak: %#08lx Bað: %lx (%s)\n" -#: readelf.c:3821 +#: readelf.c:4758 +msgid "version definition section" +msgstr "sürüm tanýmý bölümü" + +#: readelf.c:4784 #, c-format msgid " %#06x: Rev: %d Flags: %s" msgstr " %#06x: Sür: %d Seçenek: %s" -#: readelf.c:3824 +#: readelf.c:4787 #, c-format msgid " Index: %d Cnt: %d " msgstr " Endeks: %d Sayý: %d " -#: readelf.c:3835 +#: readelf.c:4798 #, c-format msgid "Name: %s\n" msgstr "Ýsim: %s\n" -#: readelf.c:3837 +#: readelf.c:4800 #, c-format msgid "Name index: %ld\n" msgstr "Ýsim Endeksi: %ld\n" -#: readelf.c:3852 +#: readelf.c:4815 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Üst %d: %s\n" -#: readelf.c:3855 +#: readelf.c:4818 #, c-format msgid " %#06x: Parent %d, name index: %ld\n" msgstr " %#06x: Üst %d, isim endeksi: %ld\n" -#: readelf.c:3874 +#: readelf.c:4837 #, c-format msgid "\nVersion needs section '%s' contains %ld entries:\n" msgstr "\nSürüm gereksinimleri bölümü '%s' %ld girdi içeriyor:\n" -#: readelf.c:3877 +#: readelf.c:4840 msgid " Addr: 0x" msgstr " Adres: 0x" -#: readelf.c:3879 +#: readelf.c:4842 #, c-format msgid " Offset: %#08lx Link to section: %ld (%s)\n" msgstr " Basamak: %#08lx Bölüme bað: %ld (%s)\n" -#: readelf.c:3905 +#: readelf.c:4848 +msgid "version need section" +msgstr "Sürüm Gereksinim Bölüm" + +#: readelf.c:4870 #, c-format msgid " %#06x: Version: %d" msgstr " %#06x: Sürüm: %d" -#: readelf.c:3908 +#: readelf.c:4873 #, c-format msgid " File: %s" msgstr " Dosya: %s" -#: readelf.c:3910 +#: readelf.c:4875 #, c-format msgid " File: %lx" msgstr " Dosya: %lx" -#: readelf.c:3912 +#: readelf.c:4877 #, c-format msgid " Cnt: %d\n" msgstr " Sayý: %d\n" -#: readelf.c:3930 +#: readelf.c:4895 #, c-format msgid " %#06x: Name: %s" msgstr " %#06x: Ýsim: %s" -#: readelf.c:3933 +#: readelf.c:4898 #, c-format msgid " %#06x: Name index: %lx" msgstr " %#06x: Ýsim endeksi: %lx" -#: readelf.c:3936 +#: readelf.c:4901 #, c-format msgid " Flags: %s Version: %d\n" msgstr " Seçenekler: %s Sürüm: %d\n" -#: readelf.c:3974 +#: readelf.c:4937 +msgid "version string table" +msgstr "Sürüm Dizge Tablo" + +#: readelf.c:4941 #, c-format msgid "\nVersion symbols section '%s' contains %d entries:\n" msgstr "\nSürüm sembolleri bölümü '%s' %d girdi içeriyor:\n" -#: readelf.c:3977 +#: readelf.c:4944 msgid " Addr: " msgstr " Adres: " -#: readelf.c:4007 +#: readelf.c:4954 +msgid "version symbol data" +msgstr "Sürüm Sembol Veri" + +#: readelf.c:4981 msgid " 0 (*local*) " msgstr " 0 (*yerel*) " -#: readelf.c:4011 +#: readelf.c:4985 msgid " 1 (*global*) " msgstr " 1 (*evrensel*) " -#: readelf.c:4233 +#: readelf.c:5020 readelf.c:5454 +msgid "version need" +msgstr "Sürüm Gereksinim" + +#: readelf.c:5030 +msgid "version need aux (2)" +msgstr "Sürüm Gereksinim Yardýmcý (2)" + +#: readelf.c:5071 readelf.c:5516 +msgid "version def" +msgstr "sürüm tanýmý" + +#: readelf.c:5090 readelf.c:5531 +msgid "version def aux" +msgstr "Sürüm yardýmcý tanýmý" + +#: readelf.c:5121 msgid "\nNo version information found in this file.\n" msgstr "\nBu dosyada sürüm bilgisi yok.\n" -#: readelf.c:4251 readelf.c:4286 +#: readelf.c:5139 readelf.c:5174 #, c-format msgid ": %d" msgstr ": %d" -#: readelf.c:4253 readelf.c:4298 +#: readelf.c:5141 readelf.c:5186 #, c-format msgid ": %d" msgstr "<ÝS'e özel>: %d" -#: readelf.c:4255 readelf.c:4301 +#: readelf.c:5143 readelf.c:5189 #, c-format msgid ": %d" msgstr ": %d" -#: readelf.c:4364 +#: readelf.c:5252 msgid "Unable to read in dynamic data\n" msgstr "Dinamik veri okunamadý\n" -#: readelf.c:4406 +#: readelf.c:5294 msgid "Unable to seek to start of dynamic information" msgstr "Dinamik bilginin baþlangýcýna kadar aranamadý" -#: readelf.c:4412 +#: readelf.c:5300 msgid "Failed to read in number of buckets\n" msgstr "Küme sayýsý okunamadý\n" -#: readelf.c:4418 +#: readelf.c:5306 msgid "Failed to read in number of chains\n" msgstr "Zincir sayýsý okunamadý\n" -#: readelf.c:4438 +#: readelf.c:5326 msgid "\nSymbol table for image:\n" msgstr "\nÝmaj için sembol tablosu:\n" -#: readelf.c:4440 +#: readelf.c:5328 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr " Küme Num: Deðer Boy Tip Bað Gör Ndx Ýsim\n" -#: readelf.c:4442 +#: readelf.c:5330 msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n" msgstr " Küme Num: Deðer Boy Tip Bað Gör Ndx Ýsim\n" -#: readelf.c:4486 +#: readelf.c:5375 #, c-format msgid "\nSymbol table '%s' contains %lu entries:\n" msgstr "\n'%s' sembol tablosu %lu girdi içeriyor:\n" -#: readelf.c:4490 +#: readelf.c:5379 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Num: Deðer Boy Tip Bað Gör Ndx Ýsim\n" -#: readelf.c:4492 +#: readelf.c:5381 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Num: Deðer Boy Tip Bað Gör Ndx Ýsim\n" -#: readelf.c:4601 +#: readelf.c:5427 +msgid "version data" +msgstr "sürüm verisi" + +#: readelf.c:5467 +msgid "version need aux (3)" +msgstr "Sürüm Gereksinim Yardýmcý (3)" + +#: readelf.c:5492 msgid "bad dynamic symbol" msgstr "hatalý dinamik sembol" -#: readelf.c:4660 +#: readelf.c:5554 msgid "\nDynamic symbol information is not available for displaying symbols.\n" msgstr "\nDinamik sembolleri göstermek için dinamik sembol bilgisi mevcut deðil.\n" -#: readelf.c:4672 +#: readelf.c:5566 #, c-format msgid "\nHistogram for bucket list length (total of %d buckets):\n" msgstr "\nKüme liste boyu (toplam %d küme) geçmiþ grafiði:\n" -#: readelf.c:4674 +#: readelf.c:5568 +#, c-format msgid " Length Number %% of total Coverage\n" msgstr "" " Length Number %% of total Coverage\n" " Boy Numara toplam kapsamýn %%\n" -#: readelf.c:4679 readelf.c:4698 readelf.c:7423 readelf.c:7616 +#: readelf.c:5573 readelf.c:5592 readelf.c:8825 readelf.c:9017 msgid "Out of memory" msgstr "Bellek yetersiz" -#: readelf.c:4747 +#: readelf.c:5641 #, c-format msgid "\nDynamic info segment at offset 0x%lx contains %d entries:\n" msgstr "\nGöreli konum 0x%lx'de yer alan dinamik bilgi parçasý %d girdi içeriyor:\n" -#: readelf.c:4750 +#: readelf.c:5644 msgid " Num: Name BoundTo Flags\n" msgstr " Num: Ýsim Baðlý Seçenekler\n" -#: readelf.c:4798 +#: readelf.c:5696 #, c-format msgid "\nAssembly dump of section %s\n" msgstr "\n%s bölümünün üretici dökümü\n" -#: readelf.c:4821 +#: readelf.c:5719 #, c-format msgid "\nSection '%s' has no data to dump.\n" msgstr "\n'%s' bölümünde dökülecek veri yok.\n" -#: readelf.c:4826 +#: readelf.c:5724 #, c-format msgid "\nHex dump of section '%s':\n" msgstr "\n'%s' bölümünün onaltýlýk dökümü:\n" -#: readelf.c:4978 -msgid "badly formed extended line op encountered!" -msgstr "hatalý oluþturulmuþ uzun satýr iþlevi bulundu!" +#: readelf.c:5729 +msgid "section data" +msgstr "bölüm verisi" + +#: readelf.c:5878 +msgid "badly formed extended line op encountered!\n" +msgstr "hatalý oluþturulmuþ uzun satýr iþlevi bulundu!\n" -#: readelf.c:4985 +#: readelf.c:5885 #, c-format msgid " Extended opcode %d: " msgstr " Ek opkod %d: " -#: readelf.c:4990 +#: readelf.c:5890 msgid "End of Sequence\n\n" msgstr "Dizi Sonu\n\n" -#: readelf.c:4996 +#: readelf.c:5896 #, c-format msgid "set Address to 0x%lx\n" msgstr "Adresi 0x%lx olarak atar\n" -#: readelf.c:5001 +#: readelf.c:5901 msgid " define new File Table entry\n" msgstr " yeni Dosya Tablosu girdisi tanýmlar\n" -#: readelf.c:5002 readelf.c:5124 +#: readelf.c:5902 readelf.c:6031 msgid " Entry\tDir\tTime\tSize\tName\n" msgstr " Girdi\tDizin\tZaman\tBoy\tÝsim\n" -#: readelf.c:5004 +#: readelf.c:5904 #, c-format msgid " %d\t" msgstr " %d\t" -#: readelf.c:5007 readelf.c:5009 readelf.c:5011 readelf.c:5136 readelf.c:5138 -#: readelf.c:5140 +#: readelf.c:5907 readelf.c:5909 readelf.c:5911 readelf.c:6043 readelf.c:6045 +#: readelf.c:6047 #, c-format msgid "%lu\t" msgstr "%lu\t" -#: readelf.c:5012 +#: readelf.c:5912 #, c-format msgid "%s\n\n" msgstr "%s\n\n" -#: readelf.c:5016 +#: readelf.c:5916 #, c-format msgid "UNKNOWN: length %d\n" msgstr "TANIMSIZ: uzunluk %d\n" -#: readelf.c:5042 +#: readelf.c:5942 #, c-format msgid "\nDump of debug contents of section %s:\n\n" msgstr "\n%s bölümünün hata ayýklama içeriði dökümü:\n\n" -#: readelf.c:5054 +#: readelf.c:5954 +msgid "64-bit DWARF line info is not supported yet.\n" +msgstr "64 bitlik DWARF satýr bilgisi henüz desteklenmiyor.\n" + +#: readelf.c:5961 msgid "The line info appears to be corrupt - the section is too small\n" msgstr "Satýr bilgisi bozuk - bölüm çok küçük\n" -#: readelf.c:5062 +#: readelf.c:5969 msgid "Only DWARF version 2 line info is currently supported.\n" msgstr "Þimdilik yalnýzca DWARF sürüm 2 satýr bilgisi destekleniyor.\n" -#: readelf.c:5077 +#: readelf.c:5984 #, c-format msgid " Length: %ld\n" msgstr " Uzunluk: %ld\n" -#: readelf.c:5078 +#: readelf.c:5985 #, c-format msgid " DWARF Version: %d\n" msgstr " DWARF Sürümü: %d\n" -#: readelf.c:5079 +#: readelf.c:5986 #, c-format -msgid " Prolgue Length: %d\n" +msgid " Prologue Length: %d\n" msgstr " Giriþ Uzunluðu: %d\n" -#: readelf.c:5080 +#: readelf.c:5987 #, c-format msgid " Minimum Instruction Length: %d\n" -msgstr " Minimum Yönerge Uzunluðu: %d\n" +msgstr " Minimum Ýþlem Uzunluðu: %d\n" -#: readelf.c:5081 +#: readelf.c:5988 #, c-format msgid " Initial value of 'is_stmt': %d\n" msgstr " 'is_stmt' baþlangýç deðeri: %d\n" -#: readelf.c:5082 +#: readelf.c:5989 #, c-format msgid " Line Base: %d\n" msgstr " Satýr Temeli: %d\n" -#: readelf.c:5083 +#: readelf.c:5990 #, c-format msgid " Line Range: %d\n" msgstr " Satýr Aralýðý: %d\n" -#: readelf.c:5084 +#: readelf.c:5991 #, c-format msgid " Opcode Base: %d\n" msgstr " Opkod Temeli: %d\n" -#: readelf.c:5093 +#: readelf.c:6000 msgid "\n Opcodes:\n" msgstr "\n Opkodlar:\n" -#: readelf.c:5096 +#: readelf.c:6003 #, c-format msgid " Opcode %d has %d args\n" msgstr " %d opkodunun %d seçeneði var\n" -#: readelf.c:5102 +#: readelf.c:6009 msgid "\n The Directory Table is empty.\n" msgstr "\n Dizin Tablosu boþ.\n" -#: readelf.c:5105 +#: readelf.c:6012 msgid "\n The Directory Table:\n" msgstr "\n Dizin Tablosu:\n" -#: readelf.c:5109 +#: readelf.c:6016 #, c-format msgid " %s\n" msgstr " %s\n" -#: readelf.c:5120 +#: readelf.c:6027 msgid "\n The File Name Table is empty.\n" msgstr "\n Dosya Adý Tablosu boþ.\n" -#: readelf.c:5123 +#: readelf.c:6030 msgid "\n The File Name Table:\n" msgstr "\n Dosya Adý Tablosu:\n" -#: readelf.c:5131 +#: readelf.c:6038 #, c-format msgid " %d\t" msgstr " %d\t" -#: readelf.c:5142 +#: readelf.c:6049 #, c-format msgid "%s\n" msgstr "%s\n" #. Now display the statements. -#: readelf.c:5150 +#: readelf.c:6057 msgid "\n Line Number Statements:\n" msgstr "\n Satýr Numarasý Deyimleri:\n" -#: readelf.c:5169 +#: readelf.c:6073 +#, c-format +msgid " Special opcode %d: advance Address by %d to 0x%lx" +msgstr " Özel opkod %1$d: Adresi 0x%3$lx'e kadar %2$d ilerletir" + +#: readelf.c:6077 +#, c-format +msgid " and Line by %d to %d\n" +msgstr " ve Satýr'ý %2$d'ye kadar %1$d\n" + +#: readelf.c:6088 msgid " Copy\n" msgstr " Kopyalar\n" -#: readelf.c:5176 +#: readelf.c:6095 #, c-format msgid " Advance PC by %d to %lx\n" msgstr " PC'yi %2$lx'ye kadar, %1$d ilerletir\n" -#: readelf.c:5184 +#: readelf.c:6103 #, c-format msgid " Advance Line by %d to %d\n" msgstr " Satýrý %2$d'ye kadar %1$d ilerletir\n" -#: readelf.c:5191 +#: readelf.c:6110 #, c-format msgid " Set File Name to entry %d in the File Name Table\n" msgstr " Dosya Adýný, Dosya Ýsim Tablosunda, %d numaralý girdi olarak atar\n" -#: readelf.c:5199 +#: readelf.c:6118 #, c-format msgid " Set column to %d\n" msgstr " Sütunu %d olarak atar\n" -#: readelf.c:5206 +#: readelf.c:6125 #, c-format msgid " Set is_stmt to %d\n" msgstr " is_stmt'i %d olarak atar\n" -#: readelf.c:5211 +#: readelf.c:6130 msgid " Set basic block\n" msgstr " Temel bloðu atar\n" -#: readelf.c:5219 +#: readelf.c:6138 #, c-format msgid " Advance PC by constant %d to 0x%lx\n" msgstr " PC'yi 0x%2$lx'e kadar %1$d ilerletir\n" -#: readelf.c:5227 +#: readelf.c:6146 #, c-format msgid " Advance PC by fixed size amount %d to 0x%lx\n" -msgstr " PC'yi 0x%2$lx'e kadar %d ilerletir\n" +msgstr " PC'yi 0x%2$lx'e kadar %1$d ilerletir\n" -#: readelf.c:5235 +#: readelf.c:6151 +msgid " Set prologue_end to true\n" +msgstr " Prologue_end'i doðru (true) olarak atar\n" + +#: readelf.c:6155 +msgid " Set epilogue_begin to true\n" +msgstr " Epilogue_begin'i doðru (true) olarak atar\n" + +#: readelf.c:6161 #, c-format -msgid " Special opcode %d: advance Address by %d to 0x%lx" -msgstr " Özel opkod %1$d: Adresi 0x%3$lx'e kadar %2$d ilerletir" +msgid " Set ISA to %d\n" +msgstr " ISA'yý %d olarak atar\n" -#: readelf.c:5239 +#: readelf.c:6165 #, c-format -msgid " and Line by %d to %d\n" -msgstr " ve Satýr'ý %2$d'ye kadar %1$d\n" +msgid " Unknown opcode %d with operands: " +msgstr " Bilinmeyen %d opkodu ve iþlenenleri: " -#: readelf.c:5262 readelf.c:5691 +#: readelf.c:6197 readelf.c:6658 readelf.c:6730 #, c-format msgid "Contents of the %s section:\n\n" msgstr "%s bölümünün içeriði:\n\n" -#: readelf.c:5285 +#: readelf.c:6216 +msgid "64-bit DWARF pubnames are not supported yet.\n" +msgstr "64 bitlik DWARF genel isimleri henüz desteklenmiyor\n" + +#: readelf.c:6226 msgid "Only DWARF 2 pubnames are currently supported\n" msgstr "Þimdilik yalnýz DWARF 2 genel isimleri destekleniyor\n" -#: readelf.c:5292 +#: readelf.c:6233 #, c-format msgid " Length: %ld\n" msgstr " Uzunluk: %ld\n" -#: readelf.c:5294 +#: readelf.c:6235 #, c-format msgid " Version: %d\n" msgstr " Sürüm: %d\n" -#: readelf.c:5296 +#: readelf.c:6237 #, c-format msgid " Offset into .debug_info section: %ld\n" msgstr ".debug_info bölümünün içine göreli konum: %ld\n" -#: readelf.c:5298 +#: readelf.c:6239 #, c-format msgid " Size of area in .debug_info section: %ld\n" msgstr ".debug_info bölümünde alan büyüklüðü: %ld\n" -#: readelf.c:5301 +#: readelf.c:6242 msgid "\n Offset\tName\n" msgstr "\n Basamak\tÝsim\n" -#: readelf.c:5383 +#: readelf.c:6333 #, c-format msgid "Unknown TAG value: %lx" msgstr "Bilinmeyen TAG deðeri: %lx" -#: readelf.c:5478 +#: readelf.c:6443 #, c-format msgid "Unknown AT value: %lx" msgstr "Bilinmeyen AT deðeri: %lx" -#: readelf.c:5515 +#: readelf.c:6480 #, c-format msgid "Unknown FORM value: %lx" msgstr "Bilinmeyen FORM deðeri: %lx" -#: readelf.c:5697 +#: readelf.c:6679 +#, c-format +msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n" +msgstr " DW_MACINFO_start_file - satýr no: %d dosya no: %d\n" + +#: readelf.c:6684 +msgid " DW_MACINFO_end_file\n" +msgstr " DW_MACINFO_end_file\n" + +#: readelf.c:6692 +#, c-format +msgid " DW_MACINFO_define - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_define - satýr no : %d makro : %s\n" + +#: readelf.c:6700 +#, c-format +msgid " DW_MACINFO_undef - lineno : %d macro : %s\n" +msgstr " DW_MACINFO_undef - satýr no : %d makro : %s\n" + +#: readelf.c:6711 +#, c-format +msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n" +msgstr " DW_MACINFO_vendor_ext - sabit : %d dizge : %s\n" + +#: readelf.c:6739 msgid " Number TAG\n" msgstr " Sayý TAG\n" -#: readelf.c:5703 +#: readelf.c:6745 #, c-format msgid " %ld %s [%s]\n" msgstr " %ld %s [%s]\n" -#: readelf.c:5706 +#: readelf.c:6748 msgid "has children" msgstr "astlarý var" -#: readelf.c:5706 +#: readelf.c:6748 msgid "no children" msgstr "astlarý yok" -#: readelf.c:5710 +#: readelf.c:6752 #, c-format msgid " %-18s %s\n" msgstr " %-18s %s\n" -#: readelf.c:5729 +#: readelf.c:6773 #, c-format msgid " %lu byte block: " msgstr " %lu baytlýk blok: " -#: readelf.c:6036 +#: readelf.c:7096 msgid "(User defined location op)" msgstr "(Kullanýcý tanýmlý yer yönergesi)" -#: readelf.c:6038 +#: readelf.c:7098 msgid "(Unknown location op)" msgstr "(Bilinmeyen yer yönergesi)" -#: readelf.c:6165 +#: readelf.c:7137 +msgid "debug_str section data" +msgstr "debug_str bölüm verisi" + +#: readelf.c:7156 +msgid "" +msgstr "<.debug_str bölümü yok>" + +#: readelf.c:7159 +msgid "" +msgstr "" + +#: readelf.c:7179 +msgid "\nThe .debug_str section is empty.\n" +msgstr "\n.debug_str bölümü boþ.\n" + +#: readelf.c:7183 +msgid "Contents of the .debug_str section:\n\n" +msgstr ".debug_str bölümünün içeriði:\n\n" + +#: readelf.c:7354 #, c-format -msgid "Unable to handle FORM: %d" -msgstr "FORM iþlenemedi: %d" +msgid " (indirect string, offset: 0x%lx): " +msgstr " (dolaylý dizge, görece: 0x%lx): " -#: readelf.c:6169 +#: readelf.c:7363 #, c-format -msgid "Unrecognised form: %d" -msgstr "Bilinmeyen form: %d" +msgid "Unrecognised form: %d\n" +msgstr "Bilinmeyen form: %d\n" -#: readelf.c:6182 +#: readelf.c:7376 msgid "(not inlined)" msgstr "(inline'lanamadý)" -#: readelf.c:6183 +#: readelf.c:7377 msgid "(inlined)" msgstr "(inline'landý)" -#: readelf.c:6184 +#: readelf.c:7378 msgid "(declared as inline but ignored)" msgstr "(inline olarak tanýmlandý ama yoksayýldý)" -#: readelf.c:6185 +#: readelf.c:7379 msgid "(declared as inline and inlined)" msgstr "(inline olarak tanýmlandý ve inline'landý)" -#: readelf.c:6186 +#: readelf.c:7380 #, c-format msgid " (Unknown inline attribute value: %lx)" msgstr " (Bilinmeyen inline öznitelik deðeri: %lx)" -#: readelf.c:6315 readelf.c:6441 +#: readelf.c:7545 readelf.c:7746 #, c-format msgid "The section %s contains:\n\n" msgstr "%s bölümü içeriyor:\n\n" -#: readelf.c:6337 +#: readelf.c:7568 +msgid "64-bit DWARF debug info is not supported yet.\n" +msgstr "64 bitlik DWARF hata ayýklama bilgisi henüz desteklenmiyor.\n" + +#: readelf.c:7637 #, c-format msgid " Compilation Unit @ %lx:\n" msgstr " Derleme Birimi @ %lx:\n" -#: readelf.c:6338 +#: readelf.c:7638 #, c-format msgid " Length: %ld\n" msgstr " Uzunluk: %ld\n" -#: readelf.c:6339 +#: readelf.c:7639 #, c-format msgid " Version: %d\n" msgstr " Sürüm: %d\n" -#: readelf.c:6340 +#: readelf.c:7640 #, c-format msgid " Abbrev Offset: %ld\n" msgstr " Kýsaltma Basamaðý: %ld\n" -#: readelf.c:6341 +#: readelf.c:7641 #, c-format msgid " Pointer Size: %d\n" msgstr " Gösterge Boyu: %d\n" -#: readelf.c:6345 +#: readelf.c:7645 msgid "Only version 2 DWARF debug information is currently supported.\n" msgstr "Þimdilik yalnýzca DWARF Sürüm 2 hata ayýklama bilgisi destekleniyor.\n" -#: readelf.c:6367 +#: readelf.c:7666 msgid "Unable to locate .debug_abbrev section!\n" msgstr ".debug_abbrev bölümü bulunamadý!\n" -#: readelf.c:6407 +#: readelf.c:7672 +msgid "debug_abbrev section data" +msgstr "debug_abbrev bölüm verisi" + +#: readelf.c:7709 #, c-format msgid "Unable to locate entry %lu in the abbreviation table\n" msgstr "Kýsaltma tablosunda %lu girdisi bulunamadý\n" -#: readelf.c:6412 +#: readelf.c:7714 #, c-format -msgid " <%d><%x>: Abbrev Number: %lu (%s)\n" -msgstr " <%d><%x>: Kýsaltma Numarasý: %lu (%s)\n" +msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n" +msgstr " <%d><%lx>: Kýsaltma Numarasý: %lu (%s)\n" -#: readelf.c:6462 +#: readelf.c:7767 +msgid "64-bit DWARF aranges are not supported yet.\n" +msgstr "64 bitlik DWARF a-aralýklarý henüz desteklenmiyor.\n" + +#: readelf.c:7773 msgid "Only DWARF 2 aranges are currently supported.\n" msgstr "Þimdilik yalnýzca DWARF 2 a-aralýklarý destekleniyor.\n" -#: readelf.c:6466 +#: readelf.c:7777 #, c-format msgid " Length: %ld\n" msgstr " Uzunluk: %ld\n" -#: readelf.c:6467 +#: readelf.c:7778 #, c-format msgid " Version: %d\n" msgstr " Sürüm: %d\n" -#: readelf.c:6468 +#: readelf.c:7779 #, c-format msgid " Offset into .debug_info: %lx\n" msgstr " .debug_info'nun içine göreli konum: %lx\n" -#: readelf.c:6469 +#: readelf.c:7780 #, c-format msgid " Pointer Size: %d\n" msgstr " Gösterge Boyu: %d\n" -#: readelf.c:6470 +#: readelf.c:7781 #, c-format msgid " Segment Size: %d\n" msgstr " Parça Boyu: %d\n" -#: readelf.c:6472 +#: readelf.c:7783 msgid "\n Address Length\n" msgstr "\n Adres Uzunluk\n" -#: readelf.c:6634 +#: readelf.c:7965 #, c-format msgid "The section %s contains:\n" msgstr "%s bölümü içeriyor:\n" -#: readelf.c:7109 +#: readelf.c:7988 +msgid "64-bit DWARF format frames are not supported yet.\n" +msgstr "64 bitlik DWARF biçem çerçeveleri henüz desteklenmiyor.\n" + +#: readelf.c:8499 #, c-format msgid "Displaying the debug contents of section %s is not yet supported.\n" msgstr "%s bölümünün hata ayýklama içerik bilgilerini göstermek henüz desteklenmiyor.\n" -#: readelf.c:7173 +#: readelf.c:8565 #, c-format msgid "\nSection '%s' has no debugging data.\n" msgstr "\n'%s' bölümünde hata ayýklama bilgisi yok.\n" -#: readelf.c:7192 +#: readelf.c:8570 readelf.c:8632 +msgid "debug section data" +msgstr "hata ayýklama bölüm verisi" + +#: readelf.c:8586 #, c-format msgid "Unrecognised debug section: %s\n" msgstr "Tanýnmayan hata ayýklama bölümü: %s\n" -#: readelf.c:7264 +#: readelf.c:8660 msgid "Some sections were not dumped because they do not exist!\n" msgstr "Bazý bölümler dökülmedi çünkü mevcut deðiller!\n" -#: readelf.c:7447 +#: readelf.c:8733 +msgid "liblist" +msgstr "liblist" + +#: readelf.c:8818 +msgid "options" +msgstr "seçenekler" + +#: readelf.c:8849 #, c-format msgid "\nSection '%s' contains %d entries:\n" msgstr "\n'%s' bölümü %d girdi içeriyor:\n" -#: readelf.c:7609 +#: readelf.c:9010 msgid "conflict list with without table" msgstr "tablolu ve tablosuz çeliþki listesi" -#: readelf.c:7637 +#: readelf.c:9028 readelf.c:9044 +msgid "conflict" +msgstr "çakýþma" + +#: readelf.c:9054 #, c-format -msgid "\nSection '.conflict' contains %d entries:\n" -msgstr "\n'.conflict' bölümü %d girdi içeriyor:\n" +msgid "\nSection '.conflict' contains %ld entries:\n" +msgstr "\n'.conflict' bölümü %ld girdi içeriyor:\n" -#: readelf.c:7638 +#: readelf.c:9056 msgid " Num: Index Value Name" msgstr " Num: Endeks Deðer Ýsim" -#: readelf.c:7663 +#: readelf.c:9083 msgid "NT_PRSTATUS (prstatus structure)" msgstr "NT_PRSTATUS (prstatus yapýsý)" -#: readelf.c:7664 +#: readelf.c:9084 msgid "NT_FPREGSET (floating point registers)" msgstr "NT_FPREGSET (kayan nokta yazmaçlarý)" -#: readelf.c:7665 +#: readelf.c:9085 msgid "NT_PRPSINFO (prpsinfo structure)" msgstr "NT_PRPSINFO (prpsinfo yapýsý)" -#: readelf.c:7666 +#: readelf.c:9086 msgid "NT_TASKSTRUCT (task structure)" msgstr "NT_TASKSTRUCT (görev yapýsý)" -#: readelf.c:7667 +#: readelf.c:9087 msgid "NT_PRXFPREG (user_xfpregs structure)" msgstr "NT_PRXFPREG (user_xfpregs yapýsý)" -#: readelf.c:7668 +#: readelf.c:9088 msgid "NT_PSTATUS (pstatus structure)" msgstr "NT_PSTATUS (pstatus yapýsý)" -#: readelf.c:7669 +#: readelf.c:9089 msgid "NT_FPREGS (floating point registers)" msgstr "NT_FPREGS (kayan nokta yazmaçlarý)" -#: readelf.c:7670 +#: readelf.c:9090 msgid "NT_PSINFO (psinfo structure)" msgstr "NT_PSINFO (psinfo yapýsý)" -#: readelf.c:7671 +#: readelf.c:9091 msgid "NT_LWPSTATUS (lwpstatus_t structure)" msgstr "NT_LWPSTATUS (lwpstatus_t yapýsý)" -#: readelf.c:7672 +#: readelf.c:9092 msgid "NT_LWPSINFO (lwpsinfo_t structure)" msgstr "NT_LWPSINFO (lwpsinfo_t yapýsý)" -#: readelf.c:7673 +#: readelf.c:9093 msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)" msgstr "NT_WIN32PSTATUS (win32_pstatus yapýsý)" -#: readelf.c:7675 +#: readelf.c:9095 readelf.c:9119 #, c-format msgid "Unknown note type: (0x%08x)" msgstr "Bilinmeyen not tipi: (0x%08x)" -#: readelf.c:7713 +#. NetBSD core "procinfo" structure. +#: readelf.c:9109 +msgid "NetBSD procinfo structure" +msgstr "NetBSD procinfo yapýsý" + +#: readelf.c:9136 readelf.c:9150 +msgid "PT_GETREGS (reg structure)" +msgstr "PT_GETREGS (yazmaç yapýsý)" + +#: readelf.c:9138 readelf.c:9152 +msgid "PT_GETFPREGS (fpreg structure)" +msgstr "PT_GETFPREGS (kayan nokta yazmaç yapýsý)" + +#: readelf.c:9158 +#, c-format +msgid "PT_FIRSTMACH+%d" +msgstr "PT_FIRSTMACH+%d" + +#: readelf.c:9212 +msgid "notes" +msgstr "notlar" + +#: readelf.c:9218 #, c-format msgid "\nNotes at offset 0x%08lx with length 0x%08lx:\n" msgstr "\n0x%08lx göreli konumunda, 0x%08lx uzunluðunda notlar:\n" -#: readelf.c:7715 +#: readelf.c:9220 msgid " Owner\t\tData size\tDescription\n" msgstr " Sahip\t\tVeri Boyu\tAçýklama\n" -#: readelf.c:7826 +#: readelf.c:9331 msgid "No note segments present in the core file.\n" msgstr "Core dosyasýnda not parçalarý yok.\n" -#: readelf.c:7904 -msgid "This instance of readelf has been built without support for a\n" -msgstr "Bu readelf, bunlarýn desteði olmaksýzýn derlenmiþtir:\n" - -#: readelf.c:7905 -msgid "64 bit data type and so it cannot read 64 bit ELF files.\n" -msgstr "64 bit veri tipi dolayýsýyla 64 bit ELF dosyasý okunamaz.\n" +#: readelf.c:9409 +msgid "" +"This instance of readelf has been built without support for a\n" +"64 bit data type and so it cannot read 64 bit ELF files.\n" +msgstr "" +"Bu readelf, 64 bitlik veri türü desteði olmaksýzýn derlenmiþtir ve\n" +"64 bitlik ELF dosyalarýný okuyamaz.\n" -#: readelf.c:7940 +#: readelf.c:9452 #, c-format msgid "Cannot stat input file %s.\n" msgstr "%s girdi dosyasý durumlanamadý.\n" -#: readelf.c:7947 +#: readelf.c:9459 #, c-format msgid "Input file %s not found.\n" msgstr "Girdi dosyasý %s bulunamadý.\n" -#: readelf.c:7953 +#: readelf.c:9465 #, c-format msgid "%s: Failed to read file header\n" msgstr "%s: Dosya baþlýðý okunamadý\n" -#: readelf.c:7967 +#: readelf.c:9479 #, c-format msgid "\nFile: %s\n" msgstr "\nDosya: %s\n" @@ -3840,169 +4119,170 @@ msgstr "--format=berkeley öntanýmlý\n" msgid "default is --format=sysv\n" msgstr "--format=sysv öntanýmlý\n" -#: size.c:141 +#: size.c:146 #, c-format msgid "invalid argument to --format: %s" msgstr "--format'a geçersiz seçenek: %s" -#: size.c:168 +#: size.c:173 #, c-format msgid "Invalid radix: %s\n" msgstr "Geçersiz radix: %s\n" -#: srconv.c:1880 +#: srconv.c:1931 #, c-format msgid "Usage: %s [-dhVq] in-file [out-file]\n" msgstr "Kullaným: %s [-dhVq] girdi-dosyasý [çýktý-dosyasý]\n" -#: srconv.c:1887 +#: srconv.c:1938 #, c-format msgid "%s: Convert a COFF object file into a SYSROFF object file\n" msgstr "%s: Bir COFF nesne dosyasýný SYSROFF nesne dosyasýna çevirir\n" -#: srconv.c:2020 +#: srconv.c:2074 #, c-format msgid "unable to open output file %s" msgstr "çýktý dosyasý %s açýlamadý" -#: stabs.c:349 stabs.c:1770 +#: stabs.c:343 stabs.c:1760 msgid "numeric overflow" msgstr "sayýsal taþma" -#: stabs.c:360 +#: stabs.c:354 #, c-format msgid "Bad stab: %s\n" msgstr "Kötü stab: %s\n" -#: stabs.c:370 +#: stabs.c:364 #, c-format msgid "Warning: %s: %s\n" msgstr "Uyarý: %s: %s\n" -#: stabs.c:492 +#: stabs.c:486 msgid "N_LBRAC not within function\n" msgstr "N_LBRAC iþlev içerisinde deðil\n" -#: stabs.c:531 +#: stabs.c:525 msgid "Too many N_RBRACs\n" msgstr "Fazla sayýda N_RBRAC\n" -#: stabs.c:780 +#: stabs.c:770 msgid "unknown C++ encoded name" msgstr "Bilinmeyen C++ þifreli ismi" #. Complain and keep going, so compilers can invent new #. cross-reference types. -#: stabs.c:1307 +#: stabs.c:1297 msgid "unrecognized cross reference type" msgstr "tanýnmayan çapraz baþvuru tipi" #. Does this actually ever happen? Is that why we are worrying #. about dealing with it rather than just calling error_type? -#: stabs.c:1862 +#: stabs.c:1852 msgid "missing index type" msgstr "eksik endeks tipi" -#: stabs.c:2189 +#: stabs.c:2179 msgid "unknown virtual character for baseclass" msgstr "temel sýnýf için bilinmeyen sanal karakter" -#: stabs.c:2207 +#: stabs.c:2197 msgid "unknown visibility character for baseclass" msgstr "temel sýnýf için bilinmeyen görünebilirlik karakteri" -#: stabs.c:2399 +#: stabs.c:2389 msgid "unnamed $vb type" msgstr "isimlenmemiþ $vb tipi" -#: stabs.c:2405 +#: stabs.c:2395 msgid "unrecognized C++ abbreviation" msgstr "tanýnmayan C++ kýsaltmasý" -#: stabs.c:2485 +#: stabs.c:2475 msgid "unknown visibility character for field" msgstr "alan için bilinmeyen görünürlük karakteri" -#: stabs.c:2741 +#: stabs.c:2731 msgid "const/volatile indicator missing" msgstr "sabit/deðiþken belirteci eksik" -#: stabs.c:2981 +#: stabs.c:2971 #, c-format msgid "No mangling for \"%s\"\n" msgstr "\"%s\" için karýþtýrma yok\n" -#: stabs.c:3294 +#: stabs.c:3284 msgid "Undefined N_EXCL" msgstr "N_EXCL tanýmsýz" -#: stabs.c:3382 +#: stabs.c:3372 #, c-format msgid "Type file number %d out of range\n" msgstr "Tip dosya numarasý %d aralýk dýþý\n" -#: stabs.c:3387 +#: stabs.c:3377 #, c-format msgid "Type index number %d out of range\n" msgstr "Tip endeks numarasý %d aralýk dýþý\n" -#: stabs.c:3474 +#: stabs.c:3464 #, c-format msgid "Unrecognized XCOFF type %d\n" msgstr "Bilinmeyen XCOFF tipi %d\n" -#: stabs.c:3773 +#: stabs.c:3763 #, c-format msgid "bad mangled name `%s'\n" msgstr "kötü karýþtýrýlmýþ isim '%s'\n" -#: stabs.c:3869 +#: stabs.c:3859 msgid "no argument types in mangled string\n" msgstr "karýþtýrýlmýþ dizgede argüman tipi yok\n" -#: strings.c:177 +#: strings.c:199 #, c-format msgid "invalid number %s" msgstr "geçersiz sayý %s" -#: strings.c:513 +#: strings.c:638 #, c-format msgid "invalid integer argument %s" msgstr "geçersiz tamsayý argümaný %s" -#: strings.c:523 +#: strings.c:648 #, c-format msgid "" -"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n" -" [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" -" [--target=bfdname] [--help] [--version] file...\n" +"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n" +" [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n" +" [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n" msgstr "" "Kullaným: %s [-afov] [-n min-uzun] [-min-len] En az uzunluk\n" -" [-t {o,x,d}] [-]\n" +" [-t {o,x,d}] [-e {s,b,l,B,L}] [-]\n" " [--all] Hepsi\n" " [--print-file-name] Dosya adýný yazdýrýr\n" " [--bytes=min-uzun] En az bayt\n" " [--radix={o,x,d}]\n" " [--target=bfd_adý] Hedef\n" +" [--encoding {s,b,l,B,L}] Kodlama\n" " [--help] Yardým\n" " [--version] Sürüm bilgisi\n" " dosya... \n" -#: sysdump.c:712 +#: sysdump.c:733 #, c-format msgid "Usage: %s [-hV] in-file\n" msgstr "Kullaným: %s [-hV] girdi-dosyasý\n" -#: sysdump.c:781 +#: sysdump.c:805 #, c-format msgid "cannot open input file %s" msgstr "%s girdi dosyasý açýlamadý" -#: version.c:39 -msgid "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" -msgstr "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n" +#: version.c:35 +msgid "Copyright 2001 Free Software Foundation, Inc.\n" +msgstr "Telif Hakký (c) 2001 Free Software Foundation, Inc.\n" -#: version.c:40 +#: version.c:36 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" @@ -4113,7 +4393,7 @@ msgstr "" "Girdi dosya ismi verilmezse standart girdi, öntanýmlý rc okunur. \n" "Çýktý dosya ismi verilmezse standart çýktý, öntanýmlý rc okunur.\n" -#: windres.c:980 +#: windres.c:983 msgid "no resources" msgstr "kaynak yok" diff -uprN binutils-2.11.92.0.12.3/binutils/readelf.c binutils-2.11.93.0.2/binutils/readelf.c --- binutils-2.11.92.0.12.3/binutils/readelf.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/binutils/readelf.c Sun Feb 3 11:22:30 2002 @@ -1,5 +1,5 @@ /* readelf.c -- display contents of an ELF format file - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Originally developed by Eric Youngdale Modifications by Nick Clifton @@ -49,34 +49,36 @@ #define RELOC_MACROS_GEN_FUNC -#include "elf/i386.h" -#include "elf/v850.h" -#include "elf/ppc.h" -#include "elf/mips.h" #include "elf/alpha.h" +#include "elf/arc.h" #include "elf/arm.h" -#include "elf/m68k.h" -#include "elf/sparc.h" -#include "elf/m32r.h" +#include "elf/avr.h" +#include "elf/cris.h" #include "elf/d10v.h" #include "elf/d30v.h" -#include "elf/sh.h" -#include "elf/mn10200.h" -#include "elf/mn10300.h" -#include "elf/hppa.h" -#include "elf/h8.h" -#include "elf/arc.h" #include "elf/fr30.h" +#include "elf/h8.h" +#include "elf/hppa.h" +#include "elf/i386.h" +#include "elf/i860.h" +#include "elf/i960.h" +#include "elf/ia64.h" +#include "elf/m32r.h" +#include "elf/m68k.h" #include "elf/mcore.h" +#include "elf/mips.h" #include "elf/mmix.h" -#include "elf/i960.h" +#include "elf/mn10200.h" +#include "elf/mn10300.h" +#include "elf/or32.h" #include "elf/pj.h" -#include "elf/avr.h" -#include "elf/ia64.h" -#include "elf/cris.h" -#include "elf/i860.h" -#include "elf/x86-64.h" +#include "elf/ppc.h" #include "elf/s390.h" +#include "elf/sh.h" +#include "elf/sparc.h" +#include "elf/v850.h" +#include "elf/x86-64.h" +#include "elf/xstormy16.h" #include "bucomm.h" #include "getopt.h" @@ -101,6 +103,7 @@ int loadaddr = 0; Elf_Internal_Ehdr elf_header; Elf_Internal_Shdr * section_headers; Elf_Internal_Dyn * dynamic_segment; +Elf_Internal_Shdr * symtab_shndx_hdr; int show_name; int do_dynamic; int do_syms; @@ -151,11 +154,13 @@ print_mode; /* Forward declarations for dumb compilers. */ static void print_vma PARAMS ((bfd_vma, print_mode)); +static void print_symbol PARAMS ((int, char *)); static bfd_vma (* byte_get) PARAMS ((unsigned char *, int)); static bfd_vma byte_get_little_endian PARAMS ((unsigned char *, int)); static bfd_vma byte_get_big_endian PARAMS ((unsigned char *, int)); static const char * get_mips_dynamic_type PARAMS ((unsigned long)); static const char * get_sparc64_dynamic_type PARAMS ((unsigned long)); +static const char * get_ppc64_dynamic_type PARAMS ((unsigned long)); static const char * get_parisc_dynamic_type PARAMS ((unsigned long)); static const char * get_dynamic_type PARAMS ((unsigned long)); static int slurp_rela_relocs PARAMS ((FILE *, unsigned long, unsigned long, Elf_Internal_Rela **, unsigned long *)); @@ -196,13 +201,13 @@ static int process_file static int process_relocs PARAMS ((FILE *)); static int process_version_sections PARAMS ((FILE *)); static char * get_ver_flags PARAMS ((unsigned int)); -static int get_32bit_section_headers PARAMS ((FILE *)); -static int get_64bit_section_headers PARAMS ((FILE *)); +static int get_32bit_section_headers PARAMS ((FILE *, unsigned int)); +static int get_64bit_section_headers PARAMS ((FILE *, unsigned int)); static int get_32bit_program_headers PARAMS ((FILE *, Elf_Internal_Phdr *)); static int get_64bit_program_headers PARAMS ((FILE *, Elf_Internal_Phdr *)); static int get_file_header PARAMS ((FILE *)); -static Elf_Internal_Sym * get_32bit_elf_symbols PARAMS ((FILE *, unsigned long, unsigned long)); -static Elf_Internal_Sym * get_64bit_elf_symbols PARAMS ((FILE *, unsigned long, unsigned long)); +static Elf_Internal_Sym * get_32bit_elf_symbols PARAMS ((FILE *, Elf_Internal_Shdr *)); +static Elf_Internal_Sym * get_64bit_elf_symbols PARAMS ((FILE *, Elf_Internal_Shdr *)); static const char * get_elf_section_flags PARAMS ((bfd_vma)); static int * get_dynamic_data PARAMS ((FILE *, unsigned int)); static int get_32bit_dynamic_segment PARAMS ((FILE *)); @@ -244,7 +249,8 @@ static const char * get_elf_class static const char * get_data_encoding PARAMS ((unsigned int)); static const char * get_osabi_name PARAMS ((unsigned int)); static int guess_is_rela PARAMS ((unsigned long)); -static char * get_note_type PARAMS ((unsigned int)); +static const char * get_note_type PARAMS ((unsigned int)); +static const char * get_netbsd_elfcore_note_type PARAMS ((unsigned int)); static int process_note PARAMS ((Elf32_Internal_Note *)); static int process_corefile_note_segment PARAMS ((FILE *, bfd_vma, bfd_vma)); static int process_corefile_note_segments PARAMS ((FILE *)); @@ -263,6 +269,22 @@ typedef int Elf32_Word; ((X)->sh_name >= string_table_length \ ? "" : string_table + (X)->sh_name)) +/* Given st_shndx I, map to section_headers index. */ +#define SECTION_HEADER_INDEX(I) \ + ((I) < SHN_LORESERVE \ + ? (I) \ + : ((I) <= SHN_HIRESERVE \ + ? 0 \ + : (I) - (SHN_HIRESERVE + 1 - SHN_LORESERVE))) + +/* Reverse of the above. */ +#define SECTION_HEADER_NUM(N) \ + ((N) < SHN_LORESERVE \ + ? (N) \ + : (N) + (SHN_HIRESERVE + 1 - SHN_LORESERVE)) + +#define SECTION_HEADER(I) (section_headers + SECTION_HEADER_INDEX (I)) + #define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */ #define BYTE_GET(field) byte_get (field, sizeof (field)) @@ -283,9 +305,9 @@ typedef int Elf32_Word; #define NUM_ELEM(array) (sizeof (array) / sizeof ((array)[0])) -#define GET_ELF_SYMBOLS(file, offset, size) \ - (is_32bit_elf ? get_32bit_elf_symbols (file, offset, size) \ - : get_64bit_elf_symbols (file, offset, size)) +#define GET_ELF_SYMBOLS(file, section) \ + (is_32bit_elf ? get_32bit_elf_symbols (file, section) \ + : get_64bit_elf_symbols (file, section)) static void @@ -493,6 +515,25 @@ print_vma (vma, mode) #endif } +/* Display a symbol on stdout. If do_wide is not true then + format the symbol to be at most WIDTH characters, + truhncating as necessary. If WIDTH is negative then + format the string to be exactly - WIDTH characters, + truncating or padding as necessary. */ + +static void +print_symbol (width, symbol) + int width; + char * symbol; +{ + if (do_wide) + printf (symbol); + else if (width < 0) + printf ("%-*.*s", width, width, symbol); + else + printf ("%-.*s", width, symbol); +} + static bfd_vma byte_get_big_endian (field, size) unsigned char * field; @@ -556,6 +597,8 @@ guess_is_rela (e_machine) case EM_386: case EM_486: case EM_960: + case EM_OPENRISC: + case EM_OR32: case EM_M32R: case EM_CYGNUS_M32R: case EM_D10V: @@ -573,6 +616,7 @@ guess_is_rela (e_machine) case EM_SPARCV9: case EM_SPARC: case EM_PPC: + case EM_PPC64: case EM_V850: case EM_CYGNUS_V850: case EM_D30V: @@ -595,6 +639,7 @@ guess_is_rela (e_machine) case EM_S390: case EM_S390_OLD: case EM_MMIX: + case EM_XSTORMY16: return TRUE; case EM_MMA: @@ -985,6 +1030,11 @@ dump_relocations (file, rel_offset, rel_ rtype = elf_h8_reloc_type (type); break; + case EM_OPENRISC: + case EM_OR32: + rtype = elf_or32_reloc_type (type); + break; + case EM_PJ: case EM_PJ_OLD: rtype = elf_pj_reloc_type (type); @@ -1009,6 +1059,10 @@ dump_relocations (file, rel_offset, rel_ case EM_S390: rtype = elf_s390_reloc_type (type); break; + + case EM_XSTORMY16: + rtype = elf_xstormy16_reloc_type (type); + break; } if (rtype == NULL) @@ -1035,12 +1089,11 @@ dump_relocations (file, rel_offset, rel_ printf (" "); if (psym->st_name == 0) - printf ("%-25.25s", - SECTION_NAME (section_headers + psym->st_shndx)); + print_symbol (-25, SECTION_NAME (section_headers + psym->st_shndx)); else if (strtab == NULL) printf (_(""), psym->st_name); else - printf ("%-25.25s", strtab + psym->st_name); + print_symbol (-25, strtab + psym->st_name); if (is_rela) printf (" + %lx", (unsigned long) relas [i].r_addend); @@ -1134,6 +1187,18 @@ get_sparc64_dynamic_type (type) } static const char * +get_ppc64_dynamic_type (type) + unsigned long type; +{ + switch (type) + { + case DT_PPC64_GLINK: return "PPC64_GLINK"; + default: + return NULL; + } +} + +static const char * get_parisc_dynamic_type (type) unsigned long type; { @@ -1245,6 +1310,9 @@ get_dynamic_type (type) case EM_SPARCV9: result = get_sparc64_dynamic_type (type); break; + case EM_PPC64: + result = get_ppc64_dynamic_type (type); + break; default: result = NULL; break; @@ -1331,6 +1399,7 @@ get_machine_name (e_machine) case EM_SPARC32PLUS: return "Sparc v8+" ; case EM_960: return "Intel 90860"; case EM_PPC: return "PowerPC"; + case EM_PPC64: return "PowerPC64"; case EM_V800: return "NEC V800"; case EM_FR20: return "Fujitsu FR20"; case EM_RH32: return "TRW RH32"; @@ -1396,6 +1465,9 @@ get_machine_name (e_machine) case EM_X86_64: return "Advanced Micro Devices X86-64"; case EM_S390_OLD: case EM_S390: return "IBM S/390"; + case EM_XSTORMY16: return "Sanyo Xstormy16 CPU core"; + case EM_OPENRISC: + case EM_OR32: return "OpenRISC"; default: sprintf (buff, _(": %x"), e_machine); return buff; @@ -1623,30 +1695,12 @@ get_machine_flags (e_flags, e_machine) if (e_flags & EF_MIPS_ABI2) strcat (buf, ", abi2"); + if (e_flags & EF_MIPS_OPTIONS_FIRST) + strcat (buf, ", odk first"); + if (e_flags & EF_MIPS_32BITMODE) strcat (buf, ", 32bitmode"); - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_1) - strcat (buf, ", mips1"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_2) - strcat (buf, ", mips2"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_3) - strcat (buf, ", mips3"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_4) - strcat (buf, ", mips4"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_5) - strcat (buf, ", mips5"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32) - strcat (buf, ", mips32"); - - if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64) - strcat (buf, ", mips64"); - switch ((e_flags & EF_MIPS_MACH)) { case E_MIPS_MACH_3900: strcat (buf, ", 3900"); break; @@ -1655,8 +1709,47 @@ get_machine_flags (e_flags, e_machine) case E_MIPS_MACH_4650: strcat (buf, ", 4650"); break; case E_MIPS_MACH_4111: strcat (buf, ", 4111"); break; case E_MIPS_MACH_SB1: strcat (buf, ", sb1"); break; - default: strcat (buf, " UNKNOWN"); break; + case 0: + /* We simply ignore the field in this case to avoid confusion: + MIPS ELF does not specify EF_MIPS_MACH, it is a GNU + extension. */ + break; + default: strcat (buf, ", unknown CPU"); break; } + + switch ((e_flags & EF_MIPS_ABI)) + { + case E_MIPS_ABI_O32: strcat (buf, ", o32"); break; + case E_MIPS_ABI_O64: strcat (buf, ", o64"); break; + case E_MIPS_ABI_EABI32: strcat (buf, ", eabi32"); break; + case E_MIPS_ABI_EABI64: strcat (buf, ", eabi64"); break; + case 0: + /* We simply ignore the field in this case to avoid confusion: + MIPS ELF does not specify EF_MIPS_ABI, it is a GNU extension. + This means it is likely to be an o32 file, but not for + sure. */ + break; + default: strcat (buf, ", unknown ABI"); break; + } + + if (e_flags & EF_MIPS_ARCH_ASE_MDMX) + strcat (buf, ", mdmx"); + + if (e_flags & EF_MIPS_ARCH_ASE_M16) + strcat (buf, ", mips16"); + + switch ((e_flags & EF_MIPS_ARCH)) + { + case E_MIPS_ARCH_1: strcat (buf, ", mips1"); break; + case E_MIPS_ARCH_2: strcat (buf, ", mips2"); break; + case E_MIPS_ARCH_3: strcat (buf, ", mips3"); break; + case E_MIPS_ARCH_4: strcat (buf, ", mips4"); break; + case E_MIPS_ARCH_5: strcat (buf, ", mips5"); break; + case E_MIPS_ARCH_32: strcat (buf, ", mips32"); break; + case E_MIPS_ARCH_64: strcat (buf, ", mips64"); break; + default: strcat (buf, ", unknown ISA"); break; + } + break; case EM_SPARCV9: @@ -1797,6 +1890,10 @@ get_ia64_segment_type (type) { case PT_IA_64_ARCHEXT: return "IA_64_ARCHEXT"; case PT_IA_64_UNWIND: return "IA_64_UNWIND"; + case PT_HP_TLS: return "HP_TLS"; + case PT_IA_64_HP_OPT_ANOT: return "HP_OPT_ANNOT"; + case PT_IA_64_HP_HSL_ANOT: return "HP_HSL_ANNOT"; + case PT_IA_64_HP_STACK: return "HP_STACK"; default: break; } @@ -1820,6 +1917,9 @@ get_segment_type (p_type) case PT_SHLIB: return "SHLIB"; case PT_PHDR: return "PHDR"; + case PT_GNU_EH_FRAME: + return "GNU_EH_FRAME"; + default: if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC)) { @@ -1856,6 +1956,9 @@ get_segment_type (p_type) case EM_PARISC: result = get_parisc_segment_type (p_type); break; + case EM_IA_64: + result = get_ia64_segment_type (p_type); + break; default: result = NULL; break; @@ -2058,35 +2161,38 @@ struct option options [] = static void usage () { - fprintf (stdout, _("Usage: readelf {options} elf-file(s)\n")); - fprintf (stdout, _(" Options are:\n")); - fprintf (stdout, _(" -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n")); - fprintf (stdout, _(" -h or --file-header Display the ELF file header\n")); - fprintf (stdout, _(" -l or --program-headers or --segments\n")); - fprintf (stdout, _(" Display the program headers\n")); - fprintf (stdout, _(" -S or --section-headers or --sections\n")); - fprintf (stdout, _(" Display the sections' header\n")); - fprintf (stdout, _(" -e or --headers Equivalent to: -h -l -S\n")); - fprintf (stdout, _(" -s or --syms or --symbols Display the symbol table\n")); - fprintf (stdout, _(" -n or --notes Display the core notes (if present)\n")); - fprintf (stdout, _(" -r or --relocs Display the relocations (if present)\n")); - fprintf (stdout, _(" -u or --unwind Display the unwind info (if present)\n")); - fprintf (stdout, _(" -d or --dynamic Display the dynamic segment (if present)\n")); - fprintf (stdout, _(" -V or --version-info Display the version sections (if present)\n")); - fprintf (stdout, _(" -A or --arch-specific Display architecture specific information (if any).\n")); - fprintf (stdout, _(" -D or --use-dynamic Use the dynamic section info when displaying symbols\n")); - fprintf (stdout, _(" -x or --hex-dump=\n")); - fprintf (stdout, _(" Dump the contents of section \n")); - fprintf (stdout, _(" -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n")); - fprintf (stdout, _(" Display the contents of DWARF2 debug sections\n")); + fprintf (stdout, _("Usage: readelf elf-file(s)\n")); + fprintf (stdout, _(" Display information about the contents of ELF format files\n")); + fprintf (stdout, _(" Options are:\n\ + -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n\ + -h --file-header Display the ELF file header\n\ + -l --program-headers Display the program headers\n\ + --segments An alias for --program-headers\n\ + -S --section-headers Display the sections' header\n\ + --sections An alias for --section-headers\n\ + -e --headers Equivalent to: -h -l -S\n\ + -s --syms Display the symbol table\n\ + --symbols An alias for --syms\n\ + -n --notes Display the core notes (if present)\n\ + -r --relocs Display the relocations (if present)\n\ + -u --unwind Display the unwind info (if present)\n\ + -d --dynamic Display the dynamic segment (if present)\n\ + -V --version-info Display the version sections (if present)\n\ + -A --arch-specific Display architecture specific information (if any).\n\ + -D --use-dynamic Use the dynamic section info when displaying symbols\n\ + -x --hex-dump= Dump the contents of section \n\ + -w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n\ + Display the contents of DWARF2 debug sections\n")); #ifdef SUPPORT_DISASSEMBLY - fprintf (stdout, _(" -i or --instruction-dump=\n")); - fprintf (stdout, _(" Disassemble the contents of section \n")); + fprintf (stdout, _("\ + -i --instruction-dump=\n\ + Disassemble the contents of section \n")); #endif - fprintf (stdout, _(" -I or --histogram Display histogram of bucket list lengths\n")); - fprintf (stdout, _(" -v or --version Display the version number of readelf\n")); - fprintf (stdout, _(" -W or --wide Don't split lines to fit into 80 columns\n")); - fprintf (stdout, _(" -H or --help Display this information\n")); + fprintf (stdout, _("\ + -I --histogram Display histogram of bucket list lengths\n\ + -W --wide Allow output width to exceed 80 characters\n\ + -H --help Display this information\n\ + -v --version Display the version number of readelf\n")); fprintf (stdout, _("Report bugs to %s\n"), REPORT_BUGS_TO); exit (0); @@ -2318,8 +2424,8 @@ get_elf_class (elf_class) switch (elf_class) { case ELFCLASSNONE: return _("none"); - case ELFCLASS32: return _("ELF32"); - case ELFCLASS64: return _("ELF64"); + case ELFCLASS32: return "ELF32"; + case ELFCLASS64: return "ELF64"; default: sprintf (buff, _(""), elf_class); return buff; @@ -2351,20 +2457,20 @@ get_osabi_name (osabi) switch (osabi) { - case ELFOSABI_NONE: return _("UNIX - System V"); - case ELFOSABI_HPUX: return _("UNIX - HP-UX"); - case ELFOSABI_NETBSD: return _("UNIX - NetBSD"); - case ELFOSABI_LINUX: return _("UNIX - Linux"); - case ELFOSABI_HURD: return _("GNU/Hurd"); - case ELFOSABI_SOLARIS: return _("UNIX - Solaris"); - case ELFOSABI_AIX: return _("UNIX - AIX"); - case ELFOSABI_IRIX: return _("UNIX - IRIX"); - case ELFOSABI_FREEBSD: return _("UNIX - FreeBSD"); - case ELFOSABI_TRU64: return _("UNIX - TRU64"); - case ELFOSABI_MODESTO: return _("Novell - Modesto"); - case ELFOSABI_OPENBSD: return _("UNIX - OpenBSD"); + case ELFOSABI_NONE: return "UNIX - System V"; + case ELFOSABI_HPUX: return "UNIX - HP-UX"; + case ELFOSABI_NETBSD: return "UNIX - NetBSD"; + case ELFOSABI_LINUX: return "UNIX - Linux"; + case ELFOSABI_HURD: return "GNU/Hurd"; + case ELFOSABI_SOLARIS: return "UNIX - Solaris"; + case ELFOSABI_AIX: return "UNIX - AIX"; + case ELFOSABI_IRIX: return "UNIX - IRIX"; + case ELFOSABI_FREEBSD: return "UNIX - FreeBSD"; + case ELFOSABI_TRU64: return "UNIX - TRU64"; + case ELFOSABI_MODESTO: return "Novell - Modesto"; + case ELFOSABI_OPENBSD: return "UNIX - OpenBSD"; case ELFOSABI_STANDALONE: return _("Standalone App"); - case ELFOSABI_ARM: return _("ARM"); + case ELFOSABI_ARM: return "ARM"; default: sprintf (buff, _(""), osabi); return buff; @@ -2435,10 +2541,26 @@ process_file_header () (long) elf_header.e_phnum); printf (_(" Size of section headers: %ld (bytes)\n"), (long) elf_header.e_shentsize); - printf (_(" Number of section headers: %ld\n"), + printf (_(" Number of section headers: %ld"), (long) elf_header.e_shnum); - printf (_(" Section header string table index: %ld\n"), + if (section_headers != NULL && elf_header.e_shnum == 0) + printf (" (%ld)", (long) section_headers[0].sh_size); + putc ('\n', stdout); + printf (_(" Section header string table index: %ld"), (long) elf_header.e_shstrndx); + if (section_headers != NULL && elf_header.e_shstrndx == SHN_XINDEX) + printf (" (%ld)", (long) section_headers[0].sh_link); + putc ('\n', stdout); + } + + if (section_headers != NULL) + { + if (elf_header.e_shnum == 0) + elf_header.e_shnum = section_headers[0].sh_size; + if (elf_header.e_shstrndx == SHN_XINDEX) + elf_header.e_shstrndx = section_headers[0].sh_link; + free (section_headers); + section_headers = NULL; } return 1; @@ -2706,7 +2828,7 @@ process_program_headers (file) if (loadaddr == -1) { - /* Very strange. */ + /* Very strange. */ loadaddr = 0; } @@ -2719,7 +2841,7 @@ process_program_headers (file) for (i = 0; i < elf_header.e_phnum; i++) { - int j; + unsigned int j; Elf_Internal_Shdr * section; segment = program_headers + i; @@ -2727,7 +2849,7 @@ process_program_headers (file) printf (" %2.2d ", i); - for (j = 0; j < elf_header.e_shnum; j++, section ++) + for (j = 1; j < elf_header.e_shnum; j++, section ++) { if (section->sh_size > 0 /* Compare allocated sections by VMA, unallocated @@ -2753,8 +2875,9 @@ process_program_headers (file) static int -get_32bit_section_headers (file) +get_32bit_section_headers (file, num) FILE * file; + unsigned int num; { Elf32_External_Shdr * shdrs; Elf32_Internal_Shdr * internal; @@ -2762,13 +2885,13 @@ get_32bit_section_headers (file) shdrs = ((Elf32_External_Shdr *) get_data (NULL, file, elf_header.e_shoff, - elf_header.e_shentsize * elf_header.e_shnum, + elf_header.e_shentsize * num, _("section headers"))); if (!shdrs) return 0; - section_headers = (Elf_Internal_Shdr *) malloc - (elf_header.e_shnum * sizeof (Elf_Internal_Shdr)); + section_headers = ((Elf_Internal_Shdr *) + malloc (num * sizeof (Elf_Internal_Shdr))); if (section_headers == NULL) { @@ -2777,7 +2900,7 @@ get_32bit_section_headers (file) } for (i = 0, internal = section_headers; - i < elf_header.e_shnum; + i < num; i ++, internal ++) { internal->sh_name = BYTE_GET (shdrs[i].sh_name); @@ -2798,8 +2921,9 @@ get_32bit_section_headers (file) } static int -get_64bit_section_headers (file) +get_64bit_section_headers (file, num) FILE * file; + unsigned int num; { Elf64_External_Shdr * shdrs; Elf64_Internal_Shdr * internal; @@ -2807,13 +2931,13 @@ get_64bit_section_headers (file) shdrs = ((Elf64_External_Shdr *) get_data (NULL, file, elf_header.e_shoff, - elf_header.e_shentsize * elf_header.e_shnum, + elf_header.e_shentsize * num, _("section headers"))); if (!shdrs) return 0; - section_headers = (Elf_Internal_Shdr *) malloc - (elf_header.e_shnum * sizeof (Elf_Internal_Shdr)); + section_headers = ((Elf_Internal_Shdr *) + malloc (num * sizeof (Elf_Internal_Shdr))); if (section_headers == NULL) { @@ -2822,7 +2946,7 @@ get_64bit_section_headers (file) } for (i = 0, internal = section_headers; - i < elf_header.e_shnum; + i < num; i ++, internal ++) { internal->sh_name = BYTE_GET (shdrs[i].sh_name); @@ -2843,29 +2967,47 @@ get_64bit_section_headers (file) } static Elf_Internal_Sym * -get_32bit_elf_symbols (file, offset, number) +get_32bit_elf_symbols (file, section) FILE * file; - unsigned long offset; - unsigned long number; + Elf_Internal_Shdr *section; { + unsigned long number; Elf32_External_Sym * esyms; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym * isyms; Elf_Internal_Sym * psym; unsigned int j; esyms = ((Elf32_External_Sym *) - get_data (NULL, file, offset, - number * sizeof (Elf32_External_Sym), _("symbols"))); + get_data (NULL, file, section->sh_offset, + section->sh_size, _("symbols"))); if (!esyms) return NULL; + shndx = NULL; + if (symtab_shndx_hdr != NULL + && (symtab_shndx_hdr->sh_link + == (unsigned long) SECTION_HEADER_NUM (section - section_headers))) + { + shndx = ((Elf_External_Sym_Shndx *) + get_data (NULL, file, symtab_shndx_hdr->sh_offset, + symtab_shndx_hdr->sh_size, _("symtab shndx"))); + if (!shndx) + { + free (esyms); + return NULL; + } + } + + number = section->sh_size / section->sh_entsize; isyms = (Elf_Internal_Sym *) malloc (number * sizeof (Elf_Internal_Sym)); if (isyms == NULL) { error (_("Out of memory\n")); + if (shndx) + free (shndx); free (esyms); - return NULL; } @@ -2877,39 +3019,62 @@ get_32bit_elf_symbols (file, offset, num psym->st_value = BYTE_GET (esyms[j].st_value); psym->st_size = BYTE_GET (esyms[j].st_size); psym->st_shndx = BYTE_GET (esyms[j].st_shndx); + if (psym->st_shndx == SHN_XINDEX && shndx != NULL) + psym->st_shndx + = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j])); psym->st_info = BYTE_GET (esyms[j].st_info); psym->st_other = BYTE_GET (esyms[j].st_other); } + if (shndx) + free (shndx); free (esyms); return isyms; } static Elf_Internal_Sym * -get_64bit_elf_symbols (file, offset, number) +get_64bit_elf_symbols (file, section) FILE * file; - unsigned long offset; - unsigned long number; + Elf_Internal_Shdr *section; { + unsigned long number; Elf64_External_Sym * esyms; + Elf_External_Sym_Shndx *shndx; Elf_Internal_Sym * isyms; Elf_Internal_Sym * psym; unsigned int j; esyms = ((Elf64_External_Sym *) - get_data (NULL, file, offset, - number * sizeof (Elf64_External_Sym), _("symbols"))); + get_data (NULL, file, section->sh_offset, + section->sh_size, _("symbols"))); if (!esyms) return NULL; + shndx = NULL; + if (symtab_shndx_hdr != NULL + && (symtab_shndx_hdr->sh_link + == (unsigned long) SECTION_HEADER_NUM (section - section_headers))) + { + shndx = ((Elf_External_Sym_Shndx *) + get_data (NULL, file, symtab_shndx_hdr->sh_offset, + symtab_shndx_hdr->sh_size, _("symtab shndx"))); + if (!shndx) + { + free (esyms); + return NULL; + } + } + + number = section->sh_size / section->sh_entsize; isyms = (Elf_Internal_Sym *) malloc (number * sizeof (Elf_Internal_Sym)); if (isyms == NULL) { error (_("Out of memory\n")); + if (shndx) + free (shndx); free (esyms); - return NULL; } @@ -2921,10 +3086,15 @@ get_64bit_elf_symbols (file, offset, num psym->st_info = BYTE_GET (esyms[j].st_info); psym->st_other = BYTE_GET (esyms[j].st_other); psym->st_shndx = BYTE_GET (esyms[j].st_shndx); + if (psym->st_shndx == SHN_XINDEX && shndx != NULL) + psym->st_shndx + = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j])); psym->st_value = BYTE_GET8 (esyms[j].st_value); psym->st_size = BYTE_GET8 (esyms[j].st_size); } + if (shndx) + free (shndx); free (esyms); return isyms; @@ -2982,7 +3152,7 @@ process_section_headers (file) FILE * file; { Elf_Internal_Shdr * section; - int i; + unsigned int i; section_headers = NULL; @@ -3000,14 +3170,14 @@ process_section_headers (file) if (is_32bit_elf) { - if (! get_32bit_section_headers (file)) + if (! get_32bit_section_headers (file, elf_header.e_shnum)) return 0; } - else if (! get_64bit_section_headers (file)) + else if (! get_64bit_section_headers (file, elf_header.e_shnum)) return 0; /* Read in the string table, so that we have names to display. */ - section = section_headers + elf_header.e_shstrndx; + section = SECTION_HEADER (elf_header.e_shstrndx); if (section->sh_size != 0) { @@ -3018,7 +3188,7 @@ process_section_headers (file) } /* Scan the sections for the dynamic symbol table - and dynamic string table and debug sections. */ + and dynamic string table and debug sections. */ dynamic_symbols = NULL; dynamic_strings = NULL; dynamic_syminfo = NULL; @@ -3038,8 +3208,7 @@ process_section_headers (file) } num_dynamic_syms = section->sh_size / section->sh_entsize; - dynamic_symbols = - GET_ELF_SYMBOLS (file, section->sh_offset, num_dynamic_syms); + dynamic_symbols = GET_ELF_SYMBOLS (file, section); } else if (section->sh_type == SHT_STRTAB && strcmp (name, ".dynstr") == 0) @@ -3054,6 +3223,15 @@ process_section_headers (file) section->sh_size, _("dynamic strings")); } + else if (section->sh_type == SHT_SYMTAB_SHNDX) + { + if (symtab_shndx_hdr != NULL) + { + error (_("File contains multiple symtab shndx tables\n")); + continue; + } + symtab_shndx_hdr = section; + } else if ((do_debugging || do_debug_info || do_debug_abbrevs || do_debug_lines || do_debug_pubnames || do_debug_aranges || do_debug_frames || do_debug_macinfo || do_debug_str) @@ -3102,8 +3280,8 @@ process_section_headers (file) i < elf_header.e_shnum; i ++, section ++) { - printf (" [%2d] %-17.17s %-15.15s ", - i, + printf (" [%2u] %-17.17s %-15.15s ", + SECTION_HEADER_NUM (i), SECTION_NAME (section), get_section_type_name (section->sh_type)); @@ -3190,10 +3368,10 @@ process_section_headers (file) } } - printf (_("Key to Flags:\n")); - printf (_(" W (write), A (alloc), X (execute), M (merge), S (strings)\n")); - printf (_(" I (info), L (link order), G (group), x (unknown)\n")); - printf (_(" O (extra OS processing required) o (OS specific), p (processor specific)\n")); + printf (_("Key to Flags:\n\ + W (write), A (alloc), X (execute), M (merge), S (strings)\n\ + I (info), L (link order), G (group), x (unknown)\n\ + O (extra OS processing required) o (OS specific), p (processor specific)\n")); return 1; } @@ -3302,14 +3480,14 @@ process_relocs (file) { Elf32_Internal_Shdr * symsec; - symsec = section_headers + section->sh_link; + symsec = SECTION_HEADER (section->sh_link); nsyms = symsec->sh_size / symsec->sh_entsize; - symtab = GET_ELF_SYMBOLS (file, symsec->sh_offset, nsyms); + symtab = GET_ELF_SYMBOLS (file, symsec); if (symtab == NULL) continue; - strsec = section_headers + symsec->sh_link; + strsec = SECTION_HEADER (symsec->sh_link); strtab = (char *) get_data (NULL, file, strsec->sh_offset, strsec->sh_size, @@ -3561,7 +3739,7 @@ slurp_ia64_unwind_table (file, aux, sec) ++relsec) { if (relsec->sh_type != SHT_RELA - || section_headers + relsec->sh_info != sec) + || SECTION_HEADER (relsec->sh_info) != sec) continue; if (!slurp_rela_relocs (file, relsec->sh_offset, relsec->sh_size, @@ -3655,9 +3833,9 @@ process_unwind (file) if (sec->sh_type == SHT_SYMTAB) { aux.nsyms = sec->sh_size / sec->sh_entsize; - aux.symtab = GET_ELF_SYMBOLS (file, sec->sh_offset, aux.nsyms); + aux.symtab = GET_ELF_SYMBOLS (file, sec); - strsec = section_headers + sec->sh_link; + strsec = SECTION_HEADER (sec->sh_link); aux.strtab_size = strsec->sh_size; aux.strtab = (char *) get_data (NULL, file, strsec->sh_offset, aux.strtab_size, _("string table")); @@ -4037,7 +4215,7 @@ process_dynamic_segment (file) i < dynamic_size; ++i, ++ entry) { - unsigned long offset; + Elf32_Internal_Shdr section; if (entry->d_tag != DT_SYMTAB) continue; @@ -4047,24 +4225,26 @@ process_dynamic_segment (file) /* Since we do not know how big the symbol table is, we default to reading in the entire file (!) and processing that. This is overkill, I know, but it - should work. */ - offset = entry->d_un.d_val - loadaddr; + should work. */ + section.sh_offset = entry->d_un.d_val - loadaddr; if (fseek (file, 0, SEEK_END)) error (_("Unable to seek to end of file!")); + section.sh_size = ftell (file) - section.sh_offset; if (is_32bit_elf) - num_dynamic_syms = (ftell (file) - offset) / sizeof (Elf32_External_Sym); + section.sh_entsize = sizeof (Elf32_External_Sym); else - num_dynamic_syms = (ftell (file) - offset) / sizeof (Elf64_External_Sym); + section.sh_entsize = sizeof (Elf64_External_Sym); + num_dynamic_syms = section.sh_size / section.sh_entsize; if (num_dynamic_syms < 1) { error (_("Unable to determine the number of symbols to load\n")); continue; } - dynamic_symbols = GET_ELF_SYMBOLS (file, offset, num_dynamic_syms); + dynamic_symbols = GET_ELF_SYMBOLS (file, §ion); } } @@ -4086,7 +4266,7 @@ process_dynamic_segment (file) /* Since we do not know how big the string table is, we default to reading in the entire file (!) and processing that. This is overkill, I know, but it - should work. */ + should work. */ offset = entry->d_un.d_val - loadaddr; if (fseek (file, 0, SEEK_END)) @@ -4585,7 +4765,7 @@ process_version_sections (file) printf_vma (section->sh_addr); printf (_(" Offset: %#08lx Link: %lx (%s)\n"), (unsigned long) section->sh_offset, section->sh_link, - SECTION_NAME (section_headers + section->sh_link)); + SECTION_NAME (SECTION_HEADER (section->sh_link))); edefs = ((Elf_External_Verdef *) get_data (NULL, file, section->sh_offset, @@ -4676,7 +4856,7 @@ process_version_sections (file) printf_vma (section->sh_addr); printf (_(" Offset: %#08lx Link to section: %ld (%s)\n"), (unsigned long) section->sh_offset, section->sh_link, - SECTION_NAME (section_headers + section->sh_link)); + SECTION_NAME (SECTION_HEADER (section->sh_link))); eneed = ((Elf_External_Verneed *) get_data (NULL, file, section->sh_offset, @@ -4758,15 +4938,14 @@ process_version_sections (file) Elf_Internal_Sym * symbols; Elf32_Internal_Shdr * string_sec; - link_section = section_headers + section->sh_link; + link_section = SECTION_HEADER (section->sh_link); total = section->sh_size / section->sh_entsize; found = 1; - symbols = GET_ELF_SYMBOLS (file, link_section->sh_offset, - link_section->sh_size / link_section->sh_entsize); + symbols = GET_ELF_SYMBOLS (file, link_section); - string_sec = section_headers + link_section->sh_link; + string_sec = SECTION_HEADER (link_section->sh_link); strtab = (char *) get_data (NULL, file, string_sec->sh_offset, string_sec->sh_size, @@ -4827,8 +5006,7 @@ process_version_sections (file) check_def = 1; check_need = 1; - if (symbols [cnt + j].st_shndx >= SHN_LORESERVE - || section_headers[symbols [cnt + j].st_shndx].sh_type + if (SECTION_HEADER (symbols [cnt + j].st_shndx)->sh_type != SHT_NOBITS) { if (symbols [cnt + j].st_shndx == SHN_UNDEF) @@ -5054,10 +5232,10 @@ get_symbol_index_type (type) default: if (type >= SHN_LOPROC && type <= SHN_HIPROC) return "PRC"; - else if (type >= SHN_LORESERVE && type <= SHN_HIRESERVE) - return "RSV"; else if (type >= SHN_LOOS && type <= SHN_HIOS) return "OS "; + else if (type >= SHN_LORESERVE && type <= SHN_HIRESERVE) + return "RSV"; else { static char buff [32]; @@ -5107,7 +5285,7 @@ get_dynamic_data (file, number) return i_data; } -/* Dump the symbol table */ +/* Dump the symbol table. */ static int process_symbol_table (file) FILE * file; @@ -5185,8 +5363,9 @@ process_symbol_table (file) printf (" %6s", get_symbol_type (ELF_ST_TYPE (psym->st_info))); printf (" %6s", get_symbol_binding (ELF_ST_BIND (psym->st_info))); printf (" %3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other))); - printf (" %3.3s", get_symbol_index_type (psym->st_shndx)); - printf (" %s\n", dynamic_strings + psym->st_name); + printf (" %3.3s ", get_symbol_index_type (psym->st_shndx)); + print_symbol (25, dynamic_strings + psym->st_name); + putchar ('\n'); } } } @@ -5216,8 +5395,7 @@ process_symbol_table (file) else printf (_(" Num: Value Size Type Bind Vis Ndx Name\n")); - symtab = GET_ELF_SYMBOLS (file, section->sh_offset, - section->sh_size / section->sh_entsize); + symtab = GET_ELF_SYMBOLS (file, section); if (symtab == NULL) continue; @@ -5227,7 +5405,7 @@ process_symbol_table (file) { Elf32_Internal_Shdr * string_sec; - string_sec = section_headers + section->sh_link; + string_sec = SECTION_HEADER (section->sh_link); strtab = (char *) get_data (NULL, file, string_sec->sh_offset, string_sec->sh_size, @@ -5245,8 +5423,8 @@ process_symbol_table (file) printf (" %-7s", get_symbol_type (ELF_ST_TYPE (psym->st_info))); printf (" %-6s", get_symbol_binding (ELF_ST_BIND (psym->st_info))); printf (" %-3s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other))); - printf (" %4s", get_symbol_index_type (psym->st_shndx)); - printf (" %s", strtab + psym->st_name); + printf (" %4s ", get_symbol_index_type (psym->st_shndx)); + print_symbol (25, strtab + psym->st_name); if (section->sh_type == SHT_DYNSYM && version_info [DT_VERSIONTAGIDX (DT_VERSYM)] != 0) @@ -5265,9 +5443,8 @@ process_symbol_table (file) vers_data = byte_get (data, 2); - is_nobits = psym->st_shndx < SHN_LORESERVE ? - (section_headers [psym->st_shndx].sh_type == SHT_NOBITS) - : 0; + is_nobits = (SECTION_HEADER (psym->st_shndx)->sh_type + == SHT_NOBITS); check_def = (psym->st_shndx != SHN_UNDEF); @@ -5484,8 +5661,9 @@ process_syminfo (file) { unsigned short int flags = dynamic_syminfo[i].si_flags; - printf ("%4d: %-30s ", i, - dynamic_strings + dynamic_symbols[i].st_name); + printf ("%4d: ", i); + print_symbol (30, dynamic_strings + dynamic_symbols[i].st_name); + putchar (' '); switch (dynamic_syminfo[i].si_boundto) { @@ -5498,9 +5676,12 @@ process_syminfo (file) default: if (dynamic_syminfo[i].si_boundto > 0 && dynamic_syminfo[i].si_boundto < dynamic_size) - printf ("%-10s ", - dynamic_strings - + dynamic_segment[dynamic_syminfo[i].si_boundto].d_un.d_val); + { + print_symbol (10, dynamic_strings + + dynamic_segment + [dynamic_syminfo[i].si_boundto].d_un.d_val); + putchar (' ' ); + } else printf ("%-10d ", dynamic_syminfo[i].si_boundto); break; @@ -6948,7 +7129,7 @@ load_debug_str (file) FILE * file; { Elf32_Internal_Shdr * sec; - int i; + unsigned int i; /* If it is already loaded, do nothing. */ if (debug_str_contents != NULL) @@ -7190,7 +7371,7 @@ read_and_display_attr_value (attribute, break; case DW_FORM_indirect: - /* handled above */ + /* Handled above. */ break; default: @@ -7386,7 +7567,7 @@ display_debug_info (section, start, file DWARF2_Internal_CompUnit compunit; Elf32_Internal_Shdr * relsec; unsigned char * tags; - int i; + unsigned int i; int level; unsigned long cu_offset; @@ -7409,23 +7590,22 @@ display_debug_info (section, start, file relsec < section_headers + elf_header.e_shnum; ++relsec) { - unsigned long nrelas, nsyms; + unsigned long nrelas; Elf_Internal_Rela *rela, *rp; Elf32_Internal_Shdr *symsec; Elf_Internal_Sym *symtab; Elf_Internal_Sym *sym; if (relsec->sh_type != SHT_RELA - || section_headers + relsec->sh_info != section) + || SECTION_HEADER (relsec->sh_info) != section) continue; if (!slurp_rela_relocs (file, relsec->sh_offset, relsec->sh_size, & rela, & nrelas)) return 0; - symsec = section_headers + relsec->sh_link; - nsyms = symsec->sh_size / symsec->sh_entsize; - symtab = GET_ELF_SYMBOLS (file, symsec->sh_offset, nsyms); + symsec = SECTION_HEADER (relsec->sh_link); + symtab = GET_ELF_SYMBOLS (file, symsec); for (rp = rela; rp < rela + nrelas; ++rp) { @@ -8591,9 +8771,10 @@ process_mips_specific (file) tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec); - printf ("%3lu: %-20s %s %#10lx %-7ld", (unsigned long) cnt, - dynamic_strings + liblist.l_name, timebuf, - liblist.l_checksum, liblist.l_version); + printf ("%3lu: ", (unsigned long) cnt); + print_symbol (20, dynamic_strings + liblist.l_name); + printf (" %s %#10lx %-7ld", timebuf, liblist.l_checksum, + liblist.l_version); if (liblist.l_flags == 0) puts (" NONE"); @@ -8891,11 +9072,13 @@ process_mips_specific (file) for (cnt = 0; cnt < conflictsno; ++cnt) { - Elf_Internal_Sym * psym = &dynamic_symbols[iconf[cnt]]; + Elf_Internal_Sym * psym = & dynamic_symbols [iconf [cnt]]; - printf ("%5lu: %8lu ", (unsigned long) cnt, iconf[cnt]); + printf ("%5lu: %8lu ", (unsigned long) cnt, iconf [cnt]); print_vma (psym->st_value, FULL_HEX); - printf (" %s\n", dynamic_strings + psym->st_name); + putchar (' '); + print_symbol (25, dynamic_strings + psym->st_name); + putchar ('\n'); } free (iconf); @@ -8904,7 +9087,7 @@ process_mips_specific (file) return 1; } -static char * +static const char * get_note_type (e_type) unsigned e_type; { @@ -8929,18 +9112,100 @@ get_note_type (e_type) } } +static const char * +get_netbsd_elfcore_note_type (e_type) + unsigned e_type; +{ + static char buff[64]; + + if (e_type == NT_NETBSDCORE_PROCINFO) + { + /* NetBSD core "procinfo" structure. */ + return _("NetBSD procinfo structure"); + } + + /* As of Jan 2002 there are no other machine-independent notes + defined for NetBSD core files. If the note type is less + than the start of the machine-dependent note types, we don't + understand it. */ + + if (e_type < NT_NETBSDCORE_FIRSTMACH) + { + sprintf (buff, _("Unknown note type: (0x%08x)"), e_type); + return buff; + } + + switch (elf_header.e_machine) + { + /* On the Alpha, SPARC (32-bit and 64-bit), PT_GETREGS == mach+0 + and PT_GETFPREGS == mach+2. */ + + case EM_OLD_ALPHA: + case EM_ALPHA: + case EM_SPARC: + case EM_SPARC32PLUS: + case EM_SPARCV9: + switch (e_type) + { + case NT_NETBSDCORE_FIRSTMACH+0: + return _("PT_GETREGS (reg structure)"); + case NT_NETBSDCORE_FIRSTMACH+2: + return _("PT_GETFPREGS (fpreg structure)"); + default: + break; + } + break; + + /* On all other arch's, PT_GETREGS == mach+1 and + PT_GETFPREGS == mach+3. */ + default: + switch (e_type) + { + case NT_NETBSDCORE_FIRSTMACH+1: + return _("PT_GETREGS (reg structure)"); + case NT_NETBSDCORE_FIRSTMACH+3: + return _("PT_GETFPREGS (fpreg structure)"); + default: + break; + } + } + + sprintf (buff, _("PT_FIRSTMACH+%d"), e_type - NT_NETBSDCORE_FIRSTMACH); + return buff; +} + /* Note that by the ELF standard, the name field is already null byte terminated, and namesz includes the terminating null byte. I.E. the value of namesz for the name "FSF" is 4. - If the value of namesz is zero, there is no name present. */ + If the value of namesz is zero, there is no name present. */ static int process_note (pnote) Elf32_Internal_Note * pnote; { + const char *nt; + + if (pnote->namesz == 0) + { + /* If there is no note name, then use the default set of + note type strings. */ + nt = get_note_type (pnote->type); + } + else if (strncmp (pnote->namedata, "NetBSD-CORE", 11) == 0) + { + /* NetBSD-specific core file notes. */ + nt = get_netbsd_elfcore_note_type (pnote->type); + } + else + { + /* Don't recognize this note name; just use the default set of + note type strings. */ + nt = get_note_type (pnote->type); + } + printf (" %s\t\t0x%08lx\t%s\n", pnote->namesz ? pnote->namedata : "(NONE)", - pnote->descsz, get_note_type (pnote->type)); + pnote->descsz, nt); return 1; } @@ -9156,8 +9421,8 @@ get_file_header (file) overwritting things. */ if (sizeof (bfd_vma) < 8) { - error (_("This instance of readelf has been built without support for a\n")); - error (_("64 bit data type and so it cannot read 64 bit ELF files.\n")); + error (_("This instance of readelf has been built without support for a\n\ +64 bit data type and so it cannot read 64 bit ELF files.\n")); return 0; } @@ -9179,6 +9444,13 @@ get_file_header (file) elf_header.e_shstrndx = BYTE_GET (ehdr64.e_shstrndx); } + /* There may be some extensions in the first section header. Don't + bomb if we can't read it. */ + if (is_32bit_elf) + get_32bit_section_headers (file, 1); + else + get_64bit_section_headers (file, 1); + return 1; } @@ -9289,7 +9561,7 @@ process_file (file_name) #ifdef SUPPORT_DISASSEMBLY /* Needed by the i386 disassembler. For extra credit, someone could fix this so that we insert symbolic addresses here, esp for GOT/PLT - symbols */ + symbols. */ void print_address (unsigned int addr, FILE * outfile) @@ -9297,7 +9569,7 @@ print_address (unsigned int addr, FILE * fprintf (outfile,"0x%8.8x", addr); } -/* Needed by the i386 disassembler. */ +/* Needed by the i386 disassembler. */ void db_task_printsym (unsigned int addr) { diff -uprN binutils-2.11.92.0.12.3/binutils/size.c binutils-2.11.93.0.2/binutils/size.c --- binutils-2.11.92.0.12.3/binutils/size.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/size.c Sun Feb 3 11:22:31 2002 @@ -1,22 +1,22 @@ /* size.c -- report size of various sections of an executable file. - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 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. */ /* Extensions/incompatibilities: o - BSD output has filenames at the end. @@ -26,13 +26,12 @@ Foundation, Inc., 59 Temple Place - Suit o - We also handle core files. o - We also handle archives. If you write shell scripts which manipulate this info then you may be - out of luck; there's no --compatibility or --pedantic option. -*/ + out of luck; there's no --compatibility or --pedantic option. */ #include "bfd.h" -#include "getopt.h" #include "bucomm.h" #include "libiberty.h" +#include "getopt.h" #ifndef BSD_DEFAULT #define BSD_DEFAULT 1 @@ -43,49 +42,63 @@ Foundation, Inc., 59 Temple Place - Suit enum { decimal, octal, hex - } radix = decimal; + } +radix = decimal; + int berkeley_format = BSD_DEFAULT; /* 0 means use AT&T-style output. */ int show_version = 0; int show_help = 0; +int show_totals = 0; + +static bfd_size_type total_bsssize; +static bfd_size_type total_datasize; +static bfd_size_type total_textsize; /* Program exit status. */ int return_code = 0; static char *target = NULL; -/* Static declarations */ +/* Static declarations. */ -static void usage PARAMS ((FILE *, int)); -static void display_file PARAMS ((char *filename)); -static void display_bfd PARAMS ((bfd *)); -static void display_archive PARAMS ((bfd *)); -static int size_number PARAMS ((bfd_size_type)); +static void usage PARAMS ((FILE *, int)); +static void display_file PARAMS ((char *)); +static void display_bfd PARAMS ((bfd *)); +static void display_archive PARAMS ((bfd *)); +static int size_number PARAMS ((bfd_size_type)); #if 0 -static void lprint_number PARAMS ((int, bfd_size_type)); +static void lprint_number PARAMS ((int, bfd_size_type)); #endif -static void rprint_number PARAMS ((int, bfd_size_type)); +static void rprint_number PARAMS ((int, bfd_size_type)); static void print_berkeley_format PARAMS ((bfd *)); -static void sysv_internal_sizer PARAMS ((bfd *, asection *, PTR)); +static void sysv_internal_sizer PARAMS ((bfd *, asection *, PTR)); static void sysv_internal_printer PARAMS ((bfd *, asection *, PTR)); -static void print_sysv_format PARAMS ((bfd *)); -static void print_sizes PARAMS ((bfd * file)); -static void berkeley_sum PARAMS ((bfd *, sec_ptr, PTR)); +static void print_sysv_format PARAMS ((bfd *)); +static void print_sizes PARAMS ((bfd * file)); +static void berkeley_sum PARAMS ((bfd *, sec_ptr, PTR)); static void usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("\ -Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n\ - [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n\ - [-V | --version] [--target=bfdname] [--help] [file...]\n"), - program_name); + 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, _(" 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\ + -t --totals Display the total sizes (Berkeley only)\n\ + --target= Set the binary file format\n\ + -h --help Display this information\n\ + -v --version Display the program's version\n\ +\n"), #if BSD_DEFAULT - fputs (_("default is --format=berkeley\n"), stream); + "berkeley" #else - fputs (_("default is --format=sysv\n"), stream); + "sysv" #endif +); list_supported_targets (program_name, stream); if (status == 0) fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); @@ -97,11 +110,14 @@ struct option long_options[] = {"format", required_argument, 0, 200}, {"radix", required_argument, 0, 201}, {"target", required_argument, 0, 202}, + {"totals", no_argument, &show_totals, 1}, {"version", no_argument, &show_version, 1}, {"help", no_argument, &show_help, 1}, {0, no_argument, 0, 0} }; +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -125,7 +141,7 @@ main (argc, argv) bfd_init (); set_default_bfd_target (); - while ((c = getopt_long (argc, argv, "ABVdfox", long_options, + while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options, (int *) 0)) != EOF) switch (c) { @@ -179,6 +195,7 @@ main (argc, argv) case 'B': berkeley_format = 1; break; + case 'v': case 'V': show_version = 1; break; @@ -191,6 +208,9 @@ main (argc, argv) case 'o': radix = octal; break; + case 't': + show_totals = 1; + break; case 'f': /* FIXME : For sysv68, `-f' means `full format', i.e. `[fname:] M(.text) + N(.data) + O(.bss) + P(.comment) = Q' where `fname: ' appears only if there are >= 2 input files, @@ -203,6 +223,8 @@ main (argc, argv) break; case 0: break; + case 'h': + case 'H': case '?': usage (stderr, 1); } @@ -218,6 +240,20 @@ main (argc, argv) for (; optind < argc;) display_file (argv[optind++]); + if (show_totals && berkeley_format) + { + bfd_size_type total = total_textsize + total_datasize + total_bsssize; + + rprint_number (7, total_textsize); + putchar('\t'); + rprint_number (7, total_datasize); + putchar('\t'); + rprint_number (7, total_bsssize); + printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"), + (unsigned long) total, (unsigned long) total); + fputs ("(TOTALS)\n", stdout); + } + return return_code; } @@ -251,7 +287,7 @@ display_bfd (abfd) if (bfd_check_format_matches (abfd, bfd_core, &matching)) { - CONST char *core_cmd; + const char *core_cmd; print_sizes (abfd); fputs (" (core file", stdout); @@ -297,7 +333,7 @@ display_archive (file) } display_bfd (arfile); - /* Don't close the archive elements; we need them for next_archive */ + /* Don't close the archive elements; we need them for next_archive. */ } } @@ -306,6 +342,7 @@ display_file (filename) char *filename; { bfd *file = bfd_openr (filename, target); + if (file == NULL) { bfd_nonfatal (filename); @@ -333,6 +370,7 @@ size_number (num) bfd_size_type num; { char buffer[40]; + sprintf (buffer, (radix == decimal ? "%lu" : ((radix == octal) ? "0%lo" : "0x%lx")), @@ -351,6 +389,7 @@ lprint_number (width, num) bfd_size_type num; { char buffer[40]; + sprintf (buffer, (radix == decimal ? "%lu" : ((radix == octal) ? "0%lo" : "0x%lx")), @@ -367,6 +406,7 @@ rprint_number (width, num) bfd_size_type num; { char buffer[40]; + sprintf (buffer, (radix == decimal ? "%lu" : ((radix == octal) ? "0%lo" : "0x%lx")), @@ -426,6 +466,13 @@ print_berkeley_format (abfd) total = textsize + datasize + bsssize; + if (show_totals) + { + total_textsize += textsize; + total_datasize += datasize; + total_bsssize += bsssize; + } + rprint_number (7, textsize); putchar ('\t'); rprint_number (7, datasize); @@ -435,6 +482,7 @@ print_berkeley_format (abfd) (unsigned long) total, (unsigned long) total); fputs (bfd_get_filename (abfd), stdout); + if (bfd_my_archive (abfd)) printf (" (ex %s)", bfd_get_filename (bfd_my_archive (abfd))); } @@ -453,15 +501,18 @@ sysv_internal_sizer (file, sec, ignore) PTR ignore ATTRIBUTE_UNUSED; { bfd_size_type size = bfd_section_size (file, sec); - if (!bfd_is_abs_section (sec) - && !bfd_is_com_section (sec) - && !bfd_is_und_section (sec)) + + if ( ! bfd_is_abs_section (sec) + && ! bfd_is_com_section (sec) + && ! bfd_is_und_section (sec)) { int namelen = strlen (bfd_section_name (file, sec)); + if (namelen > svi_namelen) svi_namelen = namelen; svi_total += size; + if (bfd_section_vma (file, sec) > svi_maxvma) svi_maxvma = bfd_section_vma (file, sec); } @@ -474,9 +525,10 @@ sysv_internal_printer (file, sec, ignore PTR ignore ATTRIBUTE_UNUSED; { bfd_size_type size = bfd_section_size (file, sec); - if (!bfd_is_abs_section (sec) - && !bfd_is_com_section (sec) - && !bfd_is_und_section (sec)) + + if ( ! bfd_is_abs_section (sec) + && ! bfd_is_com_section (sec) + && ! bfd_is_und_section (sec)) { svi_total += size; @@ -492,12 +544,13 @@ static void print_sysv_format (file) bfd *file; { - /* size all of the columns */ + /* Size all of the columns. */ svi_total = 0; svi_maxvma = 0; svi_namelen = 0; bfd_map_over_sections (file, sysv_internal_sizer, (PTR) NULL); svi_vmalen = size_number ((bfd_size_type)svi_maxvma); + if ((size_t) svi_vmalen < sizeof ("addr") - 1) svi_vmalen = sizeof ("addr")-1; @@ -507,11 +560,13 @@ print_sysv_format (file) svi_total = 0; printf ("%s ", bfd_get_filename (file)); + if (bfd_my_archive (file)) printf (" (ex %s)", bfd_get_filename (bfd_my_archive (file))); printf (":\n%-*s %*s %*s\n", svi_namelen, "section", svi_sizelen, "size", svi_vmalen, "addr"); + bfd_map_over_sections (file, sysv_internal_printer, (PTR) NULL); printf ("%-*s ", svi_namelen, "Total"); diff -uprN binutils-2.11.92.0.12.3/binutils/srconv.c binutils-2.11.93.0.2/binutils/srconv.c --- binutils-2.11.92.0.12.3/binutils/srconv.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/srconv.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* srconv.c -- Sysroff conversion program - Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001 + Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -96,7 +96,6 @@ static void wr_module PARAMS ((struct co static int align PARAMS ((int)); static void prescan PARAMS ((struct coff_ofile *)); static void show_usage PARAMS ((FILE *, int)); -static void show_help PARAMS ((void)); extern int main PARAMS ((int, char **)); static FILE *file; @@ -123,9 +122,8 @@ get_member_id (x) int x; { if (ids2[x]) - { - return ids2[x]; - } + return ids2[x]; + ids2[x] = base2++; return ids2[x]; } @@ -135,9 +133,8 @@ get_ordinary_id (x) int x; { if (ids1[x]) - { - return ids1[x]; - } + return ids1[x]; + ids1[x] = base1++; return ids1[x]; } @@ -154,11 +151,8 @@ section_translate (n) return n; } - - #define DATE "940201073000"; /* Just a time on my birthday */ - static char * strip_suffix (name) @@ -166,6 +160,7 @@ strip_suffix (name) { int i; char *res; + for (i = 0; name[i] != 0 && name[i] != '.'; i++) ; res = (char *) xmalloc (i + 1); @@ -174,7 +169,6 @@ strip_suffix (name) return res; } - /* IT LEN stuff CS */ static void checksum (file, ptr, size, code) @@ -187,6 +181,7 @@ checksum (file, ptr, size, code) int last; int sum = 0; int bytes = size / 8; + last = !(code & 0xff00); if (size & 0x7) abort (); @@ -194,17 +189,14 @@ checksum (file, ptr, size, code) ptr[1] = bytes + 1; for (j = 0; j < bytes; j++) - { - sum += ptr[j]; - } - /* Glue on a checksum too */ + sum += ptr[j]; + + /* Glue on a checksum too. */ ptr[bytes] = ~sum; fwrite (ptr, bytes + 1, 1, file); } - - static void writeINT (n, ptr, idx, size, file) int n; @@ -222,11 +214,12 @@ writeINT (n, ptr, idx, size, file) if (byte > 240) { - /* Lets write out that record and do another one */ + /* Lets write out that record and do another one. */ checksum (file, ptr, *idx, code | 0x1000); *idx = 16; byte = *idx / 8; } + switch (size) { case 0: @@ -250,7 +243,6 @@ writeINT (n, ptr, idx, size, file) *idx += size * 8; } - static void writeBITS (val, ptr, idx, size) int val; @@ -261,12 +253,13 @@ writeBITS (val, ptr, idx, size) int byte = *idx / 8; int bit = *idx % 8; int old; + *idx += size; old = ptr[byte]; - /* Turn off all about to change bits */ + /* Turn off all about to change bits. */ old &= ~((~0 >> (8 - bit - size)) & ((1 << size) - 1)); - /* Turn on the bits we want */ + /* Turn on the bits we want. */ old |= (val & ((1 << size) - 1)) << (8 - bit - size); ptr[byte] = old; } @@ -280,14 +273,12 @@ writeBARRAY (data, ptr, idx, size, file) FILE *file; { int i; + writeINT (data.len, ptr, idx, 1, file); for (i = 0; i < data.len; i++) - { - writeINT (data.data[i], ptr, idx, 1, file); - } + writeINT (data.data[i], ptr, idx, 1, file); } - static void writeCHARS (string, ptr, idx, size, file) char *string; @@ -300,7 +291,7 @@ writeCHARS (string, ptr, idx, size, file if (i > 240) { - /* Lets write out that record and do another one */ + /* Lets write out that record and do another one. */ checksum (file, ptr, *idx, code | 0x1000); *idx = 16; i = *idx / 8; @@ -308,12 +299,12 @@ writeCHARS (string, ptr, idx, size, file if (size == 0) { - /* Variable length string */ + /* Variable length string. */ size = strlen (string); ptr[i++] = size; } - /* BUG WAITING TO HAPPEN */ + /* BUG WAITING TO HAPPEN. */ memcpy (ptr + i, string, size); i += size; *idx = i * 8; @@ -322,7 +313,6 @@ writeCHARS (string, ptr, idx, size, file #define SYSROFF_SWAP_OUT #include "sysroff.c" - static char *rname_sh[] = { "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15" @@ -336,13 +326,14 @@ static char *rname_h8300[] = static void wr_tr () { - /* The TR block is not normal - it doesn't have any contents. */ + /* The TR block is not normal - it doesn't have any contents. */ - static char b[] = { - 0xff, /* IT */ - 0x03, /* RL */ - 0xfd, /* CS */ - }; + static char b[] = + { + 0xff, /* IT */ + 0x03, /* RL */ + 0xfd, /* CS */ + }; fwrite (b, 1, sizeof (b), file); } @@ -354,7 +345,6 @@ wr_un (ptr, sfile, first, nsecs) int nsecs ATTRIBUTE_UNUSED; { struct IT_un un; - struct coff_symbol *s; un.spare1 = 0; @@ -365,17 +355,16 @@ wr_un (ptr, sfile, first, nsecs) un.format = FORMAT_OM; un.spare1 = 0; - #if 1 - un.nsections = ptr->nsections - 1; /* Don't count the abs section */ + un.nsections = ptr->nsections - 1; /* Don't count the abs section. */ #else - /*NEW - only count sections with size */ + /*NEW - only count sections with size. */ un.nsections = nsecs; #endif un.nextdefs = 0; un.nextrefs = 0; - /* Count all the undefined and defined variables with global scope */ + /* Count all the undefined and defined variables with global scope. */ if (first) { @@ -397,7 +386,6 @@ wr_un (ptr, sfile, first, nsecs) sysroff_swap_un_out (file, &un); } - static void wr_hd (p) struct coff_ofile *p; @@ -406,18 +394,16 @@ wr_hd (p) hd.spare1 = 0; if (bfd_get_file_flags (abfd) & EXEC_P) - { - hd.mt = MTYPE_ABS_LM; - } + hd.mt = MTYPE_ABS_LM; else - { - hd.mt = MTYPE_OMS_OR_LMS; - } + hd.mt = MTYPE_OMS_OR_LMS; + hd.cd = DATE; hd.nu = p->nsources; /* Always one unit */ hd.code = 0; /* Always ASCII */ hd.ver = "0200"; /* Version 2.00 */ + switch (bfd_get_arch (abfd)) { case bfd_arch_h8300: @@ -516,7 +502,8 @@ wr_ob (p, section) while (i < section->bfd_section->_raw_size) { struct IT_ob ob; - int todo = 200; /* Copy in 200 byte lumps */ + int todo = 200; /* Copy in 200 byte lumps. */ + ob.spare = 0; if (i + todo > section->bfd_section->_raw_size) todo = section->bfd_section->_raw_size - i; @@ -536,32 +523,33 @@ wr_ob (p, section) ob.saf = 0; } - ob.cpf = 0; /* Never compress */ + ob.cpf = 0; /* Never compress. */ ob.data.len = todo; bfd_get_section_contents (abfd, section->bfd_section, stuff, i, todo); ob.data.data = stuff; sysroff_swap_ob_out (file, &ob /*, i + todo < section->size */ ); i += todo; } - /* Now fill the rest with blanks */ + + /* Now fill the rest with blanks. */ while (i < (bfd_size_type) section->size) { struct IT_ob ob; - int todo = 200; /* Copy in 200 byte lumps */ + int todo = 200; /* Copy in 200 byte lumps. */ + ob.spare = 0; if (i + todo > (bfd_size_type) section->size) todo = section->size - i; ob.saf = 0; - ob.cpf = 0; /* Never compress */ + ob.cpf = 0; /* Never compress. */ ob.data.len = todo; memset (stuff, 0, todo); ob.data.data = stuff; sysroff_swap_ob_out (file, &ob); i += todo; } - /* Now fill the rest with blanks */ - + /* Now fill the rest with blanks. */ } static void @@ -571,11 +559,13 @@ wr_rl (ptr, sec) { int nr = sec->nrelocs; int i; + for (i = 0; i < nr; i++) { struct coff_reloc *r = sec->relocs + i; struct coff_symbol *ref; struct IT_rl rl; + rl.apol = 0; rl.boundary = 0; rl.segment = 1; @@ -583,18 +573,19 @@ wr_rl (ptr, sec) rl.check = 0; rl.addr = r->offset; rl.bitloc = 0; - rl.flen = 32; /* SH Specific */ - /* What sort of reloc ? Look in the section to find out */ + rl.flen = 32; /* SH Specific. */ + + /* What sort of reloc ? Look in the section to find out. */ ref = r->symbol; if (ref->visible->type == coff_vis_ext_ref) { - rl.bcount = 4; /* Always 4 for us */ + rl.bcount = 4; /* Always 4 for us. */ rl.op = OP_EXT_REF; rl.symn = ref->er_number; } else if (ref->visible->type == coff_vis_common) { - rl.bcount = 11; /* Always 11 for us */ + rl.bcount = 11; /* Always 11 for us. */ rl.op = OP_SEC_REF; rl.secn = ref->where->section->number; rl.copcode_is_3 = 3; @@ -602,10 +593,9 @@ wr_rl (ptr, sec) rl.addend = ref->where->offset - ref->where->section->address; rl.aopcode_is_0x20 = 0x20; } - else { - rl.bcount = 11; /* Always 11 for us */ + rl.bcount = 11; /* Always 11 for us. */ rl.op = OP_SEC_REF; rl.secn = ref->where->section->number; rl.copcode_is_3 = 3; @@ -613,12 +603,12 @@ wr_rl (ptr, sec) rl.addend = -ref->where->section->address; rl.aopcode_is_0x20 = 0x20; } + rl.end = 0xff; - if (rl.op == OP_SEC_REF + + if ( rl.op == OP_SEC_REF || rl.op == OP_EXT_REF) - { - sysroff_swap_rl_out (file, &rl); - } + sysroff_swap_rl_out (file, &rl); } } @@ -627,6 +617,7 @@ wr_object_body (p) struct coff_ofile *p; { int i; + for (i = 1; i < p->nsections; i++) { wr_sh (p, p->sections + i); @@ -644,21 +635,23 @@ wr_dps_start (sfile, section, scope, typ int nest; { struct IT_dps dps; + dps.end = 0; dps.opt = 0; dps.type = type; + if (scope->sec) { dps.san = scope->sec->number; dps.address = scope->offset - find_base (sfile, scope->sec); dps.block_size = scope->size; + if (debug) { printf ("DPS %s %d %x\n", sfile->name, nest, dps.address); - } } else @@ -680,6 +673,7 @@ wr_dps_end (section, scope, type) int type; { struct IT_dps dps; + dps.end = 1; dps.type = type; sysroff_swap_dps_out (file, &dps); @@ -714,11 +708,13 @@ walk_tree_type_1 (sfile, symbol, type, n dbt.sign = BTYPE_UNSPEC; dbt.fptype = FPTYPE_NOTSPEC; break; + case T_CHAR: dbt.btype = BTYPE_CHAR; dbt.sign = BTYPE_UNSPEC; dbt.fptype = FPTYPE_NOTSPEC; break; + case T_SHORT: case T_INT: case T_LONG: @@ -726,23 +722,28 @@ walk_tree_type_1 (sfile, symbol, type, n dbt.sign = SIGN_SIGNED; dbt.fptype = FPTYPE_NOTSPEC; break; + case T_FLOAT: dbt.btype = BTYPE_FLOAT; dbt.fptype = FPTYPE_SINGLE; break; + case T_DOUBLE: dbt.btype = BTYPE_FLOAT; dbt.fptype = FPTYPE_DOUBLE; break; + case T_LNGDBL: dbt.btype = BTYPE_FLOAT; dbt.fptype = FPTYPE_EXTENDED; break; + case T_UCHAR: dbt.btype = BTYPE_CHAR; dbt.sign = SIGN_UNSIGNED; dbt.fptype = FPTYPE_NOTSPEC; break; + case T_USHORT: case T_UINT: case T_ULONG: @@ -751,14 +752,17 @@ walk_tree_type_1 (sfile, symbol, type, n dbt.fptype = FPTYPE_NOTSPEC; break; } + dbt.bitsize = type->size; dbt.neg = 0x1001; sysroff_swap_dbt_out (file, &dbt); break; } + case coff_pointer_type: { struct IT_dpt dpt; + walk_tree_type_1 (sfile, symbol, type->u.pointer.points_to, nest + 1); dpt.neg = 0x1001; sysroff_swap_dpt_out (file, &dpt); @@ -769,6 +773,7 @@ walk_tree_type_1 (sfile, symbol, type, n { struct IT_dfp dfp; struct coff_symbol *param; + dfp.end = 0; dfp.spare = 0; dfp.nparams = type->u.function.parameters->nvars; @@ -781,9 +786,8 @@ walk_tree_type_1 (sfile, symbol, type, n for (param = type->u.function.parameters->vars_head; param; param = param->next) - { - walk_tree_symbol (sfile, 0, param, nest); - } + walk_tree_symbol (sfile, 0, param, nest); + dfp.end = 1; sysroff_swap_dfp_out (file, &dfp); break; @@ -794,6 +798,7 @@ walk_tree_type_1 (sfile, symbol, type, n struct IT_dbt dbt; struct IT_dds dds; struct coff_symbol *member; + dds.spare = 0; dbt.btype = BTYPE_STRUCT; dbt.bitsize = type->size; @@ -805,43 +810,43 @@ walk_tree_type_1 (sfile, symbol, type, n dds.end = 0; dds.neg = 0x1001; sysroff_swap_dds_out (file, &dds); + for (member = type->u.astructdef.elements->vars_head; member; member = member->next) - { - walk_tree_symbol (sfile, 0, member, nest + 1); - } + walk_tree_symbol (sfile, 0, member, nest + 1); dds.end = 1; sysroff_swap_dds_out (file, &dds); } break; + case coff_structref_type: { struct IT_dbt dbt; + dbt.btype = BTYPE_TAG; dbt.bitsize = type->size; dbt.sign = SIGN_UNSPEC; dbt.fptype = FPTYPE_NOTSPEC; + if (type->u.astructref.ref) - { - dbt.sid = get_member_id (type->u.astructref.ref->number); - } + dbt.sid = get_member_id (type->u.astructref.ref->number); else - { - dbt.sid = 0; - } + dbt.sid = 0; dbt.neg = 0x1001; sysroff_swap_dbt_out (file, &dbt); } break; + case coff_array_type: { struct IT_dar dar; int j; - int dims = 1; /* Only output one dimension at a time */ + int dims = 1; /* Only output one dimension at a time. */ + dar.dims = dims; dar.variable = nints (dims); dar.subtype = nints (dims); @@ -854,6 +859,7 @@ walk_tree_type_1 (sfile, symbol, type, n dar.minspare = nints (dims); dar.neg = 0x1001; dar.length = type->size / type->u.array.dim; + for (j = 0; j < dims; j++) { dar.variable[j] = VARIABLE_FIXED; @@ -868,11 +874,13 @@ walk_tree_type_1 (sfile, symbol, type, n sysroff_swap_dar_out (file, &dar); } break; + case coff_enumdef_type: { struct IT_dbt dbt; struct IT_den den; struct coff_symbol *member; + dbt.btype = BTYPE_ENUM; dbt.bitsize = type->size; dbt.sign = SIGN_UNSPEC; @@ -885,22 +893,21 @@ walk_tree_type_1 (sfile, symbol, type, n den.neg = 0x1001; den.spare = 0; sysroff_swap_den_out (file, &den); + for (member = type->u.aenumdef.elements->vars_head; member; member = member->next) - { - walk_tree_symbol (sfile, 0, member, nest + 1); - } + walk_tree_symbol (sfile, 0, member, nest + 1); den.end = 1; sysroff_swap_den_out (file, &den); } break; - break; case coff_enumref_type: { struct IT_dbt dbt; + dbt.btype = BTYPE_TAG; dbt.bitsize = type->size; dbt.sign = SIGN_UNSPEC; @@ -910,6 +917,7 @@ walk_tree_type_1 (sfile, symbol, type, n sysroff_swap_dbt_out (file, &dbt); } break; + default: abort (); } @@ -955,17 +963,15 @@ walk_tree_type_1 (sfile, symbol, type, n static void walk_tree_type (sfile, symbol, type, nest) - - struct - coff_sfile *sfile; + struct coff_sfile *sfile; struct coff_symbol *symbol; struct coff_type *type; int nest; { if (symbol->type->type == coff_function_type) { - struct IT_dty dty; + dty.end = 0; dty.neg = 0x1001; @@ -991,11 +997,11 @@ walk_tree_type (sfile, symbol, type, nes BLOCK_TYPE_BLOCK); wr_dps_end (symbol->where->section, symbol->type->u.function.code, BLOCK_TYPE_FUNCTION); - } else { struct IT_dty dty; + dty.end = 0; dty.neg = 0x1001; sysroff_swap_dty_out (file, &dty); @@ -1003,11 +1009,8 @@ walk_tree_type (sfile, symbol, type, nes dty.end = 1; sysroff_swap_dty_out (file, &dty); } - } - - static void walk_tree_symbol (sfile, section, symbol, nest) struct coff_sfile *sfile; @@ -1017,7 +1020,7 @@ walk_tree_symbol (sfile, section, symbol { struct IT_dsy dsy; - memset(&dsy, 0, sizeof(dsy)); + memset (&dsy, 0, sizeof(dsy)); dsy.nesting = nest; switch (symbol->type->type) @@ -1026,6 +1029,7 @@ walk_tree_symbol (sfile, section, symbol dsy.type = STYPE_FUNC; dsy.assign = 1; break; + case coff_structref_type: case coff_pointer_type: case coff_array_type: @@ -1034,18 +1038,22 @@ walk_tree_symbol (sfile, section, symbol dsy.type = STYPE_VAR; dsy.assign = 1; break; + case coff_enumdef_type: dsy.type = STYPE_TAG; dsy.assign = 0; dsy.magic = 2; break; + case coff_structdef_type: dsy.type = STYPE_TAG; dsy.assign = 0; dsy.magic = symbol->type->u.astructdef.isstruct ? 0 : 1; break; + case coff_secdef_type: return; + default: abort (); } @@ -1055,6 +1063,7 @@ walk_tree_symbol (sfile, section, symbol dsy.assign = 0; dsy.type = STYPE_MEMBER; } + if (symbol->where->where == coff_where_member_of_enum) { dsy.type = STYPE_ENUM; @@ -1074,7 +1083,6 @@ walk_tree_symbol (sfile, section, symbol dsy.snumber = get_ordinary_id (symbol->number); } - dsy.sname = symbol->name[0] == '_' ? symbol->name + 1 : symbol->name; switch (symbol->visible->type) @@ -1083,30 +1091,37 @@ walk_tree_symbol (sfile, section, symbol case coff_vis_ext_def: dsy.ainfo = AINFO_STATIC_EXT_DEF; break; + case coff_vis_ext_ref: dsy.ainfo = AINFO_STATIC_EXT_REF; break; + case coff_vis_int_def: dsy.ainfo = AINFO_STATIC_INT; break; + case coff_vis_auto: case coff_vis_autoparam: dsy.ainfo = AINFO_AUTO; break; + case coff_vis_register: case coff_vis_regparam: dsy.ainfo = AINFO_REG; break; break; + case coff_vis_tag: case coff_vis_member_of_struct: case coff_vis_member_of_enum: break; + default: abort (); } dsy.dlength = symbol->type->size; + switch (symbol->where->where) { case coff_where_memory: @@ -1116,16 +1131,17 @@ walk_tree_symbol (sfile, section, symbol dsy.section = 0; #endif break; + case coff_where_member_of_struct: case coff_where_member_of_enum: case coff_where_stack: case coff_where_register: case coff_where_unknown: case coff_where_strtag: - case coff_where_entag: case coff_where_typedef: break; + default: abort (); } @@ -1135,12 +1151,12 @@ walk_tree_symbol (sfile, section, symbol case coff_where_memory: dsy.address = symbol->where->offset - find_base (sfile, symbol->where->section); break; + case coff_where_stack: dsy.address = symbol->where->offset; break; - case coff_where_member_of_struct: - + case coff_where_member_of_struct: if (symbol->where->bitsize) { int bits = (symbol->where->offset * 8 + symbol->where->bitoffset); @@ -1157,18 +1173,20 @@ walk_tree_symbol (sfile, section, symbol dsy.field_off = symbol->where->offset; } break; + case coff_where_member_of_enum: /* dsy.bitunit = 0; dsy.field_len = symbol->type->size; dsy.field_off = symbol->where->offset; */ break; + case coff_where_register: case coff_where_unknown: case coff_where_strtag: - case coff_where_entag: case coff_where_typedef: break; + default: abort (); } @@ -1179,10 +1197,9 @@ walk_tree_symbol (sfile, section, symbol switch (symbol->visible->type) { case coff_vis_common: - /* We do this 'cause common C symbols are treated as extdefs */ + /* We do this 'cause common C symbols are treated as extdefs. */ case coff_vis_ext_def: case coff_vis_ext_ref: - dsy.ename = symbol->name; break; @@ -1192,29 +1209,26 @@ walk_tree_symbol (sfile, section, symbol break; case coff_vis_int_def: - case coff_vis_auto: case coff_vis_register: case coff_vis_tag: case coff_vis_member_of_struct: case coff_vis_member_of_enum: break; + default: abort (); } dsy.sfn = 0; dsy.sln = 2; - dsy.neg = 0x1001; - sysroff_swap_dsy_out (file, &dsy); walk_tree_type (sfile, symbol, symbol->type, nest); } - static void walk_tree_scope (section, sfile, scope, nest, type) struct coff_section *section; @@ -1235,25 +1249,21 @@ walk_tree_scope (section, sfile, scope, wr_globals (tree, sfile, nest + 1); for (vars = scope->vars_head; vars; vars = vars->next) - { - walk_tree_symbol (sfile, section, vars, nest); - } + walk_tree_symbol (sfile, section, vars, nest); for (child = scope->list_head; child; child = child->next) - { - walk_tree_scope (section, sfile, child, nest + 1, BLOCK_TYPE_BLOCK); - } + walk_tree_scope (section, sfile, child, nest + 1, BLOCK_TYPE_BLOCK); wr_dps_end (section, scope, type); } } + static void walk_tree_sfile (section, sfile) struct coff_section *section; struct coff_sfile *sfile; { walk_tree_scope (section, sfile, sfile->scope, 0, BLOCK_TYPE_COMPUNIT); - } static void @@ -1261,9 +1271,7 @@ wr_program_structure (p, sfile) struct coff_ofile *p; struct coff_sfile *sfile; { - walk_tree_sfile (p->sections + 4, sfile); - } static void @@ -1283,6 +1291,7 @@ wr_du (p, sfile, n) int j; unsigned int *lowest = (unsigned *) nints (p->nsections); unsigned int *highest = (unsigned *) nints (p->nsections); + du.format = bfd_get_file_flags (abfd) & EXEC_P ? 0 : 1; du.optimized = 0; du.stackfrmt = 0; @@ -1300,7 +1309,7 @@ wr_du (p, sfile, n) } /* Look through all the symbols and try and work out the extents in this - source file */ + source file. */ #if 0 for (symbol = sfile->scope->vars_head; symbol; @@ -1320,16 +1329,15 @@ wr_du (p, sfile, n) } } - for (i = 0; i < du.sections; i++) { if (highest[i] == 0) - { - lowest[i] = highest[i] = incit; - } + lowest[i] = highest[i] = incit; + du.san[used] = i; du.length[used] = highest[i] - lowest[i]; du.address[used] = bfd_get_file_flags (abfd) & EXEC_P ? lowest[i] : 0; + if (debug) { printf (" section %6s 0x%08x..0x%08x\n", @@ -1339,14 +1347,16 @@ wr_du (p, sfile, n) } used++; } - #endif + lim = du.sections; for (j = 0; j < lim; j++) { int src = j; int dst = j; + du.san[dst] = dst; + if (sfile->section[src].init) { du.length[dst] @@ -1359,6 +1369,7 @@ wr_du (p, sfile, n) du.length[dst] = 0; du.address[dst] = 0; } + if (debug) { if (sfile->section[src].parent) @@ -1369,6 +1380,7 @@ wr_du (p, sfile, n) du.address[dst] + du.length[dst] - 1); } } + du.sections = dst + 1; } @@ -1383,7 +1395,6 @@ wr_dus (p, sfile) struct coff_ofile *p ATTRIBUTE_UNUSED; struct coff_sfile *sfile; { - struct IT_dus dus; dus.efn = 0x1001; @@ -1392,7 +1403,7 @@ wr_dus (p, sfile) dus.fname = (char **) xcalloc (sizeof (char *), dus.ns); dus.spare = nints (dus.ns); dus.ndir = 0; - /* Find the filenames */ + /* Find the filenames. */ #if 0 i = 0; @@ -1415,7 +1426,7 @@ wr_dus (p, sfile) } /* Find the offset of the .text section for this sfile in the - .text section for the output file */ + .text section for the output file. */ static int find_base (sfile, section) @@ -1564,7 +1575,8 @@ wr_dln (p, sfile, n) #endif } -/* Write the global symbols out to the debug info */ +/* Write the global symbols out to the debug info. */ + static void wr_globals (p, sfile, n) struct coff_ofile *p; @@ -1572,6 +1584,7 @@ wr_globals (p, sfile, n) int n ATTRIBUTE_UNUSED; { struct coff_symbol *sy; + for (sy = p->symbol_list_head; sy; sy = sy->next_in_ofile_list) @@ -1580,10 +1593,9 @@ wr_globals (p, sfile, n) || sy->visible->type == coff_vis_ext_ref) { /* Only write out symbols if they belong to - the current source file */ + the current source file. */ if (sy->sfile == sfile) walk_tree_symbol (sfile, 0, sy, 0); - } } } @@ -1594,15 +1606,14 @@ wr_debug (p) { struct coff_sfile *sfile; int n = 0; + for (sfile = p->source_head; sfile; sfile = sfile->next) - { if (debug) - { - printf ("%s\n", sfile->name); - } + printf ("%s\n", sfile->name); + wr_du (p, sfile, n); wr_dus (p, sfile); wr_program_structure (p, sfile); @@ -1615,8 +1626,9 @@ static void wr_cs () { /* It seems that the CS struct is not normal - the size is wrong - heres one I prepared earlier.. */ - static char b[] = { + heres one I prepared earlier. */ + static char b[] = + { 0x80, /* IT */ 0x21, /* RL */ 0x00, /* number of chars in variable length part */ @@ -1656,7 +1668,7 @@ wr_cs () /* Write out the SC records for a unit. Create an SC for all the sections which appear in the output file, even - if there isn't an equivalent one on the input */ + if there isn't an equivalent one on the input. */ static int wr_sc (ptr, sfile) @@ -1664,23 +1676,19 @@ wr_sc (ptr, sfile) struct coff_sfile *sfile; { int i; -int scount = 0; - /* First work out the total number of sections */ - + int scount = 0; + /* First work out the total number of sections. */ int total_sec = ptr->nsections; - struct myinfo { struct coff_section *sec; struct coff_symbol *symbol; }; struct coff_symbol *symbol; - struct myinfo *info = (struct myinfo *) calloc (total_sec, sizeof (struct myinfo)); - for (i = 0; i < total_sec; i++) { info[i].sec = ptr->sections + i; @@ -1706,19 +1714,20 @@ int scount = 0; } /* Now output all the section info, and fake up some stuff for sections - we don't have */ - + we don't have. */ for (i = 1; i < total_sec; i++) { struct IT_sc sc; char *name; + symbol = info[i].symbol; sc.spare = 0; sc.spare1 = 0; + if (!symbol) { - /* Don't have a symbol set aside for this section, which means that nothing - in this file does anything for the section. */ + /* Don't have a symbol set aside for this section, which means + that nothing in this file does anything for the section. */ sc.format = !(bfd_get_file_flags (abfd) & EXEC_P); sc.addr = 0; sc.length = 0; @@ -1741,7 +1750,6 @@ int scount = 0; } sc.align = 4; - sc.concat = CONCAT_SIMPLE; sc.read = 3; sc.write = 3; @@ -1750,8 +1758,9 @@ int scount = 0; sc.mode = 3; sc.spare = 0; sc.segadd = 0; - sc.spare1 = 0; /* If not zero, then it doesn't work */ + sc.spare1 = 0; /* If not zero, then it doesn't work. */ sc.name = section_translate (name); + if (strlen (sc.name) == 1) { switch (sc.name[0]) @@ -1760,6 +1769,7 @@ int scount = 0; case 'B': sc.contents = CONTENTS_DATA; break; + default: sc.contents = CONTENTS_CODE; } @@ -1770,19 +1780,20 @@ int scount = 0; } #if 0 /* NEW */ - if (sc.length) { + if (sc.length) + { #endif - sysroff_swap_sc_out (file, &sc); - scount++; + sysroff_swap_sc_out (file, &sc); + scount++; #if 0 - } + } #endif } -return scount; + return scount; } +/* Write out the ER records for a unit. */ -/* Write out the ER records for a unit. */ static void wr_er (ptr, sfile, first) struct coff_ofile *ptr; @@ -1791,6 +1802,7 @@ wr_er (ptr, sfile, first) { int idx = 0; struct coff_symbol *sym; + if (first) { for (sym = ptr->symbol_list_head; sym; sym = sym->next_in_ofile_list) @@ -1798,6 +1810,7 @@ wr_er (ptr, sfile, first) if (sym->visible->type == coff_vis_ext_ref) { struct IT_er er; + er.spare = 0; er.type = ER_NOTSPEC; er.name = sym->name; @@ -1808,7 +1821,8 @@ wr_er (ptr, sfile, first) } } -/* Write out the ED records for a unit. */ +/* Write out the ED records for a unit. */ + static void wr_ed (ptr, sfile, first) struct coff_ofile *ptr; @@ -1816,6 +1830,7 @@ wr_ed (ptr, sfile, first) int first; { struct coff_symbol *s; + if (first) { for (s = ptr->symbol_list_head; s; s = s->next_in_ofile_list) @@ -1827,6 +1842,7 @@ wr_ed (ptr, sfile, first) ed.section = s->where->section->number; ed.spare = 0; + if (s->where->section->data) { ed.type = ED_TYPE_DATA; @@ -1840,6 +1856,7 @@ wr_ed (ptr, sfile, first) ed.type = ED_TYPE_NOTSPEC; ed.type = ED_TYPE_DATA; } + ed.address = s->where->offset - s->where->section->address; ed.name = s->name; sysroff_swap_ed_out (file, &ed); @@ -1854,6 +1871,7 @@ wr_unit_info (ptr) { struct coff_sfile *sfile; int first = 1; + for (sfile = ptr->source_head; sfile; sfile = sfile->next) @@ -1861,6 +1879,7 @@ wr_unit_info (ptr) long p1; long p2; int nsecs; + p1 = ftell (file); wr_un (ptr, sfile, first, 0); nsecs = wr_sc (ptr, sfile); @@ -1894,7 +1913,7 @@ align (x) } /* Find all the common variables and turn them into - ordinary defs - dunno why, but thats what hitachi does with 'em */ + ordinary defs - dunno why, but thats what hitachi does with 'em. */ static void prescan (tree) @@ -1902,8 +1921,10 @@ prescan (tree) { struct coff_symbol *s; struct coff_section *common_section; - /* Find the common section - always section 3 */ + + /* Find the common section - always section 3. */ common_section = tree->sections + 3; + for (s = tree->symbol_list_head; s; s = s->next_in_ofile_list) @@ -1928,20 +1949,20 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, _("Usage: %s [-dhVq] in-file [out-file]\n"), program_name); - exit (status); -} + fprintf (file, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name); + fprintf (file, _("Convert a COFF object file into a SYSROFF object file\n")); + fprintf (file, _(" The options are:\n\ + -q --quick (Obsolete - ignoerd)\n\ + -n --noprescan Do not perform a scan to convert commons into defs\n\ + -d --debug Display information about what is being done\n\ + -h --help Display this information\n\ + -v --version Print the program's version number\n")); -static void -show_help () -{ - printf (_("%s: Convert a COFF object file into a SYSROFF object file\n"), - program_name); - show_usage (stdout, 0); + if (status == 0) + fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); + exit (status); } - - int main (ac, av) int ac; @@ -1973,7 +1994,7 @@ main (ac, av) program_name = av[0]; xmalloc_set_program_name (program_name); - while ((opt = getopt_long (ac, av, "dhVqn", long_options, + while ((opt = getopt_long (ac, av, "dHhVvqn", long_options, (int *) NULL)) != EOF) { @@ -1988,9 +2009,11 @@ main (ac, av) case 'd': debug = 1; break; + case 'H': case 'h': - show_help (); + show_usage (stdout, 0); /*NOTREACHED */ + case 'v': case 'V': print_version ("srconv"); exit (0); @@ -2035,8 +2058,10 @@ main (ac, av) it doesn't end in .o, then stick a .obj on anyway */ int len = strlen (input_file); + output_file = xmalloc (len + 5); strcpy (output_file, input_file); + if (len > 3 && output_file[len - 2] == '.' && output_file[len - 1] == 'o') @@ -2059,6 +2084,7 @@ main (ac, av) if (!bfd_check_format_matches (abfd, bfd_object, &matching)) { bfd_nonfatal (input_file); + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) { list_matching_formats (matching); @@ -2070,15 +2096,16 @@ main (ac, av) file = fopen (output_file, FOPEN_WB); if (!file) - { - fatal (_("unable to open output file %s"), output_file); - } + fatal (_("unable to open output file %s"), output_file); if (debug) printf ("ids %d %d\n", base1, base2); + tree = coff_grok (abfd); + if (!noprescan) prescan (tree); + wr_module (tree); return 0; } diff -uprN binutils-2.11.92.0.12.3/binutils/strings.c binutils-2.11.93.0.2/binutils/strings.c --- binutils-2.11.92.0.12.3/binutils/strings.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/strings.c Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ /* strings -- print the strings of printable characters in files - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 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 @@ -56,6 +56,9 @@ Written by Richard Stallman and David MacKenzie . */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif #include "bfd.h" #include #include @@ -90,6 +93,14 @@ extern int errno; /* The BFD section flags that identify an initialized data section. */ #define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS) +#ifdef HAVE_FOPEN64 +typedef off64_t file_off; +#define file_open(s,m) fopen64(s,m) +#else +typedef off_t file_off; +#define file_open(s,m) fopen(s,m) +#endif + /* Radix for printing addresses (must be 8, 10 or 16). */ static int address_radix; @@ -133,12 +144,14 @@ static boolean strings_object_file PARAM static boolean strings_file PARAMS ((char *file)); static int integer_arg PARAMS ((char *s)); static void print_strings PARAMS ((const char *filename, FILE *stream, - file_ptr address, int stop_point, + file_off address, int stop_point, int magiccount, char *magic)); static void usage PARAMS ((FILE *stream, int status)); -static long get_char PARAMS ((FILE *stream, file_ptr *address, +static long get_char PARAMS ((FILE *stream, file_off *address, int *magiccount, char **magic)); +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; @@ -163,7 +176,7 @@ main (argc, argv) target = NULL; encoding = 's'; - while ((optc = getopt_long (argc, argv, "afn:ot:e:v0123456789", + while ((optc = getopt_long (argc, argv, "afhHn:ot:e:Vv0123456789", long_options, (int *) 0)) != EOF) { switch (optc) @@ -176,6 +189,7 @@ main (argc, argv) print_filenames = true; break; + case 'H': case 'h': usage (stdout, 0); @@ -225,6 +239,7 @@ main (argc, argv) encoding = optarg[0]; break; + case 'V': case 'v': print_version ("strings"); break; @@ -371,10 +386,7 @@ strings_file (file) { FILE *stream; - stream = fopen (file, "rb"); - /* Not all systems permit "rb", so try "r" if it failed. */ - if (stream == NULL) - stream = fopen (file, "r"); + stream = file_open (file, FOPEN_RB); if (stream == NULL) { fprintf (stderr, "%s: ", program_name); @@ -382,7 +394,7 @@ strings_file (file) return false; } - print_strings (file, stream, (file_ptr) 0, 0, 0, (char *) 0); + print_strings (file, stream, (file_off) 0, 0, 0, (char *) 0); if (fclose (stream) == EOF) { @@ -408,12 +420,12 @@ strings_file (file) static long get_char (stream, address, magiccount, magic) FILE *stream; - file_ptr *address; + file_off *address; int *magiccount; char **magic; { int c, i; - long r; + long r = EOF; unsigned char buf[4]; for (i = 0; i < encoding_bytes; i++) @@ -427,7 +439,11 @@ get_char (stream, address, magiccount, m { if (stream == NULL) return EOF; +#ifdef HAVE_GETC_UNLOCKED + c = getc_unlocked (stream); +#else c = getc (stream); +#endif if (c == EOF) return EOF; } @@ -479,7 +495,7 @@ static void print_strings (filename, stream, address, stop_point, magiccount, magic) const char *filename; FILE *stream; - file_ptr address; + file_off address; int stop_point; int magiccount; char *magic; @@ -488,7 +504,7 @@ print_strings (filename, stream, address while (1) { - file_ptr start; + file_off start; int i; long c; @@ -517,15 +533,48 @@ print_strings (filename, stream, address switch (address_radix) { case 8: - printf ("%7lo ", (unsigned long) start); +#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) + if (sizeof (start) > sizeof (long)) + printf ("%7Lo ", (unsigned long long) start); + else +#else +# if !BFD_HOST_64BIT_LONG + if (start != (unsigned long) start) + printf ("++%7lo ", (unsigned long) start); + else +# endif +#endif + printf ("%7lo ", (unsigned long) start); break; case 10: - printf ("%7ld ", (long) start); +#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) + if (sizeof (start) > sizeof (long)) + printf ("%7Ld ", (unsigned long long) start); + else +#else +# if !BFD_HOST_64BIT_LONG + if (start != (unsigned long) start) + printf ("++%7ld ", (unsigned long) start); + else +# endif +#endif + printf ("%7ld ", (long) start); break; case 16: - printf ("%7lx ", (unsigned long) start); +#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2) + if (sizeof (start) > sizeof (long)) + printf ("%7Lx ", (unsigned long long) start); + else +#else +# if !BFD_HOST_64BIT_LONG + if (start != (unsigned long) start) + printf ("%lx%8.8lx ", start >> 32, start & 0xffffffff); + else +# endif +#endif + printf ("%7lx ", (unsigned long) start); break; } @@ -598,11 +647,20 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("\ -Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n\ - [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n\ - [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n"), - program_name); + fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name); + fprintf (stream, _(" Display printable strings in [file(s)] (stdin by default)\n")); + fprintf (stream, _(" The options are:\n\ + -a - --all Scan the entire file, not just the data section\n\ + -f --print-file-name Print the name of the file before each string\n\ + -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n\ + - least [number] characters (default 4).\n\ + -t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n\ + -o An alias for --radix=o\n\ + -T --target= Specify the binary file format\n\ + -e --encoding={s,b,l,B,L} Select character size and endianness:\n\ + s = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n\ + -h --help Display this information\n\ + -v --version Print the program's version number\n")); list_supported_targets (program_name, stream); if (status == 0) fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); diff -uprN binutils-2.11.92.0.12.3/binutils/sysdump.c binutils-2.11.93.0.2/binutils/sysdump.c --- binutils-2.11.92.0.12.3/binutils/sysdump.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/sysdump.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,6 @@ /* Sysroff object format dumper. - Copyright 1994, 1995, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -22,7 +23,7 @@ /* Written by Steve Chamberlain . This program reads a SYSROFF object file and prints it in an - almost human readable form to stdout. */ + almost human readable form to stdout. */ #include "bfd.h" #include "bucomm.h" @@ -52,7 +53,6 @@ static void dump_symbol_info PARAMS ((vo static void derived_type PARAMS ((void)); static void module PARAMS ((void)); static void show_usage PARAMS ((FILE *, int)); -static void show_help PARAMS ((void)); extern char *getCHARS PARAMS ((unsigned char *, int *, int, int)); extern int fillup PARAMS ((char *)); @@ -73,14 +73,13 @@ getCHARS (ptr, idx, size, max) int oc = *idx / 8; char *r; int b = size; + if (b >= max) - { - return "*undefined*"; - } + return "*undefined*"; if (b == 0) { - /* Got to work out the length of the string from self */ + /* Got to work out the length of the string from self. */ b = ptr[oc++]; (*idx) += 8; } @@ -89,6 +88,7 @@ getCHARS (ptr, idx, size, max) r = xcalloc (b + 1, 1); memcpy (r, ptr + oc, b); r[b] = 0; + return r; } @@ -116,10 +116,12 @@ dh (ptr, size) for (j = 0; j < span && j + i < size; j++) { int c = ptr[i + j]; + if (c < 32 || c > 127) c = '.'; printf ("%c", c); } + printf ("\n"); } } @@ -131,18 +133,17 @@ fillup (ptr) int size; int sum; int i; + size = getc (file) - 2; fread (ptr, 1, size, file); sum = code + size + 2; + for (i = 0; i < size; i++) - { - sum += ptr[i]; - } + sum += ptr[i]; if ((sum & 0xff) != 0xff) - { - printf ("SUM IS %x\n", sum); - } + printf ("SUM IS %x\n", sum); + if (dump) dh (ptr, size); @@ -160,12 +161,13 @@ getBARRAY (ptr, idx, dsize, max) int i; int byte = *idx / 8; int size = ptr[byte++]; + res.len = size; res.data = (unsigned char *) xmalloc (size); + for (i = 0; i < size; i++) - { - res.data[i] = ptr[byte++]; - } + res.data[i] = ptr[byte++]; + return res; } @@ -180,13 +182,14 @@ getINT (ptr, idx, size, max) int byte = *idx / 8; if (byte >= max) - { - return 0; - } + return 0; + if (size == -2) size = addrsize; + if (size == -1) size = 0; + switch (size) { case 0: @@ -203,6 +206,7 @@ getINT (ptr, idx, size, max) default: abort (); } + *idx += size * 8; return n; } @@ -233,14 +237,15 @@ itheader (name, code) } static int indent; + static void p () { int i; + for (i = 0; i < indent; i++) - { - printf ("| "); - } + printf ("| "); + printf ("> "); } @@ -255,12 +260,13 @@ pbarray (y) barray *y; { int x; + printf ("%d (", y->len); + for (x = 0; x < y->len; x++) - { - printf ("(%02x %c)", y->data[x], - ISPRINT (y->data[x]) ? y->data[x] : '.'); - } + printf ("(%02x %c)", y->data[x], + ISPRINT (y->data[x]) ? y->data[x] : '.'); + printf (")\n"); } @@ -269,27 +275,26 @@ pbarray (y) #include "sysroff.c" -/* - * FIXME: sysinfo, which generates sysroff.[ch] from sysroff.info, can't - * hack the special case of the tr block, which has no contents. So we - * implement our own functions for reading in and printing out the tr - * block. - */ +/* FIXME: sysinfo, which generates sysroff.[ch] from sysroff.info, can't + hack the special case of the tr block, which has no contents. So we + implement our own functions for reading in and printing out the tr + block. */ #define IT_tr_CODE 0x7f + void sysroff_swap_tr_in() { - char raw[255]; + char raw[255]; - memset(raw, 0, 255); - fillup(raw); + memset (raw, 0, 255); + fillup (raw); } void sysroff_print_tr_out() { - itheader("tr", IT_tr_CODE); + itheader ("tr", IT_tr_CODE); } static int @@ -297,6 +302,7 @@ getone (type) int type; { int c = getc (file); + code = c; if ((c & 0x7f) != type) @@ -314,6 +320,7 @@ getone (type) sysroff_print_cs_out (&dummy); } break; + case IT_dln_CODE: { struct IT_dln dummy; @@ -321,6 +328,7 @@ getone (type) sysroff_print_dln_out (&dummy); } break; + case IT_hd_CODE: { struct IT_hd dummy; @@ -329,6 +337,7 @@ getone (type) sysroff_print_hd_out (&dummy); } break; + case IT_dar_CODE: { struct IT_dar dummy; @@ -336,6 +345,7 @@ getone (type) sysroff_print_dar_out (&dummy); } break; + case IT_dsy_CODE: { struct IT_dsy dummy; @@ -343,6 +353,7 @@ getone (type) sysroff_print_dsy_out (&dummy); } break; + case IT_dfp_CODE: { struct IT_dfp dummy; @@ -350,6 +361,7 @@ getone (type) sysroff_print_dfp_out (&dummy); } break; + case IT_dso_CODE: { struct IT_dso dummy; @@ -357,6 +369,7 @@ getone (type) sysroff_print_dso_out (&dummy); } break; + case IT_dpt_CODE: { struct IT_dpt dummy; @@ -364,6 +377,7 @@ getone (type) sysroff_print_dpt_out (&dummy); } break; + case IT_den_CODE: { struct IT_den dummy; @@ -371,6 +385,7 @@ getone (type) sysroff_print_den_out (&dummy); } break; + case IT_dbt_CODE: { struct IT_dbt dummy; @@ -378,6 +393,7 @@ getone (type) sysroff_print_dbt_out (&dummy); } break; + case IT_dty_CODE: { struct IT_dty dummy; @@ -385,6 +401,7 @@ getone (type) sysroff_print_dty_out (&dummy); } break; + case IT_un_CODE: { struct IT_un dummy; @@ -392,6 +409,7 @@ getone (type) sysroff_print_un_out (&dummy); } break; + case IT_sc_CODE: { struct IT_sc dummy; @@ -399,6 +417,7 @@ getone (type) sysroff_print_sc_out (&dummy); } break; + case IT_er_CODE: { struct IT_er dummy; @@ -406,6 +425,7 @@ getone (type) sysroff_print_er_out (&dummy); } break; + case IT_ed_CODE: { struct IT_ed dummy; @@ -413,6 +433,7 @@ getone (type) sysroff_print_ed_out (&dummy); } break; + case IT_sh_CODE: { struct IT_sh dummy; @@ -420,6 +441,7 @@ getone (type) sysroff_print_sh_out (&dummy); } break; + case IT_ob_CODE: { struct IT_ob dummy; @@ -427,6 +449,7 @@ getone (type) sysroff_print_ob_out (&dummy); } break; + case IT_rl_CODE: { struct IT_rl dummy; @@ -434,6 +457,7 @@ getone (type) sysroff_print_rl_out (&dummy); } break; + case IT_du_CODE: { struct IT_du dummy; @@ -442,6 +466,7 @@ getone (type) sysroff_print_du_out (&dummy); } break; + case IT_dus_CODE: { struct IT_dus dummy; @@ -449,6 +474,7 @@ getone (type) sysroff_print_dus_out (&dummy); } break; + case IT_dul_CODE: { struct IT_dul dummy; @@ -456,6 +482,7 @@ getone (type) sysroff_print_dul_out (&dummy); } break; + case IT_dss_CODE: { struct IT_dss dummy; @@ -463,6 +490,7 @@ getone (type) sysroff_print_dss_out (&dummy); } break; + case IT_hs_CODE: { struct IT_hs dummy; @@ -470,6 +498,7 @@ getone (type) sysroff_print_hs_out (&dummy); } break; + case IT_dps_CODE: { struct IT_dps dummy; @@ -477,24 +506,27 @@ getone (type) sysroff_print_dps_out (&dummy); } break; + case IT_tr_CODE: - { - sysroff_swap_tr_in (); - sysroff_print_tr_out (); - } + sysroff_swap_tr_in (); + sysroff_print_tr_out (); break; + case IT_dds_CODE: { struct IT_dds dummy; + sysroff_swap_dds_in (&dummy); sysroff_print_dds_out (&dummy); } break; + default: printf ("GOT A %x\n", c); return 0; break; } + return 1; } @@ -552,9 +584,7 @@ must (x) int x; { if (!getone (x)) - { - printf ("WANTED %x!!\n", x); - } + printf ("WANTED %x!!\n", x); } static void @@ -563,6 +593,7 @@ tab (i, s) char *s; { indent += i; + if (s) { p (); @@ -575,6 +606,7 @@ static void dump_symbol_info () { tab (1, "SYMBOL INFO"); + while (opt (IT_dsy_CODE)) { if (opt (IT_dty_CODE)) @@ -584,6 +616,7 @@ dump_symbol_info () must (IT_dty_CODE); } } + tab (-1, ""); } @@ -591,6 +624,7 @@ static void derived_type () { tab (1, "DERIVED TYPE"); + while (1) { if (opt (IT_dpp_CODE)) @@ -730,16 +764,15 @@ show_usage (file, status) FILE *file; int status; { - fprintf (file, _("Usage: %s [-hV] in-file\n"), program_name); - exit (status); -} + fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name); + fprintf (file, _("Print a human readable interpretation of a SYSROFF object file\n")); + fprintf (file, _(" The options are:\n\ + -h --help Display this information\n\ + -v --version Print the program's version number\n")); -static void -show_help () -{ - printf (_("%s: Print a human readable interpretation of a SYSROFF object file\n"), - program_name); - show_usage (stdout, 0); + if (status == 0) + fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO); + exit (status); } int @@ -768,13 +801,15 @@ main (ac, av) program_name = av[0]; xmalloc_set_program_name (program_name); - while ((opt = getopt_long (ac, av, "hV", long_options, (int *) NULL)) != EOF) + while ((opt = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF) { switch (opt) { + case 'H': case 'h': - show_help (); + show_usage (stdout, 0); /*NOTREACHED*/ + case 'v': case 'V': print_version ("sysdump"); exit (0); @@ -790,20 +825,15 @@ main (ac, av) /* The input and output files may be named on the command line. */ if (optind < ac) - { - input_file = av[optind]; - } + input_file = av[optind]; if (!input_file) - { - fatal (_("no input file specified")); - } + fatal (_("no input file specified")); file = fopen (input_file, FOPEN_RB); + if (!file) - { - fatal (_("cannot open input file %s"), input_file); - } + fatal (_("cannot open input file %s"), input_file); module (); return 0; diff -uprN binutils-2.11.92.0.12.3/binutils/testsuite/ChangeLog binutils-2.11.93.0.2/binutils/testsuite/ChangeLog --- binutils-2.11.92.0.12.3/binutils/testsuite/ChangeLog Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/testsuite/ChangeLog Sun Feb 3 11:22:31 2002 @@ -1,3 +1,12 @@ +2002-01-14 Nick Clifton + + * binutils-all/objcopy.exp: Expect xscale-coff to fail simple + objcopy test for the same reason as arm-coff. + +2001-11-29 H.J. Lu + + * binutils-all/objcopy.exp (strip_test): Add strip on archive. + 2001-11-15 Alan Modra * binutils-all/objcopy.exp: Allow '? main', to suit powerpc64. diff -uprN binutils-2.11.92.0.12.3/binutils/testsuite/binutils-all/objcopy.exp binutils-2.11.93.0.2/binutils/testsuite/binutils-all/objcopy.exp --- binutils-2.11.92.0.12.3/binutils/testsuite/binutils-all/objcopy.exp Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/testsuite/binutils-all/objcopy.exp Sun Feb 3 11:22:31 2002 @@ -1,4 +1,4 @@ -# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify @@ -314,6 +314,7 @@ if {$low == "" || $origstart == ""} then # Test stripping an object. proc strip_test { } { + global AR global CC global STRIP global STRIPFLAGS @@ -330,6 +331,34 @@ proc strip_test { } { } if [is_remote host] { + set archive libstrip.a + set objfile [remote_download host tmpdir/testprog.o]; + remote_file host delete $archive + } else { + set archive tmpdir/libstrip.a + set objfile tmpdir/testprog.o + } + + remote_file build delete tmpdir/libstrip.a + + set exec_output [binutils_run $AR "rc $archive ${objfile}"] + if ![string match "" $exec_output] { + fail $test + return + } + + set exec_output [binutils_run $STRIP "$STRIPFLAGS $archive"] + if ![string match "" $exec_output] { + fail $test + return + } + + if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } { + untested $test + return + } + + if [is_remote host] { set objfile [remote_download host tmpdir/testprog.o]; } else { set objfile tmpdir/testprog.o @@ -481,6 +510,7 @@ proc copy_executable { prog flags test1 setup_xfail "mips*-*-elf" setup_xfail "*arm*-*-coff" + setup_xfail "xscale-*-coff" setup_xfail "arm*-*-pe" setup_xfail "thumb*-*-coff" setup_xfail "thumb*-*-pe" diff -uprN binutils-2.11.92.0.12.3/binutils/unwind-ia64.c binutils-2.11.93.0.2/binutils/unwind-ia64.c --- binutils-2.11.92.0.12.3/binutils/unwind-ia64.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/binutils/unwind-ia64.c Sun Feb 3 11:22:31 2002 @@ -1071,7 +1071,7 @@ unw_decode_b3_x4 (dp, code, arg) } typedef const unsigned char *(*unw_decoder) - PARAMS ((const unsigned char *, unsigned char, void *)); + PARAMS ((const unsigned char *, unsigned int, void *)); static unw_decoder unw_decode_table[2][8] = { diff -uprN binutils-2.11.92.0.12.3/binutils/version.c binutils-2.11.93.0.2/binutils/version.c --- binutils-2.11.92.0.12.3/binutils/version.c Thu Oct 4 14:35:43 2001 +++ binutils-2.11.93.0.2/binutils/version.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* version.c -- binutils version information - Copyright 1991, 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1991, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -32,7 +32,7 @@ print_version (name) /* This output is intended to follow the GNU standards document. */ /* xgettext:c-format */ printf ("GNU %s %s\n", name, BFD_VERSION_STRING); - printf (_("Copyright 2001 Free Software Foundation, Inc.\n")); + printf (_("Copyright 2002 Free Software Foundation, Inc.\n")); printf (_("\ 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")); diff -uprN binutils-2.11.92.0.12.3/binutils/windres.c binutils-2.11.93.0.2/binutils/windres.c --- binutils-2.11.92.0.12.3/binutils/windres.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/binutils/windres.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* windres.c -- a program to manipulate Windows resources - Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of GNU Binutils. @@ -638,13 +638,11 @@ format_from_filename (filename, input) /* If we don't recognize the name of an output file, assume it's a COFF file. */ - if (! input) return RES_FORMAT_COFF; /* Read the first few bytes of the file to see if we can guess what it is. */ - e = fopen (filename, FOPEN_RB); if (e == NULL) fatal ("%s: %s", filename, strerror (errno)); @@ -701,45 +699,46 @@ usage (stream, status) FILE *stream; int status; { - fprintf (stream, _("Usage: %s [options] [input-file] [output-file]\n"), + fprintf (stream, _("Usage: %s [option(s)] [input-file] [output-file]\n"), program_name); - fprintf (stream, _("\ -Options:\n\ - -i FILE, --input FILE Name input file\n\ - -o FILE, --output FILE Name output file\n\ - -I FORMAT, --input-format FORMAT\n\ - Specify input format\n\ - -O FORMAT, --output-format FORMAT\n\ - Specify output format\n\ - -F TARGET, --target TARGET Specify COFF target\n\ - --preprocessor PROGRAM Program to use to preprocess rc file\n\ - --include-dir DIR Include directory when preprocessing rc file\n\ - -DSYM[=VAL], --define SYM[=VAL]\n\ - Define SYM when preprocessing rc file\n\ - -v Verbose - tells you what it's doing\n\ - --language VAL Set language when reading rc file\n\ - --use-temp-file Use a temporary file instead of popen to read\n\ - the preprocessor output\n\ - --no-use-temp-file Use popen (default)\n")); + fprintf (stream, _(" The options are:\n\ + -i --input= Name input file\n\ + -o --output= Name output file\n\ + -I --input-format= Specify input format\n\ + -O --output-format= Specify output format\n\ + -F --target= Specify COFF target\n\ + --preprocessor= Program to use to preprocess rc file\n\ + --include-dir= Include directory when preprocessing rc file\n\ + -D --define [=] Define SYM when preprocessing rc file\n\ + -v --verbose Verbose - tells you what it's doing\n\ + --language= Set language when reading rc file\n\ + --use-temp-file Use a temporary file instead of popen to read\n\ + the preprocessor output\n\ + --no-use-temp-file Use popen (default)\n")); #ifdef YYDEBUG fprintf (stream, _("\ - --yydebug Turn on parser debugging\n")); + --yydebug Turn on parser debugging\n")); #endif fprintf (stream, _("\ - --help Print this help message\n\ - --version Print version information\n")); + -h --help Print this help message\n\ + -V --version Print version information\n")); fprintf (stream, _("\ FORMAT is one of rc, res, or coff, and is deduced from the file name\n\ extension if not specified. A single file name is an input file.\n\ No input-file is stdin, default rc. No output-file is stdout, default rc.\n")); + list_supported_targets (program_name, stream); + if (status == 0) fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO); + exit (status); } -/* Quote characters that will confuse the shell when we run the preprocessor */ -static const char *quot (string) +/* Quote characters that will confuse the shell when we run the preprocessor. */ + +static const char * +quot (string) const char *string; { static char *buf = 0; @@ -813,7 +812,7 @@ main (argc, argv) language = -1; use_temp_file = 0; - while ((c = getopt_long (argc, argv, "i:o:I:O:F:D:v", long_options, + while ((c = getopt_long (argc, argv, "i:o:I:O:F:D:hHvV", long_options, (int *) 0)) != EOF) { switch (c) @@ -916,10 +915,13 @@ main (argc, argv) break; #endif + case 'h': + case 'H': case OPTION_HELP: usage (stdout, 0); break; + case 'V': case OPTION_VERSION: print_version ("windres"); break; diff -uprN binutils-2.11.92.0.12.3/binutils.spec binutils-2.11.93.0.2/binutils.spec --- binutils-2.11.92.0.12.3/binutils.spec Wed Nov 28 23:04:22 2001 +++ binutils-2.11.93.0.2/binutils.spec Thu Feb 7 10:33:06 2002 @@ -9,7 +9,7 @@ Summary: A GNU collection of binary utilities. Name: binutils -Version: 2.11.92.0.12.3 +Version: 2.11.93.0.2 Release: 1 Copyright: GPL Group: Development/Tools @@ -41,6 +41,14 @@ patch -p1 -b --suffix .isa < mips/binuti find -name "*.rej" | grep rej && exit 1 %endif +%if %{cross_compile} +patch -p1 -b --suffix .build < mips/build.patch +find -name "*.rej" | grep rej && exit 1 +cd libiberty +autoconf +cd .. +%endif + %build if [ -x /usr/bin/getconf ] ; then NRPROC=$(/usr/bin/getconf _NPROCESSORS_ONLN) diff -uprN binutils-2.11.92.0.12.3/binutils.spec.in binutils-2.11.93.0.2/binutils.spec.in --- binutils-2.11.92.0.12.3/binutils.spec.in Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/binutils.spec.in Thu Feb 7 10:21:03 2002 @@ -41,6 +41,14 @@ patch -p1 -b --suffix .isa < mips/binuti find -name "*.rej" | grep rej && exit 1 %endif +%if %{cross_compile} +patch -p1 -b --suffix .build < mips/build.patch +find -name "*.rej" | grep rej && exit 1 +cd libiberty +autoconf +cd .. +%endif + %build if [ -x /usr/bin/getconf ] ; then NRPROC=$(/usr/bin/getconf _NPROCESSORS_ONLN) diff -uprN binutils-2.11.92.0.12.3/config.guess binutils-2.11.93.0.2/config.guess --- binutils-2.11.92.0.12.3/config.guess Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/config.guess Sun Feb 3 11:22:29 2002 @@ -1,9 +1,9 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2001-09-13' +timestamp='2002-01-30' # 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 @@ -24,8 +24,9 @@ timestamp='2001-09-13' # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner . -# Please send patches to . +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and @@ -134,23 +135,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:$ # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - sparc*) machine=`uname -p`-unknown ;; - *) machine=${UNAME_MACHINE}-unknown ;; + # + # 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 + case "${UNAME_MACHINE_ARCH}" in + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null @@ -290,6 +289,9 @@ EOF *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; @@ -547,10 +549,8 @@ EOF 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 @@ -559,13 +559,13 @@ EOF case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include @@ -598,10 +598,10 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; @@ -737,6 +737,9 @@ EOF i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -768,10 +771,24 @@ EOF echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) - case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in - big) echo mips-unknown-linux-gnu && exit 0 ;; - little) echo mipsel-unknown-linux-gnu && exit 0 ;; - esac + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu @@ -820,7 +837,9 @@ EOF # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_supported_targets=`cd /; ld --help 2>&1 \ + # Export LANG=C to prevent ld from outputting information in other + # languages. + ld_supported_targets=`LANG=C; export LANG; cd /; ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// @@ -844,32 +863,29 @@ EOF esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-pc-linux-gnu\n", argv[1]); -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-pc-linux-gnuaout\n", argv[1]); -#endif - return 0; -} + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) @@ -948,7 +964,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 | 4850:*: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 | 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` @@ -1051,13 +1067,15 @@ EOF *:procnto*:*:* | *:QNX:[0123456789]*:*) if test "${UNAME_MACHINE}" = "x86pc"; then UNAME_MACHINE=pc + echo i386-${UNAME_MACHINE}-nto-qnx + else + echo `uname -p`-${UNAME_MACHINE}-nto-qnx fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) + NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) diff -uprN binutils-2.11.92.0.12.3/config.sub binutils-2.11.93.0.2/config.sub --- binutils-2.11.92.0.12.3/config.sub Mon Oct 1 15:25:20 2001 +++ binutils-2.11.93.0.2/config.sub Sun Feb 3 11:22:29 2002 @@ -1,9 +1,9 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. -timestamp='2001-09-14' +timestamp='2002-02-01' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -29,7 +29,8 @@ timestamp='2001-09-14' # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Please send patches to . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -230,6 +231,7 @@ case $basic_machine in 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ @@ -244,18 +246,17 @@ case $basic_machine in | mipsisa32 \ | mn10200 | mn10300 \ | ns16k | ns32k \ - | openrisc \ + | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | s390 | s390x \ - | sh | sh[34] | sh[34]eb | shbe | shle \ + | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ - | stormy16 | strongarm \ + | strongarm \ | tahoe | thumb | tic80 | tron \ - | v850 \ + | v850 | v850e \ | we32k \ - | x86 | xscale \ + | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; @@ -282,7 +283,8 @@ case $basic_machine in 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alphapca5[67]-* | arc-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | avr-* \ | bs2000-* \ @@ -307,14 +309,14 @@ case $basic_machine in | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ - | v850-* | vax-* \ + | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ + | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ | ymp-* \ | z8k-*) ;; @@ -423,6 +425,14 @@ case $basic_machine in decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola @@ -625,6 +635,10 @@ case $basic_machine in basic_machine=m68k-rom68k os=-coff ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; msdos) basic_machine=i386-pc os=-msdos @@ -704,6 +718,10 @@ case $basic_machine in basic_machine=hppa1.1-oki os=-proelf ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose @@ -729,7 +747,7 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexgen) + pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) @@ -738,7 +756,7 @@ case $basic_machine in pentiumii | pentium2) basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) @@ -789,6 +807,12 @@ case $basic_machine in rtpc | rtpc-*) basic_machine=romp-ibm ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; sa29200) basic_machine=a29k-amd os=-udi @@ -800,7 +824,7 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; - sparclite-wrs) + sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; @@ -880,6 +904,10 @@ case $basic_machine in tx39el) basic_machine=mipstx39el-unknown ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; tower | tower-32) basic_machine=m68k-ncr ;; @@ -986,6 +1014,9 @@ case $basic_machine in sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; + sh64) + basic_machine=sh64-unknown + ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; @@ -1073,7 +1104,7 @@ case $os in | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos*) + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* | -morphos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1125,6 +1156,9 @@ case $os in -acis*) os=-aos ;; + -atheos*) + os=-atheos + ;; -386bsd) os=-bsd ;; @@ -1205,6 +1239,7 @@ case $basic_machine in arm*-semi) os=-aout ;; + # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; @@ -1235,6 +1270,9 @@ case $basic_machine in mips*-*) os=-elf ;; + or32-*) + os=-coff + ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; diff -uprN binutils-2.11.92.0.12.3/configure binutils-2.11.93.0.2/configure --- binutils-2.11.92.0.12.3/configure Wed Feb 7 15:07:29 2001 +++ binutils-2.11.93.0.2/configure Sun Feb 3 11:22:29 2002 @@ -86,7 +86,7 @@ subdirs= target_alias=NOTARGET target_makefile_frag= undefs=NOUNDEFS -version="$Revision: 1.12 $" +version="$Revision: 1.13 $" x11=default bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' @@ -1078,6 +1078,12 @@ else GDB_TK="" fi +all_build_modules= +if test x"${build_alias}" != x"${host_alias}" +then + all_build_modules='$(ALL_BUILD_MODULES_LIST)' +fi + for subdir in . ${subdirs} ; do # ${subdir} is relative path from . to the directory we're currently @@ -1378,6 +1384,7 @@ EOF -e "s|^oldincludedir[ ]*=.*$|oldincludedir = ${oldincludedir}|" \ -e "s|^infodir[ ]*=.*$|infodir = ${infodir}|" \ -e "s|^mandir[ ]*=.*$|mandir = ${mandir}|" \ + -e "s|^ALL_BUILD_MODULES =.*|ALL_BUILD_MODULES =${all_build_modules}|" \ -e "/^CC[ ]*=/{ :loop1 /\\\\$/ N diff -uprN binutils-2.11.92.0.12.3/configure.in binutils-2.11.93.0.2/configure.in --- binutils-2.11.92.0.12.3/configure.in Fri Nov 16 14:05:51 2001 +++ binutils-2.11.93.0.2/configure.in Sun Feb 3 11:22:29 2002 @@ -434,6 +434,18 @@ if [ ! -d ${target_subdir} ] ; then fi fi +build_subdir=${build_alias} + +if [ x"${build_alias}" != x"${host}" ] ; then + if [ ! -d ${build_subdir} ] ; then + if mkdir ${build_subdir} ; then true + else + echo "'*** could not make ${PWD=`pwd`}/${build_subdir}" 1>&2 + exit 1 + fi + fi +fi + copy_dirs= # Handle --with-headers=XXX. The contents of the named directory are @@ -589,6 +601,17 @@ no) esac case "${target}" in + *-*-netbsd*) + # Skip some stuff on all NetBSD configurations. + skipdirs="$skipdirs target-newlib target-libiberty target-libgloss" + + # Skip some stuff that's unsupported on some NetBSD configurations. + case "${target}" in + *) + noconfigdirs="$noconfigdirs ${libgcj}" + ;; + esac + ;; *-*-netware) noconfigdirs="$noconfigdirs ${libstdcxx_version} target-newlib target-libiberty target-libgloss target-libffi" ;; @@ -632,18 +655,6 @@ case "${target}" in arm-*-pe*) noconfigdirs="$noconfigdirs target-libgloss" ;; - arm-*-coff*) - noconfigdirs="$noconfigdirs target-libgloss" - if [ x${is_cross_compiler} != xno ] ; then - target_configdirs="${target_configdirs} target-bsp target-cygmon" - fi - ;; - arm-*-elf*) - noconfigdirs="$noconfigdirs target-libgloss" - if [ x${is_cross_compiler} != xno ] ; then - target_configdirs="${target_configdirs} target-bsp target-cygmon" - fi - ;; arm-*-oabi*) noconfigdirs="$noconfigdirs target-libgloss target-libffi" ;; @@ -657,25 +668,25 @@ case "${target}" in noconfigdirs="$noconfigdirs target-libgloss target-libffi" ;; strongarm-*-elf) - noconfigdirs="$noconfigdirs target-libgloss target-libffi" + noconfigdirs="$noconfigdirs target-libffi" if [ x${is_cross_compiler} != xno ] ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi ;; strongarm-*-coff) - noconfigdirs="$noconfigdirs target-libgloss target-libffi" + noconfigdirs="$noconfigdirs target-libffi" if [ x${is_cross_compiler} != xno ] ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi ;; xscale-*-elf) - noconfigdirs="$noconfigdirs target-libgloss target-libffi" + noconfigdirs="$noconfigdirs target-libffi" if [ x${is_cross_compiler} != xno ] ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi ;; xscale-*-coff) - noconfigdirs="$noconfigdirs target-libgloss target-libffi" + noconfigdirs="$noconfigdirs target-libffi" if [ x${is_cross_compiler} != xno ] ; then target_configdirs="${target_configdirs} target-bsp target-cygmon" fi @@ -730,6 +741,10 @@ case "${target}" in # No gdb support yet. noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb" ;; + ia64*-**-hpux*) + # No gdb or ld support yet. + noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld" + ;; i[3456]86-*-coff | i[3456]86-*-elf) if [ x${is_cross_compiler} != xno ] ; then target_configdirs="${target_configdirs} target-libstub target-cygmon" @@ -1260,7 +1275,8 @@ if [ "${shared}" = "yes" ]; then esac fi -# Record target_configdirs and the configure arguments in Makefile. +# 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}" | \ sed -e 's/--no[^ ]*//' \ @@ -1269,6 +1285,11 @@ targargs=`echo "${arguments}" | \ -e 's/--bu[a-z-]*=[^ ]*//' \ -e 's/--ta[a-z-]*=[^ ]*//'` +# 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}" + # 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 @@ -1289,6 +1310,9 @@ if [ x${with_newlib} != xno ] && echo " targargs="--with-newlib ${targargs}" fi +# Pass the appropriate --host, --build, and --cache-file arguments. +targargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${targargs}" + # provide a proper gxx_include_dir. # Note, if you change the default, make sure to fix both here and in # the gcc, libio, and libstdc++ subdirectories. @@ -1350,10 +1374,20 @@ case " $skipdirs " in fi fi - # If we're building newlib, use its generic headers last, but search - # for any libc-related directories first (so make it the last -B - # switch). - FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/ -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include -isystem $$s/newlib/libc/include' + case "${target}-${is_cross_compiler}" in + i[3456]86-pc-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 + # for any libc-related directories first (so make it the last -B + # switch). + FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/ -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include -isystem $$s/newlib/libc/include' + ;; + esac ;; esac @@ -1426,15 +1460,16 @@ qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" # macros. qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'` -targargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${targargs}" sed -e "s:^TARGET_CONFIGDIRS[ ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \ - -e "s%^CONFIG_ARGUMENTS[ ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \ + -e "s%^TARGET_CONFIGARGS[ ]*=.*$%TARGET_CONFIGARGS = ${targargs}%" \ -e "s%^FLAGS_FOR_TARGET[ ]*=.*$%FLAGS_FOR_TARGET = ${FLAGS_FOR_TARGET}%" \ -e "s%^CC_FOR_TARGET[ ]*=.*$%CC_FOR_TARGET = ${CC_FOR_TARGET}%" \ -e "s%^CHILL_FOR_TARGET[ ]*=.*$%CHILL_FOR_TARGET = ${CHILL_FOR_TARGET}%" \ -e "s%^CXX_FOR_TARGET[ ]*=.*$%CXX_FOR_TARGET = ${qCXX_FOR_TARGET}%" \ -e "s%^CXX_FOR_TARGET_FOR_RECURSIVE_MAKE[ ]*=.*$%CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = ${qqCXX_FOR_TARGET}%" \ -e "s%^TARGET_SUBDIR[ ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \ + -e "s%^BUILD_SUBDIR[ ]*=.*$%BUILD_SUBDIR = ${build_subdir}%" \ + -e "s%^BUILD_CONFIGARGS[ ]*=.*$%BUILD_CONFIGARGS = ${buildargs}%" \ -e "s%^gxx_include_dir[ ]*=.*$%gxx_include_dir=${gxx_include_dir}%" \ Makefile > Makefile.tem rm -f Makefile diff -uprN binutils-2.11.92.0.12.3/etc/ChangeLog binutils-2.11.93.0.2/etc/ChangeLog --- binutils-2.11.92.0.12.3/etc/ChangeLog Tue Mar 27 08:50:03 2001 +++ binutils-2.11.93.0.2/etc/ChangeLog Sun Feb 3 11:22:31 2002 @@ -1,3 +1,7 @@ +2002-01-26 Hans-Peter Nilsson + + * Makefile.in (install): Depend on install-info. + 2001-03-25 Stephane Carrez * texi2pod.pl: New file (from gcc/contrib). diff -uprN binutils-2.11.92.0.12.3/etc/Makefile.in binutils-2.11.93.0.2/etc/Makefile.in --- binutils-2.11.92.0.12.3/etc/Makefile.in Thu Jun 3 11:01:55 1999 +++ binutils-2.11.93.0.2/etc/Makefile.in Sun Feb 3 11:22:31 2002 @@ -51,7 +51,8 @@ DVIFILES = standards.dvi configure.dvi all: -install: +# We want install to imply install-info as per GNU standards. +install: install-info uninstall: diff -uprN binutils-2.11.92.0.12.3/gas/ChangeLog binutils-2.11.93.0.2/gas/ChangeLog --- binutils-2.11.92.0.12.3/gas/ChangeLog Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/gas/ChangeLog Thu Feb 7 10:21:04 2002 @@ -1,7427 +1,464 @@ -2001-11-21 Richard Sandiford +2002-02-06 Alexandre Oliva - * config/tc-mips.c (mips_need_elf_addend_fixup): New, extracted from... - (md_apply_fix3): ...here. Don't prevent the symbol value being - subtracted twice from GPREL addends. - (tc_gen_reloc): Add the symbol value to a GPREL addend if it was - subtracted by the previous function. - -2001-11-20 Nick Clifton - - * config/tc-avr.c (md_apply_fix3): Fix typo introduced by - md_apply_fix3 change. - -2001-11-20 Ben Elliston - - * config/tc-m88k.c (md_apply_fix3): Match local variable `val' to - usage after md_apply_fix3 cleanups. - -2001-11-19 Hans-Peter Nilsson - - * doc/c-mmix.texi: Use texinfo 4 features. - (MMIX-mmixal): Fix typo. - -2001-11-17 Hans-Peter Nilsson - - * config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in - val assignment. - -2001-11-16 Alan Modra - - * config/tc-m68k.c (md_apply_fix3): Change val back to a signed type. - -2001-11-15 H.J. Lu - - * config/tc-hppa.c (md_apply_fix3): Fix a typo. - -2001-11-15 H.J. Lu - - * config/tc-alpha.c (md_apply_fix3): Fix a typo. - -2001-11-15 Nick Clifton - - * write.c (fixup_segment): Remove references to md_apply_fix and - TC_HANDLE_FX_DONE. - * cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances - of md_apply_fix to md_apply_fix3. - Make all md_apply_fix3 functions void. - * cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of - MD_APPLY_FIX3 and TC_HANDLE_FX_DONE. - * doc/internals.texi: Update references to md_apply_fix3. - * tc.h: Update prototype for md_apply_fix3. - -2001-11-15 Alan Modra - - * config/tc-i386.h (md_end): Define. - (i386_elf_emit_arch_note): Declare. - (CpuUnknown): Delete. - * config/tc-i386.c (default_arch): Constify. - (smallest_imm_type): Remove CpuUnknown test. - (md_assemble): Don't bother checking cpu_arch_flags non-zero. - (i386_elf_emit_arch_note): New function. - - * po/POTFILES.in: Regenerate. - -2001-11-15 Thiemo Seufer - - * config/tc-mips.c (mips_ip): Re-allow %hi() op for non-ELF assembler. - -2001-11-15 Alan Modra - - * frags.c (frag_grow): Revert last change. - - * dwarf2dbg.c (get_frag_fix): Align last frag size. - - * config/tc-ppc.c (ppc_insert_operand): Pass (ppc_cpu | ppc_size) - to operand->insert. - (md_assemble): Likewise. - -2001-11-12 Nick Clifton - - * frags.c (frag_grow): Use frag_make_room() to grow the - obstack. - -2001-11-14 Nick Clifton - - * config/tc-sparc.c (md_apply_fix3): Do not remove the symbol's - value from the addend for fixups against local symbols in - SEC_MERGE sections - it was not added in, in the first place. - -2001-11-11 Timothy Wall - - * write.c (relax_segment): Convert symbol address into an octet - offset prior to adding to the frag address, which is an octet - offset. Add comments to that effect. - * config/tc-tic54x.c: Fix bugs causing tests to fail. - * config/tc-tic54x.h: Ditch PARAMS macro. - -2001-11-13 Alan Modra - - * config/obj-elf.c (obj_elf_version): Ensure terminating NUL is - put in note section. Use sizeof instead of hard-coded constants. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (support_64bit_objects): Define for OBJ_ELF only. - (md_longopts): Allow OPTION_MABI for ELF compilation only. RE-allow - OPTION_GP32, OPTION_GP64, OPTION_FP32 for non-ELF compilation. - Sort options a bit more logical. - (md_parse_option): Allow OPTION_32, OPTION_N32, OPTION_N64, - OPTION_MABI only for elf targets. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (set_at): Add cast needed for varargs. - (load_register): Likewise. - (macro): Likewise. Some code reformatting. - (macro2): Add cast needed for varargs. - (mips16_macro): Likewise. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (md_assemble): Remove superflous casts. - (append_insn): Likewise. - (mips16_macro_build): Likewise. - (macro): Likewise. - (mips16_ip): Likewise. - (s_cpload): Likewise. - (mips_relax_frag): Likewise. - -2001-11-12 Thiemo Seufer - - * config/tc-mips.c (mips_abi_level): Move in front of - mips_set_options. - (mips_set_options): Add members gp32, fp32, abi. - (file_mips_gp32): New flag. - (file_mips_fp32): New flag. - (mips_opts): Initialize the new members. - (mips_gp32): Remove. - (mips_fp32): Remove. - (HAVE_32BIT_GPRS): Use the new values from mips_opts. - (HAVE_32BIT_FPRS): Likewise. - (HAVE_NEWABI): Likewise. - (HAVE_64BIT_OBJECTS): Likewise. - (md_begin): Likewise. Save default (file) values. - (md_parse_option): Use the new values from mips_opts. - (s_mipsset): Likewise. Fix logic to keep the ABI selection if - possible. Let .set mipsN work together with .set push/pop. - Enhance error messages. - (mips_elf_final_processing): Use file_mips_* for header processing. - -2001-11-09 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Update for new devices. - -2001-11-09 Stephane Carrez - - * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for - the page man title. - * doc/Makefile.in: Rebuild. - * doc/as.texinfo: Do not put man SEEALSO in document; - Use @command for commands, @option for options; Reorganize usage - to clearly identify target specific options. - -2001-11-08 Thiemo Seufer - - * config/tc-mips.c (mips_force_relocation): Remove duplicate code. - -2001-11-06 Thiemo Seufer - - * config/tc-mips.c (my_getSmallParser): Fix small parser bug. - -2001-11-05 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_force_relocation): Force all relocations - that need the global offset table. - (md_apply_fix3): Add code to undo opertions done in fixup_segment - triggered by TC_FORCE_RELOCATION. - * config/tc-s390.h (TC_FORCE_RELOCATION): Replace macro code with - a call to function tc_s390_force_relocation. - (TC_FIX_ADJUSTABLE): Define. - -2001-11-04 Chris Demetriou - - * configure.in (mips-*-netbsd*): Add support for target. - * configure: Regenerate. - -2001-11-02 Nick Clifton - - * configure.in (ALL_LINGUAS): Add 'fr'. - * configure: Regernate. - * po/fr.po: New file. Obtained from the translation project web - site. - -2001-11-02 Richard Earnshaw - - * tc-arm.c: Re-arrange prototypes by architecture. - (insns): Re-arrange instructions by archtitecture. Pld instruction - is part of ARMv5E. - (tinsns): blx and bkpt are part of ARMv5T. - (do_fp_{ctrl,ldst,ldstm,dyadic,monadic,cmp,from_reg,to_reg}): Rename - to do_fpa_*. All callers changed. - - * tc-arm.c (insns): Add two temporary instructions to handle - ldrd/strd. - -2001-11-01 Stephane Carrez - - * config/tc-m68hc11.c (build_jump_insn): Allocate worst case storage - for bra/bsr and use frag_variant(), this ensure that the possible - 16-bit BFD_RELOC_16 will be in the same frag. - -2001-10-31 Chris Demetriou - - * config/tc-mips.c (HAVE_32BIT_ADDRESSES): If compiling embedded - PIC code, assume pointers the same size as GPRs. - (macro): In M_LA_AB handling for embedded PIC code, support - "la $treg,foo-bar($breg)". In load/store handling - (label ld_st) support " $treg,-($breg)" - which is used by the compiler for switch statements. - In load/store double multi-instruction macro handling - (label ldd_std) add a comment that no special handling - is currently done for embedded PIC. - (mips_ip): In 'o' (16-bit offset) case, only accept 16 - bit offsets. - -2001-10-31 Richard Earnshaw - - General cleanup of feature definitions. - * tc-arm.c (ARM_EXT_LONGMUL, ARM_EXT_HALFWORD, ARM_EXT_THUMB): Delete. - (ARM_2UP, ARM_ALL, ARM_3UP, ARM_6UP): Delete. - (FPU_CORE, FPU_FPA10, FPA_FPA11, FPU_ALL, FPA_MEMMULTI): Delete. - (ARM_EXT_V{1,2,2S,3,3M,4,4T,5T,5ExP}): New defines. - (ARM_EXT_V{5,5E}): Synchronize with above. - (ARM_ARCH_V*): Define a complete set in terms of above features. - (ARM_{1,2,3,250,6,7,8,9,STRONG}): Define in terms of architecture. - (FPU_FPA_EXT_V[12]): Define. - (FPU_ARCH_FPE, FPU_ARCH_FPA): Define in terms of above. - (FPU_ANY): Define. - (FPU_DEFAULT): Default to FPA. - (CPU_DEFAULT): For XScale, this is now just ARM_ARCH_XSCALE; for - Thumb, this is now ARM_ARCH_V5T. - (insns): Rework for new feature defines. - (tinsns): Likewise. - (opcode_select, do_ldst, md_begin, md_parse_option): Likewise. - -2001-10-31 NIIBE Yutaka - - * configure.in: Handle sh*eb-*-linux* and sh*-*-linux*. - * configure: Regenerate. - * Makefile.in: Regenerate. - * doc/c-sh.texi (SH Options): Added descriptions. - -2001-10-30 Hans-Peter Nilsson - - * configure.in: Update for MMIX port. - * Makefile.am: Ditto. Regenerate dependencies. - * Makefile.in: Regenerate. - * configure: Regenerate. - * config/tc-mmix.h, config/tc-mmix.c: New files. - * doc/Makefile.am (CPU_DOCS): Add c-mmix.texi - * doc/Makefile.in: Regenerate. - * doc/all.texi: @set MMIX. - * doc/as.texinfo: Ditto. Add MMIX gas manpage option overview. - Include c-mmix.texi. - * doc/c-mmix.texi: New file. - -2001-10-24 Chris Demetriou - - * config/tc-mips.c (hilo_interlocks, cop_interlocks): Make - these evaluate to true if mips_arch indicates SB-1. - -2001-10-23 Alan Modra - - * as.c (parse_args): Print the date as well for --version. - -2001-10-20 Chris Demetriou - - * config/tc-mips.c (md_show_usage): Print "sb1" for Broadcom - SB-1 CPU for consistency. - (mips_cpu_info_table): Tweak comment about SB-1. - -2001-10-20 H.J. Lu - - * config/tc-arm.c (do_c_shift): Use ISDIGIT instead of isdigit. - (cirrus_parse_offset): Likewise. - -2001-10-19 Nick Clifton - - * config/tc-arm.c: Restore line_comment_chars. - -2001-10-18 Nick Clifton - - * config/tc-arm.c (comment_chars): Remove semi-colon accidentally - added to the list. - -2001-10-18 Hans-Peter Nilsson - - * write.c (fixup_segment): Handle fixups for SEC_MERGE sections as - for undefined symbols. - -2001-10-17 Chris Demetriou - - * doc/as.texinfo (MIPS ISA options): Added accidentally - omitted "-mips64" option to list of options. - -2001-10-17 matthew green - - * config/tc-ppc.c (md_show_usage): Add missing -maltivec, -m7400, - -m7410, -m7450 and -m7455 options. - -2001-10-17 Alan Modra - - * config/tc-ppc.c (PPC_HA, PPC_HIGHERA, PPC_HIGHESTA): Simplify. - (ppc_size): Select PPC_OPCODE_64 if 64 bit. - (md_begin): Don't set ppc_size here. - (ppc_target_format): Test ppc_size as well as BFD_DEFAULT_TARGET_SIZE. - (md_shortopts): Constify. - (md_longopts): Likewise. - (md_longopts_size): Likewise. - (ppc_elf_suffix): Only allow 64-bit relocs when ppc_size specifies - 64-bit opcodes. - (ppc_machine): Explain why this function is a nop. - -2001-10-17 Alan Modra - - * bit_fix.h: Comment typo fix. - * config/tc-mips.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-arc.c (arc_code_symbol): Remove unnecessary test. - - * configure.in (MIPS_STABS_ELF): AC_DEFINE in only one place so - that autoheader doesn't duplicate config.in entries. - (DEFAULT_ARCH): Ditto. - * configure: Regenerate. - * config.in: Regenerate. - -2001-10-16 Alan Modra - - From Andrew Pines - * config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes. - -2001-10-16 NIIBE Yutaka , - Hans-Peter Nilsson - - * config/tc-sh.c (shl): Remove. - (big): New function. - (little): Remove shl handling. Emit error for endian mismatch. - (md_show_usage): Add description of -big. - (md_parse_option): Handle OPTION_BIG. Remove shl handling. - (OPTION_BIG): Add. - (md_pseudo_table): Add .big. - (md_longopts): Add -big. - (md_begin): Don't set target_big_endian here. - * config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove. - (LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian. - (shl): Remove. - * configure.in (endian): Default is big. - (sh-*-pe*): Little endian. - (cpu_type): Set sh for target sh*. - * configure: Regenerate. - -2001-10-15 Thiemo Seufer - - * config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI - relocations. - -2001-10-13 Nick Clifton - - * config/tc-arm.c: Replace CONST with const. - - * cgen.c: Tidy up formatting. - -2001-10-12 matthew green - - * config/tc-ppc.c (md_parse_option): New -m7410, -m7450 and -m7455 - flags, equivalent to -m7400. New -maltivec to enable AltiVec - instructions. New -mbook64 and -mbooke/-mbooke32 flags to enable - 64-bit and 32-bit BookE support, respectively. Change -m403 and - -m405 to set PPC403 option. - (md_show_usage): Adjust for new options. - * doc/all.texi: Set PPC. - * doc/as.texinfo: Add PPC support and pull in c-ppc.texi. - * doc/c-ppc.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-ppc.texi. - * doc/Makefile.in: Regenerate. - -2001-10-12 Nick Clifton - - * read.c (s_bad_endr): New function. Issues a warning message - about a bad use of the .rept pseudo op. - (po_table[]): Add .endr. - * read.h: Prototype s_bad_endr. - - * CONTRIBUTORS: Update contact email address. - -2001-10-11 Kazu Hirata - - * config/tc-alpha.c: Fix comment typos. - * config/tc-cris.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-mn10200.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-v850.c: Likewise. - -2001-10-11 Kazu Hirata - - * app.c: Fix comment typos. - * bit_fix.h: Likewise. - * expr.c: Likewise. - * itbl-ops.c: Likewise. - -2001-10-11 Nick Clifton - - * input-file.c: Include safe-ctype.h. - (input_file_open): Use ISSPACE instead of isspace. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c (mips_cpreturn_offset): New variable. - (mips_cpreturn_register): Likewise. - (mips_gp_register): Likewise. - (s_cpsetup): New function prototype. - (s_cplocal): Likewise. - (s_cpreturn): Likewise. - (s_gpvalue): Likewise. - (mips_pseudo_table): Add .cpsetup, .cplocal, .cpreturn, .gpvalue - pseudo-ops. - (macro): Don't warn about .cprestore for NewABI. - (md_pcrel_from): Code cleanup. - (mips_force_relocation): Force output of some NewABI relocations even - without a defined symbol. - (s_cpload): Ignore .cpload for NewABI. - (s_cpsetup): Handle .cpsetup. - (s_cplocal): Handle .cplocal. - (s_cprestore): Ignore .cprestore for NewABI. - (s_cpreturn): Handle .cpreturn. - (s_gpvalue): Handle .gpvalue. - (s_cpadd): Ignore .cpadd for NewABI. - (nopic_need_relax): Take g_switch_value into account as gp - optimization. - (tc_gen_reloc): Don't handle BFD_RELOC_MIPS_{CALL,GOT}* for NewABI. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c (my_getSmallParser): New function prototype. - (small_ex_type): Named this enum, more return values for - my_getSmallExpression. - (mips_ip): Allow SPC and HT between arguments. Handle some NewABI - triple relocations. Protect some parts with ifdef OBJ_ELF. - (percent_op_match): New struct, lookup table for %some_reloc(). - (my_getSmallParser): New function, parses nested percent_ops also. - (my_getSmallExpression): Rewite to support nested percent_ops. - -2001-10-10 Thiemo Seufer - - * config/tc-mips.c - (load_address): Support both 32- and 64-bit addresses. - (macro): Call load_register correctly. Expand 64-bit loads ans stores. - (macro2): Call load_address correctly. - -2001-10-09 Christian Groessler - - * config/tc-z8k.c: Include opcodes/z8k-opc.h after bfd.h - since z8k-opc.h now uses the PARAMS macro. - -2001-10-09 Aldy Hernandez - - * config/tc-arm.c: Change MAVERIK to MAVERICK. - -2001-10-09 Alan Modra - - * config/obj-elf.c: Make use of elf_group_name and elf_next_in_group - throughout file. - (obj_elf_change_section): Rename "group" to "group_name". - (obj_elf_section): Likewise. - (elf_frob_file): Don't use sec->lineno for SHT_GROUP section to store - first member section; Instead use elf_next_in_group. - -2001-10-09 Alan Modra - - * config/obj-elf.c: (obj_elf_change_section): Add "group" param. - Set elf_section_data group from it. Warn if group name changed. - (obj_elf_parse_section_letters): Parse 'G' too. - (obj_elf_section): Parse group name. - (struct group_list): New. - (build_group_lists): New function. - (elf_frob_file): Create SEC_GROUP section(s). - - * config/obj-elf.c: (elf_copy_symbol_attributes): Zap trailing - whitespace. - -2001-10-08 Aldy Hernandez - - * doc/arm/c-arm.texi (ARM Options): Add arm9e documentation. - - * config/tc-arm.c (ARM_EXT_MAVERIK): New macro. - (cirrus_regtype): New enum. - (LONGEST_INST): Change to 10. - (CIRRUS_MODE1): New. - (CIRRUS_MODE2): New. - (CIRRUS_MODE3): New. - (CIRRUS_MODE4): New. - (CIRRUS_MODE5): New. - (CIRRUS_MODE6): New. - (insns): Add cirrus dsp instructions. - (ARM_EXT_MAVERIKSC_REG): New. - (cirrus_register): New. - (cirrus_mvf_register): New. - (cirrus_mvd_register): New. - (cirrus_mvfx_register): New. - (cirrus_mvdx_register): New. - (cirrus_mvax_register): New. - (ARM_EXT_MAVERIKsc_register): New. - (reg_table): Add cirrus registers. - (cirrus_valid_reg): New. - (cirrus_reg_required_here): New. - (do_c_binops_1): New. - (do_c_binops_2): New. - (do_c_binops_3): New. - (do_c_triple_4): New. - (do_c_triple_5): New. - (do_c_quad_6): New. - (do_c_dspsc_1): New. - (do_c_dspsc_2): New. - (do_c_shift_1): New. - (do_c_shift_2): New. - (do_c_ldst_1): New. - (do_c_ldst_2): New. - (do_c_ldst_3): New. - (do_c_ldst_4): New. - (do_c_binops): New. - (do_c_triple): New. - (do_c_quad): New. - (do_c_dspsc): New. - (do_c_shift): New. - (cirrus_parse_offset): New. - (do_c_ldst): New. - (md_parse_option): Add arm9e. - (md_show_usage): Same. - -2001-10-08 Tom Rix - - * config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to - location of next .bf - * config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx. - -2001-10-07 Alan Modra - - * config/obj-elf.c: Standardize error/warning messages - don't - capitalise, no final period or newline, don't say "ignoring" for - as_bad messages. In some cases, change the wording to that used - elsewhere for similar messages. - (obj_elf_section_name): New function, split out from .. - (obj_elf_section): .. here. Correctly mask off SHF_MERGE if - entsize not specified. - -2001-10-05 Jakub Jelinek - - * doc/as.texinfo: Document M and S ELF section flags. - -2001-10-05 Alan Modra - - * subsegs.c (subseg_text_p): Return 0 for absolute section. - * read.c (do_align): If in absolute section, warn about and ignore - non-zero fill pattern. - -2001-10-05 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't free - reloc->sym_ptr_ptr if it's not allocated. - -2001-10-04 Thiemo Seufer - - * config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a - relocation triple. - (prev_insn_fixp): Likewise. - (append_insn): Changed prototype to accept a relocation pointer. - (imm_reloc): Make it an array. - (offset_reloc): Likewise. - (md_assemble): Handle triple relocations. - (append_insn): Likewise. Add handling for some NewABI relocations. - (mips_no_prev_insn): Handle triple relocations. - (macro_build): Likewise. Add handling for some NewABI relocations. - Move handling for the 'u' case to append_insn(). - (mips16_macro_build): Handle triple relocations. - (macro_build_lui): Likewise. Don't handle _gp_disp as special symbol - for NewABI. - (mips_ip): Handle triple relocations. - (mips16_ip): Likewise. - (mips_force_relocation): Force handling of triple relocations - without symbols for NewABI. - (md_apply_fix): Add handling for some NewABI relocations. - -2001-10-05 Alan Modra - - * config/tc-i386.c (parse_register): If not producing code for - x86_64, reject x86_64 register name matches. - (md_assemble): Remove now redundant check for x86_64 regs. - -2001-10-04 Alan Modra - - * config/tc-ppc.c (md_assemble ): Test ppc_size as well - as BFD_DEFAULT_TARGET_SIZE. - (ppc_tc): Likewise. - (ppc_is_toc_sym): Likewise. - (md_apply_fix3): Likewise. - -2001-10-03 Thiemo Seufer - - * config/tc-mips.c (mips_64): Remove. - (mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS - in it. - (mips_abi_level, mips_abi): New enum. - (mips_32bit_abi): Remove. - (HAVE*PRS): Use mips_abi instead of mips_32bit_abi. - (HAVE_NEWABI): New define. - (HAVE_64BIT_OBJECTS): New define. - (HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects. - (HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES. - (support_64bit_objects): New prototype. - (md_begin): Use mips_abi instead of mips_32bit_abi. Don't write - .reginfo section for n32, use .MIPS.options instead. - (support_64bit_objects): New function, code from md_parse_option. - (md_longopts): Add -n32 option. - (md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64. - Add -n32 option. Protect with OBJ_ELF. - (s_mipsset): Use mips_abi instead of mips_32bit_abi. - (mips_elf_final_processing): Likewise. Don't write .reginfo section - for n32, use .MIPS.options instead. - -2001-10-03 Alan Modra - - * po/POTFILES.in: Regenerate. - * configure: Regenerate. - -2001-10-02 Alan Modra - - * config/tc-ppc.c (md_apply_fix3 ): Make it 64 - bits if target is 64 bit. - - * doc/as.texinfo (listing): Fix typo. - - * as.c (print_version_id): Use BFD_VERSION_STRING in place of - BFD_VERSION. - * Makefile.am (Makefile): Depend on bfd/configure.in. - Run "make dep-am". - * Makefile.in: Regenerate. - -2001-09-30 H.J. Lu - - * config/obj-elf.c (obj_elf_parse_section_letters): Accept "am" - and "ams" for compatibility. - -2001-09-30 Hans-Peter Nilsson - - * config/tc-sh.c (md_pcrel_from_section): Transformed from - md_pcrel_from. Handle pc-relativeness against link-time - symbol. Handle relativeness to elsewhere than the fixup. - * config/tc-sh.h (MD_PCREL_FROM_SECTION): Define. - (md_pcrel_from_section): Prototype. - - * Makefile.am: Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - -2001-09-30 Stephane Carrez - - * config/tc-m68hc11.c (cmp_opcode): Define prototype. - (print_opcode_format, skip_whites): Likewise. - (convert_branch, m68hc11_new_insn): Likewise. - (build_dbranch_insn, build_indexed_byte): Likewise. - (build_reg_mode, find, find_opcode): Likewise. - (print_insn_format): Fix call to print_opcode_format. - (md_assemble): Fix call to build_dbranch_insn. - -2001-09-27 Nick Clifton - - * config/tc-arm.c: Add missing prototypes. - -2001-09-26 Jeff Johnston - - * input-file.c (input_file_open): When reading the - first line looking for #NO_APP, prepare for the possibility - of finding #APP instead. Also fix algorithm to allow - white-space to follow either #NO_APP or #APP directives. - -2001-09-25 Geoff Berry - - * listing.c (buffer_line): Don't write past the end of `line' when - EOF is reached. - -2001-09-25 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't emit an *ABS* - relocation for differences between symbols in a section other - than the one in which the difference is to be placed; apply - the relocation instead. - -2001-09-24 Nick Clifton - - * config/tc-arc.c: Add missing prototype. - (md_atof): Change type to int. Add missing prototype. - * config/tc-arc.h: Prototype exported functions. - -2001-09-22 Nick Clifton - - * as.c: Add missing function prototype. - * config/obj-aout.c: Fix compile time warning. - -2001-09-21 Bruno Haible - - * config/tc-openrisc.c: Don't include . - -2001-09-19 Martin Schwidefsky - - * gas/config/tc-s390.c: Add option -mwarn-areg-zero. - -2001-09-19 Alan Modra - - * config/tc-i370.c: Fix typo in last change. - -2001-09-19 Nick Clifton - - * doc/as.texinfo (Symbol Names): Improve documentation on local - labels and add documenation about dollar labels. - -2001-09-18 Bruno Haible - - * as.h: Don't include . - * as.c (main): For gettext, also set the LC_CTYPE locate facet. - * atof-generic.c: Include "safe-ctype.h" instead of . - (atof_generic): Use ISDIGIT instead of isdigit. - * config/m68k-parse.y: Include "safe-ctype.h". - (yylex): Use ISDIGIT/ISALNUM instead of isdigit/isalnum. - * config/obj-elf.c: Include "safe-ctype.h". - (obj_elf_vtable_inherit): Use ISSPACE instead of isspace. - * config/obj-vms.c: Include "safe-ctype.h". - (Write_VMS_MHD_Records): Use TOUPPER instead of islower/toupper. - (VMS_Case_Hack_Symbol): Use ISUPPER/ISLOWER/TOUPPER/TOLOWER - instead of isupper/islower/toupper/tolower. - * config/tc-a29k.c: Include "safe-ctype.h" instead of . - (insert_sreg): Use TOUPPER instead of islower/toupper. - (machine_ip): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead of - isalpha/isalnum/isupper/tolower. - (a29k_unrecognized_line, md_operand): Use ISDIGIT instead of - isdigit. - * config/tc-alpha.c: Include "safe-ctype.h" instead of . - (md_undefined_symbol, s_alpha_ent): Use ISDIGIT instead of isdigit. - * config/tc-arc.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE/ISALNUM instead of isspace/isalnum. - (arc_extoper): Use TOLOWER instead of isupper/tolower. - * config/tc-arm.c: Include "safe-ctype.h" instead of . - (arm_psr_parse): Use ISALPHA instead of isalpha. - (accum0_required_here): Use ISALNUM instead of isalnum. - (do_ldrd): Use ISSPACE instead of isspace. - (decode_shift): Use ISALPHA instead of isalpha. - (insert_reg): Use TOUPPER instead of islower/toupper. - (arm_reg_parse): Use ISALPHA instead of isalpha. - (arm_parse_reloc): Use ISALNUM/ISPUNCT/TOLOWER instead of - isalnum/ispunct/tolower. - * config/tc-avr.c: Include "safe-ctype.h" instead of . - (md_parse_option): Use TOLOWER instead of tolower. - (avr_operand): Use ISDIGIT/TOLOWER instead of isdigit/tolower. - * config/tc-cris.c: Include "safe-ctype.h" instead of . - (cris_process_instruction): Use ISLOWER instead of islower. - (get_gen_reg): Use ISALNUM/ISDIGIT instead of isalnum/isdigit. - (get_spec_reg): Use TOLOWER/ISALNUM instead of isupper/tolower/isalnum. - (get_flags): Use ISSPACE instead of isspace. - * config/tc-d10v.c: Include "safe-ctype.h" instead of . - (do_assemble): Use TOLOWER instead of tolower. - * config/tc-d30v.c: Include "safe-ctype.h" instead of . - (do_assemble): Use TOLOWER instead of tolower. - (d30v_start_line): Use ISSPACE instead of isspace. - * config/tc-fr30.c: Include "safe-ctype.h" instead of . - (fr30_is_colon_insn): Use TOLOWER instead of tolower. - * config/tc-h8300.c: Include "safe-ctype.h" instead of . - (skip_colonthing, get_operand): Use ISDIGIT instead of isdigit. - * config/tc-h8500.c: Include "safe-ctype.h" instead of . - (start_label): Use ISALPHA instead of isalpha. - * config/tc-hppa.c: Include "safe-ctype.h" instead of . - (pa_ip): Use ISUPPER/ISLOWER/TOLOWER instead of - isupper/islower/tolower. - (pa_parse_number): Use ISDIGIT instead of isdigit. - (pa_chk_field_selector): Use TOLOWER instead of tolower. - (pa_stringer): Use ISDIGIT instead of isdigit. - * config/tc-i370.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (i370_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (i370_addr_offset): Use ISDIGIT/ISALPHA instead of - isdigit/isalpha. - (i370_addr_cons): Use ISALPHA/ISXDIGIT instead of - isalpha/isxdigit. - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-i386.c: Include "safe-ctype.h" instead of . - (md_begin): Use ISDIGIT/ISLOWER/ISUPPER/TOLOWER/ISALPHA - instead of isdigit/islower/isupper/tolower/isalpha. - (output_invalid): Use ISPRINT instead of isprint. - * config/tc-i860.c: Include "safe-ctype.h" instead of . - (i860_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - * config/tc-i960.c: Include "safe-ctype.h" instead of . - (get_args): Use ISALNUM instead of isalnum. - * config/tc-ia64.c: Include "safe-ctype.h". - (dot_pred_rel): Use TOUPPER/ISDIGIT instead of toupper/isdigit. - (ia64_unrecognized_line): Use ISDIGIT instead of isdigit. - (ia64_parse_name): Likewise. - * config/tc-m32r.c: Include "safe-ctype.h" instead of . - (assemble_two_insns): Use ISSPACE/ISALNUM/ISUPPER/TOLOWER - instead of isspace/isalnum/isupper/tolower. - * config/tc-m68hc11.c: Include "safe-ctype.h" instead of . - (md_assemble): Use TOLOWER/ISALNUM instead of tolower/isalnum. - * config/tc-m68k.c: Include "safe-ctype.h" instead of . - (mklower_table): Remove variable. - (mklower): Remove macro. - (insert_reg): Use TOUPPER instead of islower/toupper. - (md_begin): Remove initialization of mklower_table. - (s_reg): Use ISALNUM instead of isalnum. - (mri_assemble): Use ISUPPER/TOLOWER instead of isupper/tolower. - (parse_mri_condition): Use TOLOWER instead of isupper/tolower. - (build_mri_control_operand): Use TOLOWER instead of tolower. - (s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise. - * config/tc-m88k.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - (get_imm16): Use ISALNUM instead of isalnum. - (get_cnd): Use ISDIGIT/ISUPPER/TOLOWER instead of - isdigit/isupper/tolower. - (get_bf_offset_expression): Use ISALPHA/ISUPPER/TOLOWER - instead of isalpha/isupper/tolower. - (hexval): Use ISDIGIT/ISLOWER/ISUPPER instead of - isdigit/islower/isupper. - * config/tc-mcore.c: Include "safe-ctype.h" instead of . - (mcore_s_section): Use ISSPACE instead of isspace. - (parse_reg): Use ISSPACE/TOLOWER/ISALNUM instead of - isspace/tolower/isalnum. - (parse_creg): Use ISSPACE/TOLOWER instead of isspace/tolower. - (parse_psrmod): Use TOLOWER instead of isascii/tolower. - (parse_exp, parse_mem, md_assemble): Use ISSPACE instead of - isspace. - * config/tc-mips.c: Include "safe-ctype.h" instead of . - (mips_ip): Use ISSPACE/ISDIGIT instead of isspace/isdigit. - (mips16_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - (my_getSmallExpression): Use ISDIGIT/TOLOWER instead of - isdigit/tolower. - (tc_get_register): Likewise. - (get_number): Use ISDIGIT/ISXDIGIT instead of isdigit/isxdigit. - (s_mips_ent): Use ISDIGIT instead of isdigit. - * config/tc-mn10200.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-mn10300.c: Include "safe-ctype.h" instead of . - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-ns32k.c: Don't include . - * config/tc-pdp11.c: Include "safe-ctype.h". - (mklower): Remove function. - (parse_reg): Use TOLOWER instead of mklower. - * config/tc-pj.c: Include "safe-ctype.h". - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-ppc.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (ppc_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (md_assemble): Use ISSPACE instead of isspace. - (ppc_canonicalize_symbol_name): Use ISLOWER/TOUPPER instead of - islower/toupper. - * config/tc-s390.c: Include "safe-ctype.h" instead of . - (register_name): Use ISALPHA instead of isalpha. - (s390_elf_suffix, s390_lit_suffix): Use ISALNUM instead of isalnum. - (md_gather_operands, md_assemble, s390_insn): Use ISSPACE instead of - isspace. - * config/tc-sh.c: Include "safe-ctype.h" instead of . - (sh_elf_suffix): Use ISALNUM/TOLOWER instead of - isalnum/islower/tolower. - (IDENT_CHAR): Use ISALNUM instead of isalnum. - (parse_reg): Use TOLOWER instead of tolower. - (find_cooked_opcode): Use TOLOWER instead of isupper/tolower. - * config/tc-sparc.c: Include "safe-ctype.h" instead of . - (sparc_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. - (parse_keyword_arg): Use ISALNUM instead of isalnum. - * config/tc-tahoe.c: Include "safe-ctype.h". - (tahoe_reg_parse): Use ISDIGIT instead of isdigit. - (tip_op): Use TOLOWER instead of isupper/tolower. - * config/tc-tic30.c: Include "safe-ctype.h". - (md_begin): Use ISLOWER/ISDIGIT/ISUPPER/TOLOWER/ISLOWER/ - ISALPHA instead of islower/isdigit/isupper/tolower/islower/isalpha. - (tic30_operand): Use TOLOWER instead of tolower. - (tic30_find_parallel_insn): Likewise. - (output_invalid): Use ISPRINT instead of isprint. - * config/tc-tic54x.c: Include "safe-ctype.h". - (tic54x_asg, tic54x_eval): Use ISALPHA instead of isalpha. - (lookup_version): Use TOUPPER instead of toupper. - (tic54x_var): Use ISALPHA instead of isalpha. - (tic54x_mlib): Use ISSPACE instead of isspace. - (subsym_iscons): Use TOUPPER instead of toupper. - (get_operands): Use ISSPACE instead of isspace. - (is_type): Use TOUPPER/ISDIGIT instead of toupper/isdigit. - (encode_indirect, encode_operand): Use TOUPPER instead of toupper. - (next_line_shows_parallel): Use ISSPACE instead of isspace. - (subsym_get_arg, subsym_substitute): Use ISDIGIT instead of isdigit. - (tic54x_start_line_hook, md_assemble, tic54x_start_label): Use - ISSPACE instead of isspace. - * config/tc-tic80.c: Include "safe-ctype.h". - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-v850.c: Include "safe-ctype.h" instead of . - (system_register_name): Use ISDIGIT instead of isdigit. - (md_assemble): Use ISSPACE instead of isspace. - * config/tc-vax.c: Include "safe-ctype.h" instead of . - (vax_reg_parse): Use TOLOWER/ISDIGIT instead of - isupper/tolower/isdigit. - (vip_op): Use TOLOWER instead of isupper/tolower. - * config/tc-w65.c: Don't include . - * config/tc-z8k.c: Include "safe-ctype.h" instead of . - (tohex): Use ISDIGIT/ISLOWER instead of isdigit/islower. - (whatreg): Use ISDIGIT instead of isdigit. - * ecoff.c: Include "safe-ctype.h" instead of . - (ecoff_directive_ent, ecoff_stab): Use ISDIGIT instead of isdigit. - * expr.c: Include "safe-ctype.h" instead of . - (integer_constant): Use ISALNUM/TOUPPER instead of - isalnum/islower/toupper. - (operand): Use TOLOWER instead of isupper/tolower. - * gasp.c: Include "safe-ctype.h" instead of . - (sb_strtol, level_0, change_base, doinstr): Use ISDIGIT instead - of isdigit. - (process_assigns, whatcond): Use TOUPPER instead of toupper. - (chartype_init): Use ISALPHA/ISDIGIT instead of isalpha/isdigit. - (main): For gettext, also set the LC_CTYPE locate facet. - * hash.c: Include "safe-ctype.h". - (main): Use TOLOWER instead of isupper/tolower. - * itbl-lex.l: Don't include . - * listing.c: Include "safe-ctype.h" instead of . - (listing_newline): Use ISCNTRL instead of isascii/iscntrl. Don't - omit non-ASCII characters. - (debugging_pseudo): Use ISSPACE instead of isspace. - * macro.c: Include "safe-ctype.h" instead of . - (buffer_and_nest): Use ISALNUM instead of isalnum. - (get_token): Use ISALPHA/ISALNUM instead of isalpha/isalnum. - (define_macro): Use ISUPPER/TOLOWER instead of isupper/tolower. - (macro_expand_body): Use ISALNUM/ISDIGIT/ISUPPER/ISALPHA - instead of isalnum/isdigit/isupper/isalpha. - (check_macro): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead - of isalpha/isalnum/isupper/tolower. - * read.c: Include "safe-ctype.h" instead of . - (read_a_source_file): Use ISUPPER/TOLOWER/ISDIGIT instead of - isupper/tolower/isdigit. - (s_mri_common): Use ISDIGIT instead of isdigit. - (s_mri_sect): Use ISDIGIT/TOUPPER instead of isdigit/toupper. - (s_float_space): Use ISALPHA instead of isalpha. - (ignore_rest_of_line): Use ISPRINT instead of isprint. - (float_cons): Use ISALPHA instead of isalpha. - (next_char_of_string): Use ISDIGIT/ISXDIGIT instead of - isdigit/isxdigit. - * symbols.c: Include "safe-ctype.h" instead of . - (save_symbol_name): Use ISLOWER/TOUPPER instead of - islower/toupper. - (symbol_find_base): Use TOUPPER instead of islower/toupper. - (decode_local_label_name): Use ISDIGIT instead of isdigit. - -2001-09-18 Martin Schwidefsky - - * tc-s390.c (s390_insn): Add code to cope with 6 byte O_constants - in 64 bit mode and make format "e" work. - -2001-09-18 Alan Modra - - * dwarf2dbg.c (dwarf2_directive_file): Avoid signed/unsigned warning. - - * write.c (set_symtab): Update bfd_alloc declaration. Use a temp - var to ensure bfd_alloc arg is the right type. - (write_object_file): Cast args of bfd_seek. Replace bfd_write with - bfd_bwrite. - - * config/obj-coff.c: Replace calls to bfd_write with calls to - bfd_bwrite. Cast args of bfd_seek. - - * config/obj-elf.c (obj_elf_change_section): Avoid signed/unsigned - warning. - - * config/tc-mn10300.c (set_arch_mach): Make param unsigned. - - * config/tc-tic54x.c (tic54x_mlib): Replace bfd_read call with - call to bfd_bread. - -2001-09-15 Hans-Peter Nilsson - - * config/tc-sh.h (sh_force_relocation): Prototype. - (struct fix): Forward declare. - * config/tc-sh.c (type sh_operand_info): Move to top of file. - (cons, s_align_bytes): Remove old-type declarations. - (sh_elf_suffix, parse_reg, dot, parse_exp, parse_at, get_operand, - get_operands, get_specific, insert, build_relax, - insert_loop_bounds, build_Mytes): Prototype. - (little): Make static. Prototype. - (check, tc_Nout_fix_to_chars): Delete unused functions. - -2001-09-14 Eric Christopher - - * config/tc-mips.c (md_parse_option): Remove setting mips_64 via - -mgp32/mgp64. - -2001-09-14 Kevin Lo - - * configure.in: Add arm-openbsd target. - * configure: Regenerate. - -2001-09-14 Thiemo Seufer - - * configure.in: Change machine triplets from mips-*-linux-gnu* to - mips*-*-linux*. - -2001-09-12 Thiemo Seufer - - * config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL. - -2001-09-11 Richard Henderson - - * config/tc-alpha.c (alpha_elf_section_letter): New. - (alpha_elf_section_flags): New. - * config/tc-alpha.h (md_elf_section_letter): New. - (md_elf_section_flags): New. - * config/tc-ia64.c (ia64_elf_section_letter): New. - * config/tc-ia64.h (md_elf_section_letter): New. - -2001-09-11 Jakub Jelinek - - * config/obj-elf.c (obj_elf_parse_section_letters): Use 'M' instead - of 'm', 'S' instead of 's'. Update bad_msg. - * config/tc-ppc.c (ppc_section_letter): Update bad_msg. - * config/tc-i370.c (i370_sectioN_letter): Update bad_msg. - -2001-09-09 Alan Modra - - * expr.c (expr): Move code setting "retval" to the end of the loop, - and rearrange for efficiency. For "PIC code" subtraction, use - "rightseg" rather than recalculating. For "symbol OP symbol" - subtract, set "retval" to absolute_section if symbols in same - section. - * symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an - O_symbol. Simplify a +/- b code. Allow equality and non-equality - comparisons on symbols from any section. Allow other comparison - operators as for subtraction. - (symbol_equated_reloc_p): New predicate function. - * symbols.h (symbol_equated_reloc_p): Declare. - * write.c (relax_segment ): Ensure segment - for expression syms is set correctly. - (adjust_reloc_syms): Use symbol_equated_reloc_p. - (write_relocs): Likewise. - (write_object_file): Likewise. - * config/tc-mips.c (md_estimate_size_before_relax): Likewise. - * config/tc-i386.c (md_assemble ): Don't lose part - of a complex expression when setting up frag_var. - -2001-09-07 Richard Henderson - - * config/tc-alpha.c (alpha_reloc_op_tag): Replace need_seq with - require_seq and allow_seq. Let !literal omit the sequence number. - (tokenize_arguments): Reject sequence numbers of !allow_seq. - -2001-09-08 Jakub Jelinek - - * config/tc-sparc.c (md_apply_fix3): Handle relocs against SEC_MERGE - section symbols the same way as externs. - -2001-09-07 Thiemo Seufer - - * config/tc-mips.c (s_mipsset): Reallow unrestricted use of .set mipsX - pseudo-op. - -2001-09-07 Thiemo Seufer - - * config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL. - (macro_build): Use BFD_RELOC_16_PCREL_S2 only for embedded - PIC, BFD_RELOC_16_PCREL for the rest. - (mips_ip): Likewise. - (md_pcrel_from): return the right offset for the differently shifted - pcrel relocs. - (md_apply_fix): Handle BFD_RELOC_16_PCREL. - -2001-09-05 Richard Henderson - - * config/tc-ia64.c (FUNC_IPLT_RELOC): New. - (pseudo_func): Add @iplt. - (pseudo_opcode): Add data16 and data16.ua. - (md_begin): Set iplt pseudo. - (ia64_cons_fix_new): Handle 16 byte iplt reloc specially. - -2001-09-04 Richard Henderson - - * config/tc-alpha.c (struct alpha_insn): Make sequence scalar long. - (MACRO_LITERAL, MACRO_BASE, MACRO_BYTOFF, MACRO_JSR): Remove. - (alpha_macros): Remove occurrences of same. - (O_lituse_addr, O_gprel): New. - (DUMMY_RELOC_LITUSE_*): New. - (s_alpha_ucons, s_alpha_arch): Prototype. - (alpha_reloc_op): Construct elements via DEF macro. - (ALPHA_RELOC_SEQUENCE_OK): Remove. - (struct alpha_reloc_tag): Rename from alpha_literal_tag; rename - members to not be literal specific. - (next_sequence_num): New. - (md_apply_fix3): Cope with missing GPDISP_LO16. Adjust for - added/removed BFD relocations. - (alpha_force_relocation, alpha_fix_adjustable): Likewise. - (alpha_adjust_symtab_relocs): Handle GPDISP relocs as well. - (tokenize_arguments): Parse ! relocations properly. - (find_macro_match): Delete unused macro argument types. - (assemble_insn): Add reloc parameter; emit that instead of the - default as appropriate. - (get_alpha_reloc_tag): New. Split from ... - (emit_insn): ... here. Allocate a reloc tag for GPDISP. - (assemble_tokens): Don't search macros if user relocation present. - Copy reloc sequence number to insn struct. - (emit_ldgp): Remove user reloc handling. - (load_expression, emit_lda, emit_ldah, emit_ir_load): Likewise. - (emit_loadstore, emit_ldXu, emit_ldil, emit_stX): Likewise. - (emit_sextX, emit_division, emit_jsrjmp, emit_retjcr): Likewise. - * config/tc-alpha.h (tc_adjust_symtab): Always define. - (struct alpha_fix_tag): Name members less literal specific. - -Tue Sep 4 20:01:19 2001 Jeffrey A Law (law@cygnus.com) - - * tc-h8300.c (tc_gen_reloc): Give an error if we try to take the - address of two symbols in different sections. - -2001-08-31 Eric Christopher - Jason Eckhardt - - * config/tc-mips.c (mips_cpu_info): Add support for mipsisa32, - 5kc, and 20kc. Clean up old entries. - -Fri Aug 31 12:05:13 2001 J"orn Rennecke - Jeff Law - - * config/tc-h8300.c (build_bytes): For OBJ_ELF, make relocation's - offset match H8 ELF spec. - (md_section_align): Alternate implementation for BFD_ASSEMBLER. - (md_apply_fix): Fix argument and return types for BFD_ASSEMBLER. - - * tc-h8300.c (relocation mappings): Remove. Moved to tc-h8300.h. - (build_bytes): Mark fixups for PCrel branches as signed. For - OBJ_ELF, make sure the reloc's offset points to the first byte - to be modified. - (md_convert_frag): Update definiton based on BFD_ASSEMBLER. - * tc-h8300.h (relocation mappings): Add. - -Thu Aug 30 12:05:13 2001 J"orn Rennecke - - * tc-h8300.c (tc_crawl_symbol_chain, tc_headers_hook): Don't - define for BFD_ASSEMBLER. - (tc_reloc_mangle): Likewise. - (tc_gen_reloc): New function for BFD_ASSEMBLER. - -Wed Aug 29 12:49:58 2001 Jeffrey A Law (law@cygnus.com) - - * config/tc-h8300.c (h8300hmode): Record the machine type - if BFD_ASSEMBLER is defined. - (h8300smode, md_begin): Similarly. - -2001-08-29 Joel Sherrill - - * configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change - default from coff to elf. - * configure: Regenerate. - -Wed Aug 29 12:05:13 2001 J"orn Rennecke - - * tc-h8300.c: If OBJ_ELF, include elf/h8.h, and define - assorted coff relocations to the corresponding elf relocations. - * tc-h8300.h (TARGET_ARCH, TARGET_FORMAT): Define appropriately. - - * configure.in: Add case for h8300-*-elf. - * configure: Regenerate. - -Wed Aug 29 12:05:13 2001 J"orn Rennecke - - * doc/internals.texi (MD_PCREL_FROM_SECTION): Change - documentation to reflect reality. - -2001-08-27 Thiemo Seufer - - * config/tc-mips.c (load_address): Reflect change to MAX_GPREL_OFFSET. - (macro): Reflect change to MAX_GPREL_OFFSET. - -2001-08-27 Torbjorn Granlund - Staffan Ulfberg - Linus Nordberg - Alan Modra - - * configure.in: Recognise powerpc*le*, not just powerpcle*. - * configure: Regenerate. - * config/tc-ppc.c (PPC_LO, PPC_HI, PPC_HA, PPC_HIGHER, - PPC_HIGHERA, PPC_HIGHEST, PPC_HIGHESTA, SEX16): New macros. - (md_assemble): Use them. - (ppc_machine): Support stub for ELF64 as well as XCOFF. - (md_pseudo_table): Add "llong", "quad". - (md_parse_option): Match default_cpu of powerpc*. - (ppc_arch): Likewise. - (ppc_subseg_align): Only for OBJ_XCOFF. - (ppc_target_format): Return elf64-powerpc strings for 64 bit ELF. - (md_begin): Select PPC_OPCODE_64 for 64 bit. - (ppc_insert_operand): Don't bother testing 'file' before calling - as_bad_where. Use as_bad_where for operand->insert errors. - (mapping): Add ELF64 relocation modifiers. - (ppc_elf_suffix): Replace symbol on BFD_RELOC_PPC64_TOC reloc - expressions with abs_symbol. - (ppc_elf_cons): Correct offset for little endian targets. - (ppc_elf_frob_symbol): New. - (md_assemble): Add support for 64 bit ELF relocs. - (ppc_tc): Ensure 8 byte alignment when 64 bit. - (ppc_is_toc_sym): Only define for OBJ_XCOFF and OBJ_ELF. Match - ".toc" section for 64 bit ELF. - (ppc_fix_adjustable): New. Macro body moved from tc-ppc.h. - (md_apply_fix3): Silence warning with ATTRIBUTE_UNUSED. Only do - the ppc_is_toc_sym check for OBJ_XCOFF and OBJ_ELF. For 64 bit, - use BFD_RELOC_PPC64_TOC16_DS instead of BFD_RELOC_PPC_TOC16. - Expand on comments, error message. Add support for 64 bit relocs, - and use PPC_HI etc. macros. - * config/tc-ppc.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. - (HANDLE_ALIGN): Define to generate nops in code sections rather - than zeros. - (TC_FORCE_RELOCATION): Force for BFD_RELOC_PPC64_TOC. - (ELF_TC_SPECIAL_SECTIONS): Add 64 bit ELF sections. - (tc_fix_adjustable): Move body of macro to tc-ppc.c. - (ppc_fix_adjustable): Declare. - (tc_frob_symbol): Define. - (ppc_elf_frob_symbol): Declare. - -2001-08-26 Andreas Jaeger - - * config/tc-s390.c: Add missing prototypes - (md_gather_operands): Make static. - -2001-08-26 Thiemo Seufer - - * config/tc-mips.h (MAX_GPREL_OFFSET): Change it to the maximum - allowed value, not the word beyond maximum. - * config/tc-mips.c (macro_build_lui): Code cleanup. - (macro): Reflect change to MAX_GPREL_OFFSET. - (mips_ip): Check explicitly against S_EX_NONE. - (my_get_SmallExpression): parse for %gp_rel, not %gprel. - (md_apply_fix): Code cleanup. - -2001-08-24 Andreas Jaeger - - * config/tc-ppc.h: Fix prototype declaration. - -2001-08-23 Jakub Jelinek - - * config/tc-ia64.c (dot_endp): Set function symbol sizes. - * config/obj-elf.c (obj_elf_size): When size is constant, free - and clear symbol_get_obj(sym)->size if any. - -2001-08-21 Thiemo Seufer - - * config/tc-mips.c (md_begin): Warn about incompatibility between - -march=FOO and -mipsN option, continue with default ISA. - -2001-08-21 Thiemo Seufer - - * config/tc-mips.c (md_parse_option): #ifdef the - traditional/non-traditional names as it is done in mips_target_format. - -2001-08-20 Richard Henderson - - * config/tc-alpha.h (MD_APPLY_FIX3): Define. - * config/tc-alpha.c (md_apply_fix3): Rename from md_apply_fix; - use seg parameter instead of now_seg. - -2001-08-18 H.J. Lu - - * config/tc-mips.c (show): Add the missing prototype. - -2001-08-18 Thiemo Seufer - - * config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression() - return values. - (mips_ip): Use the new return values instead of characters. Add - support for %higher and %highest. - (LP): Remove. - (RP): Remove. - (my_getSmallExpression): Make parsing case insensitive and more - reliable. Add support for %higher and %highest. Further support to - parse %gprel and %neg is implemented but currently deactivated. - -2001-08-17 Alan Modra - - * ecoff.c (ecoff_frob_symbol): Remove casts from bfd_get_gp_size. - (ecoff_build_symbols): Likewise. - * read.c (s_lcomm_internal): Fix signed/unsigned warning. - -2001-08-16 Thiemo Seufer - - * config/tc-mips.c (mips_elf_final_processing): Set elf header flags - for n32 ABI if appropriate. - -2001-08-16 Thiemo Seufer - - * config/tc-mips.c (cons_fix_new_mips): Remove. - * config/tc-mips.h (TC_CONS_FIX_NEW): Remove. - (cons_fix_new_mips): Remove. - -2001-08-14 Jeff Johnston - - * expr.c (operand)[LITERAL_PREFIXDOLLAR_HEX]: Treat $L as - a label, not a hex constant. - -2001-08-13 Nick Clifton - - * config/tc-v850.h: Add missing prototypes. - -2001-08-12 Martin Schwidefsky - - * config/tc-s390.c (s390_elf_cons): Correct fixups for PLT - relocations. - -2001-08-12 TAKAI Kousuke - - * config/tc-sparc.c (cons_fix_new_sparc): Move - `sparc_no_align_cons = 0;' to... - (s_uacons): ...here so that sparc_no_align_cons will get - cleared properly. - -2001-08-11 Kazu Hirata - - * config/tc-mips.c: Fix a comment typo. - -2001-08-10 Richard Sandiford - - * config/tc-mips.c (move_register): New function. - (macro_build): Remove OPCODE_IS_MEMBER's gp32 argument. - (mips_ip): Likewise. - (macro2): Use move_register rather than macro_build for moves. - (mips16_macro): Likewise. - (macro): Likewise. Handle M_MOVE. - -2001-08-10 Andreas Jaeger - - * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes - to build warnings. - * configure: Regenerate. - -2001-08-10 Alan Modra - - * as.h (alloca): Don't declare if __GNUC__. Remove an old comment. - Comment indentation of #pragma. - * macro.c (alloca): Likewise. - - * config/tc-ppc.c: Revert 2001-08-08. - -2001-08-09 Alan Modra - - * symbols.c: Add missing prototypes. - * config/e-i386elf.c: Likewise. - * config/e-i386coff.c: Likewise. - * config/e-i386aout.c: Likewise. - * config/obj-coff.c: Likewise. - (def_symbol_in_progress, stack): Move definition. - * config/obj-elf.c: Add missing prototypes. - (obj_elf_change_section): Make static. - (obj_elf_parse_section_letters): Likewise. - (obj_elf_section_word): Likewise. - (obj_elf_section_type): Likewise. - -2001-08-08 Alan Modra - - From 1999-10-25 Torbjorn Granlund - * config/tc-ppc.c (md_apply_fix3): Replace haphazard code for - determining reloc type with code reading operands->reloc field. - -2001-08-08 Alan Modra - - * config/obj-elf.c (elf_copy_symbol_attributes): Make it a global - function, and expand old obj-elf.h OBJ_COPY_SYMBOL_ATTRIBUTES here. - * config/obj-elf.h (elf_copy_symbol_attributes): Declare. - (OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes. - - * output-file.c (output_file_create): Don't try to open a second - time as it's unnecessary. FOPEN_W was undefined too. - -2001-08-07 Thiemo Seufer - - * config/tc-mips.c (macro_build): Replace magic constants by defines. - (mips_ip): Likewise. Typo. - -2001-08-04 Thiemo Seufer - - * config/tc-mips.c (mips_abi_string): Initialize with NULL instead - of 0. - (RELAX_ENCODE): Replace bfd_vma by valueT. - (load_address): Formatting. - (macro): Likewise. Code cleanup. Typo. - (macro2): Formatting. - (md_parse_option): Typo. - (s_mipsset): Reorder cases to look nicer. - (md_estimate_size_before_relax): Formatting. Code cleanup. - (mips_elf_final_processing): Check against NULL instead of 0. - (md_obj_end): Remove ugly `' in message string. - (s_mips_ent): Remove ugly `' in message string. - -2001-07-30 Thiemo Seufer - - * config/tc-mips.c (md_begin): Take -mcpu value into account even when - -mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs - mutually exclusive (if they are different). - (md_parse_option): Warn if an -march/-mtune/-mcpu/-m option is - set more than once. - -2001-08-03 Richard Sandiford - - * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value - from GPREL addends. - -2001-08-02 Richard Sandiford - - * doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32. - * config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables. - (md_long_opts): Add -mfp32 option. - (md_parse_option): Handle it. Set mips_32bit_abi given -mabi=32. - (md_show_usage): Show usage for -mfp32 and -mgp32. - (HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros. - (HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above. - (HAVE_32BIT_ADDRESSES): New macro. - (load_register): Use HAVE_32BIT_GPRS to determine the register width. - (load_address): Use HAVE_32BIT_ADDRESSES to determine the address size. - (s_cprestore, s_cpadd): Likewise. - (macro): Use HAVE_32BIT_GPRS to determine the width of registers - used in branch and M_LI_D macros. Use HAVE_64BIT_FPRS to determine - the width registers used in M_LI_DD macros. Use HAVE_32BIT_ADDRESSES - to determine the width of addresses in load, store and jump macros. - (macro2): Use HAVE_32BIT_GPRS to determine the width of registers - used in set instructions; do not check the address size for them. - Use HAVE_32BIT_ADDRESSES to determine the width of addresses in - unaligned load and store macros. - (mips_ip): Use the new macros to check the width of a register when - processing float constants. Force a constant into memory if it is - destined for an FPR and the FPRs are wider than the GPRs. Warn about - odd FPR numbers if HAVE_32BIT_FPRS. Use HAVE_32BIT_GPRS rather - than mips_gp32 to select synthetic instructions. - (macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select - synthetic instructions. - -2001-08-01 Christian Groessler - - * config/tc-z8k.c (parse_reg): If a string starts with "r", "rl", - "rh", "rr", "rq", or "sp" then don't automatically assume - it's a register name. Check whether there is a number - following. - -2001-08-01 Alan Modra - - * config/tc-i386.c (lex_got): Match lower case relocation tokens. - Don't allocate more space than necessary for the input line copy. - -2001-08-01 Alan Modra - - * read.c: Standardize error/warning messages - don't capitalise, no - final period or newline, don't say "ignored" or "zero assumed" for - as_bad messages. In some cases, change the wording to that used - elsewhere for similar messages. - * app.c: Likewise. - * as.c: Likewise. - * atof-generic.c: Likewise. - * cgen.c: Likewise. - * cond.c: Likewise. - * depend.c: Likewise. - * dwarf2dbg.c: Likewise. - * ecoff.c: Likewise. - * expr.c: Likewise. - * frags.c: Likewise. - * input-file.c: Likewise. - * input-scrub.c: Likewise. - * listing.c: Likewise. - * output-file.c: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - * symbols.c: Likewise. - * write.c: Likewise. - * ecoff.c (ecoff_directive_end): Test for missing name by - comparing input line pointers rather than reading string. - (ecoff_directive_ent): Likewise. - * read.c (s_set): Likewise. - (s_align): Report a warning rather than an error for - alignment too large. - (s_comm): Check for missing symbol name. - (s_lcomm_internal): Likewise. - (s_lsym): Likewise. - (s_globl): Use is_end_of_line instead of looking for '\n'. - (s_lcomm_internal): Likewise. - (ignore_rest_of_line): Report a warning rather than an error. - -2001-07-31 Geoffrey Keating - - * config/tc-ppc.c (ppc_elf_validate_fix): It's OK to have - any kind of relocation against a not-loaded section. - -2001-07-30 Alan Modra - - * config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type - to include '@' in symbol names when parsing versioned symbols - rather than calling get_symbol_end multiple times. - * config/tc-i370.c (register_name): Format fixes. Don't call - get_symbol_end after parsing number. - * config/tc-mn10200.c (data_register_name): Format fixes. Hoist - code out of conditional. - (address_register_name): Likewise. - (other_register_name): Likewise. - * config/tc-mn10300.c (r_register_name): Likewise. - (xr_register_name): Likewise. - (data_register_name): Likewise. - (address_register_name): Likewise. - (other_register_name): Likewise. - * config/tc-ppc.c (register_name): Likewise. - * config/tc-s390.c (register_name): Likewise. - -2001-07-27 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr - and bra relax: update fragP->fr_fix after the fixup. - -2001-07-27 Tracy Kuhrt - - * read.c (s_set): Check for missing symbol name. - -2001-07-26 Alan Modra - - * write.c (relax_segment ): Account for fr_fix. - -2001-07-25 H.J. Lu - - * config/tc-mips.c (md_estimate_size_before_relax): Make sure - we treat weak like extern only for ELF. - (mips_fix_adjustable): Make sure we don't adjust extern/weak - symbols only for ELF. - -2001-07-25 Chris Demetriou - - * config/tc-mips.c: Fix spelling error in comment. - -2001-07-25 Dave Brolley - - * app.c (LEX_IS_PARALLEL_SEPARATOR): New macro. - (IS_PARALLEL_SEPARATOR): New macro. - (do_scrub_begin): Set up characters in tc_parallel_separator_chars - as LEX_IS_PARALLEL_SEPARATOR, if it is defined. - (do_scrub_chars): Handle LEX_PARALLEL_SEPARATOR chars like - LEX_LINE_SEPARATOR except that we go to state 1 (as if the label has - been seen). - -2001-07-24 Alan Modra - - * Makefile.am (DEP_FLAGS): Define, add -DOBJ_MAYBE_ELF. - (DEP1, DEPTC, DEPOBJ, DEP2): Use it. - Update dependencies with "make dep-am". - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2001-07-23 Kazu Hirata - - * config/tc-alpha.h: Fix formatting. - * config/tc-arc.c: Likewise. - * config/tc-d10v.h: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ia64.h: Likewise. - * config/tc-m32r.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-pdp11.c: Likewise. - * config/tc-pj.h: Likewise. - * config/tc-s390.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-w65.h: Likewise. - -2001-07-23 Alan Modra - - * symbols.c (S_GET_VALUE): Don't treat O_constant and local - symbols specially. Always resolve, adding fr_address to value. - * write.c (write_object_file): Don't add fr_address to sym values. - (relax_frag): Likewise. - (relax_segment): Likewise. - * config/obj-ieee.c (do_symbols): Likewise. - * config/tc-cris.c (md_convert_frag): Likewise. - * config/tc-fr30.c (md_convert_frag): Likewise. - * config/tc-i386.c (md_convert_frag): Likewise. - * config/tc-m32r.c (md_convert_frag): Likewise. - * config/tc-m68hc11.c (md_convert_frag): Likewise. - * config/tc-mcore.c (md_convert_frag): Likewise. - * config/tc-mips.c (mips16_extended_frag): Likewise. - * config/tc-ns32k.c (md_convert_frag): Likewise. - * config/tc-m68k.c (md_convert_frag_1): Likewise. - (BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR, - DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement. - (md_relax_table): Remove first four entries. Format. - (md_estimate_size_before_relax): Remove old_fix. Don't bother - setting fr_var. Simplify byte branch checks. - -2001-07-23 Alan Modra - - * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Remove - "isbranch" param as all calls have it set. - (pa_parse_neg_cmpsub_cmpltr): Likewise. - (pa_parse_nonneg_add_cmpltr): Likewise. Remember result of - strcasecmp in "nullify" var. - (pa_parse_neg_add_cmpltr): Likewise. - (pa_ip): Don't "save_s" unnecessarily. Update calls to above - functions. Don't print wrong conditions in error messages. - -2001-07-23 Andreas Jaeger - - * config/tc-s390.c (s390_force_relocation): Removed. - - * config/tc-s390.h: Remove double declaration of - TC_FORCE_RELOCATION. - -2001-07-22 H.J. Lu - - * config/tc-mips.c (s_mips_end): Remove unused variables. - (s_mips_frame): Add ATTRIBUTE_UNUSED. - -2001-07-17 Andreas Schwab - - * config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and - .loc. - (md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting - insn. - * config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2001-07-17 matthew green - - * config/tc-i386.c (comment_chars): Don't use '/' as comment start if - TE_NetBSD. - (line_comment_chars): Set to '/' if TE_NetBSD. - -2001-07-14 matthew green - - * configure.in (i386-*-netbsdelf*): New target. - * configure: Regenerate. - -2001-07-10 Mark Elbrecht - - * config/obj-coff.c (coff_frob_symbol): Don't merge if the storage - class of the non-debug symbol is C_NULL. - -2001-07-10 Anders Norlander - - * doc/as.texinfo (Incbin): Fix grammatical errors. - -2001-07-10 Nick Clifton - - * depend.c: Use FOPEN_.. macros in calls to fopen(). - * input-file.c: As above. - * itbl-ops.c: As above. - * listing.c: As above. - * output-file.c: As above. - * read.c: As above. - -2001-07-08 Anders Norlander - - * read.c (s_incbin): New .incbin function. - * read.c (potable): Add "incbin" pseudo-op. - * read.h: Add s_incbin prototype. - * doc/as.texinfo (incbin): Document .incbin pseudo-op. - * NEWS: Mention new feature. - -2001-07-07 Nick Clifton - - * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is - DEBUG_UNSPECIFIED. - -2001-07-06 John Healy - - * cgen.c (gas_cgen_save_fixups): Modified to allow more than one - set of fixups to be stored. - (gas_cgen_restore_fixups): Modified to allow the fixup chain to be - restored to be chosen from any that are saved. - (gas_cgen_swap_fixups): Modified to allow the current set of - fixups to be swapped with any other set that has been saved. - (gas_cgen_initialize_saved_fixups_array): New routine. - * cgen.h: Modifed prototypes for gas_cgen_save_fixups, - gas_cgen_restore_fixups, and gas_cgen_swap_fixups. Added definitions - or MAX_SAVED_FIXUP_CHAINS. - * config/tc-m32r.c (assemble_two_insns): Changed calls to fixup - store, swap and restore fuctions to reflect the new interface. - -2001-07-06 Nick Clifton - - * config/tc-m68k.c (md_estimate_size_before_relax): Catch and - ignore empty, ineffectual alignment frags when deciding if a - branch can be short. - -2001-07-05 Steve Ellcey - - * config/tc-ia64.c (special_section): Add SPECIAL_SECTION_INIT_ARRAY - and SPECIAL_SECTION_FINI_ARRAY. - (special_section_name): Add .init_array and .fini_array. - (md_pseudo_table): Add init_array and fini_array. - (md): Add pointer_size and pointer_size_shift fields. - (setup_unwind_header): New static function. - (output_unw_records): Modify to use setup_unwind_header. - (generate_unwind_image, dot_endp): Modify to use md.pointer_size and - md.pointer_size_shift. - (md_begin): Initialize md.pointer_size and md.pointer_size_shift. - -2001-07-05 Ben Elliston - - * README (Supported platforms): m88k no longer suffers bitrot. - - * config/tc-m88k.c (md_pseudo_table): Remove redundant "global". - -2001-07-05 Alan Modra - - * struc-symbol.h (struct local_symbol): Rename lsy_offset to - lsy_value. Correct typos in comments. - * symbols.c (local_symbol_make): Update for name change. - (local_symbol_convert): Likewise. - (colon): Likewise. - (S_GET_VALUE): Likewise. - (S_SET_VALUE): Likewise. - (print_symbol_value_1): Likewise. - (resolve_symbol_value): Likewise. Don't divide local sym values - by OCTETS_PER_BYTE twice. - -2001-07-04 Jim Wilson - - * config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte. - - * config/tc-ia64.c (is_conditional_branch): Rewrite to exclude mod - sched branches. - -2001-07-05 Ben Elliston - - * read.c (s_fill): Correct spelling error in comments. - - * doc/c-m88k.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-m88k.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Set M880X0. - * doc/as.texinfo: Hook in m88k-dependent documentation. - -2001-07-04 Eric Christopher - - * doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu. - - * config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261, - and rm5721 as valid cpu strings. - (md_show_usage): Add rm5200, rm5231, rm5261, rm5721. - -2001-07-04 Richard Sandiford - - * config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero - if it's expected to be non-zero. - -2001-07-03 Nick Clifton - - * config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with - fscan->fx_frag. - - * write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1. - (write_object_file): Set finalize_syms to - TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is - called. - - * doc/internals.texi; Document - TC_FINALIZE_SYMS_BEFORE_SIZE_SEG. - -2001-07-02 Alan Modra - - * config/tc-ppc.c: Formatting fixes. - -2001-07-01 Ben Elliston - - * config/tc-m88k.c: Back out warning fixes from 2001-06-24, as - they cause some subtle breakage. Will fix them again later. - -2001-06-28 Nick Clifton - - * config/obj-coff.c (obj_coff_ln): Treat a .ln directive - outside of a function as a .appline directive. - -2001-06-28 Eric Christopher - H.J. Lu - - * config/tc-mips.c (mips_arch): New. Use mips_arch instead - of mips_cpu for the ISA selection. - (md_longopts): Add OPTION_MARCH and OPTION_MTUNE. - (md_parse_option): Handle OPTION_MARCH and OPTION_MTUNE. - (mips_tune): New. Use mips_tune for scheduling and optimization - issues. - (append_insn): Use mips_tune and mips_arch. - (macro_build): Ditto. - (mips_ip): Ditto. - (md_begin): Handle mips_arch, mips_tune and mips_cpu. For - backwards compatability mips_cpu generates arch and tune. - (md_show_usage): Document new behavior. - - * doc/c-mips.texi (MIPS Opts): Document -march and -mtune. - Deprecate -mcpu. - - * NEWS: Update. - -2001-06-27 Nick Clifton - - * write.c (write_object_file): Do not set finalize_syms until - after the segments have been sized. Some backends may still - need to access the syms's frags in order to adjust relaxed - frags. - - * config/tc-arm.c (do_ldst): Use MVN to build simple inverted - constants. - -2001-06-27 Alan Modra - - * write.c (fixup_segment ): Don't - subtract MD_PCREL_FROM_SECTION for 68k. - (fixup_segment ): Only fudge - by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel. - -2001-06-27 Tracy A. Kuhrt - - * write.c (fixup_segment ): If - pcrel, subtract MD_PCREL_FROM_SECTION value. - -2001-06-24 Ben Elliston - - * stabs.c (generate_asm_file): Make local variable `len' a size_t. - -2001-06-24 Jakub Jelinek - - * config/tc-alpha.c (tc_gen_reloc): Handle relocs against SEC_MERGE - section symbols the same way as externs. - -2001-06-24 Ben Elliston - - * config/tc-m88k.c (md_number_to_imm): Remove; unused since 1993. - (emit_relocations): Ditto. - (s_bss): Ditto. - (md_begin): Reformat comments to conform to the GNU standards. - (md_assemble): Ditto. - - * config/tc-m88k.c (get_reg): Adjust type of `reg_prefix' to char. - (md_parse_option): Mark parameters as unused. - (md_show_usage): Ditto. - (calcop): Adjust type of `reg_prefix' to char. - (get_reg): Ditto. - (getval): Adjust type of local `c' to char. - (md_create_short_jump): Mark from_addr, to_addr params as unused. - (md_create_long_jump): Ditto. - (md_estimate_size_before_relax): Mark parameters as unused. - - * config/tc-m88k.c (md_pseudo_table): Properly terminate the table - to allay a possible compiler warning. - -2001-06-22 Nick Clifton - - * doc/internals.texi (CPU backend): Document md_atof. - -2001-06-22 Matthew Wilcox - - * config/tc-hppa.c (pre_defined_registers): Add %mrp (millicode - return pointer) alias for %r2 or %r31, depending on 32 or 64 bit - architecture. - -2001-06-21 Philip Blundell - - * config/tc-arm.c (cplong_flag): Rename to long_flag. All uses - updated. - (insns): Remove entry for adrl. Add long_flag for adr. - (do_adr): Handle `l' suffix. - (do_adrl): Delete. - -2001-06-21 Alan Modra - - * config/tc-hppa.c (CHECK_FIELD_WHERE): Define. - (md_apply_fix): Use it here. Replace printf with equivalent - as_bad_where. - (tc_gen_reloc): Use as_bad_where instead of as_bad. - (md_apply_fix): Here too. - * config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad. - * config/tc-m68k.c (tc_gen_reloc): Likewise. - (md_convert_frag_1): Likewise. - -2000-06-20 Tom Rix - - * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. - -2001-06-18 H.J. Lu - - * doc/Makefile.am (info): Depend on $(MANS). - (as.1): Remove the prefix `$(srcdir)/'. - * doc/Makefile.in: Regenerated. - - * as.1: Removed. - -2001-06-18 Philip Blundell - - * config/tc-arm.c (do_msr): Remove restriction on usage of - immediate operands. - -2001-06-19 Alan Modra - - * dwarf2dbg.c (dwarf2_finish): Output file info even when no - line info. - -2001-06-13 Philip Blundell - - * config/tc-arm.c (thumb_shift): Improve wording of error message. - (do_t_arit): Likewise. - -2001-06-13 Nick Clifton - - * config/tc-sh.c (md_pseudo_table): Only intercept the .file and - .loc pseudos if the dfwarf2 functions are available. - (md_assemble): Only call dwarf2_emit_insn if it is available. - - * expr.c: Fix typo in comment. - -2001-06-12 Nick Clifton - - * doc/as.texinfo (Infix Ops): Document that comparison and - combiner operators can be used as infix operators. - -2001-06-12 Peter Jakubek - - * config/tc-m68k.c (parse_mri_control_operand): Fix handling - of AND/OR. - (swap_mri_condition): Add HS (alias fo CC) and LO (alias for CS). - (reverse_mri_condition): Likewise. - (swap_mri_condition): Issue warning for conditions that can not be - swapped. - (build_mri_control_operand): Fix order of operands (swapped). - (build_mri_control_operand): Allow upper case extension in structured - control directives. - (s_mri_else): Likewise. - (s_mri_next): Likewise. - (s_mri_for): Likewise. - (s_mri_if): Fix handling comment ('*') in mri mode. - (s_mri_while): Likewise. - * macro.c (macro_expand): Allow macro invocation with empty - extension. - -2001-06-12 Nick Clifton - - * config/tc-arm.c: Fix test for overlow of literal pool. - -2001-06-11 H.J. Lu - - * NEWS: Updated for the new -n option for the MIPS assembler. - - * config/tc-mips.c (md_show_usage): Add -n. - - * doc/as.texinfo: Document the new -n option. - * doc/c-mips.texi: Likewise. - * doc/as.1: Regenerated. - -2001-06-10 Alan Modra - - * config/obj-coff.c (obj_coff_section): Formatting fix. - - * config/tc-i386.c (md_assemble): Accept branch hints as ",pt" and - ",pn". - -2001-06-08 H.J. Lu - - * config/tc-mips.c (warn_nops): New variable. Set to 0 to - disable warning about all NOPS that the assembler generates. - (macro): Warn NOPS generated only if warn_nops is not 0. - (md_shortopts): Add `n'. - (md_parse_option): Set warn_nops to 1 for `n'. - -2001-06-08 H.J. Lu - - * config/tc-mips.c (mips_ip): Properly handle illegal operands. - -2001-06-08 H.J. Lu - - * config/tc-mips.c (md_apply_fix): Don't adjust common - extern/weak symbols for ELF. - (md_estimate_size_before_relax): Treat weak like extern for - ELF. - (mips_fix_adjustable): Don't adjust extern/weak symbols for - ELF. - -2001-06-08 Alan Modra - - * Makefile.am: 'som' is not wrongly spelled 'some'. - * Makefile.in: Regenerate. - - * config/tc-mips.c (mips16_mark_labels): Reduce number of calls to - S_GET_VALUE by using a temp. - (append_insn): Likewise, and for S_SET_VALUE too. - (mips_emit_delays): Likewise. - (my_getExpression): Likewise. - (md_apply_fix): Likewise. Use "valueT" rather than "long" for "value". - (mips16_extended_frag): Remove code concerned with avoiding - locking in a frag address now that symbols are not finalized until - relaxation is complete. Cater for first relaxation pass having - bogus addresses. Use relax_marker to reliably determine whether a - symbol frag has been reached on the current pass. - -2001-06-07 H.J. Lu - - * configure.in: Move "mips-*-linux-gnu*" before "mips-*-gnu*". - * configure: Regenerate. - -2001-06-07 H.J. Lu - - * configure.in: Use MIPS_STABS_ELF for Linux/mips and remove - ecoff emulation. - * configure: Regenerate. - -2001-06-07 H.J. Lu - - * config/tc-mips.c (mips_pseudo_table): Add "extern" if - MIPS_STABS_ELF is defined. - -2001-06-06 Nick Clifton - - * as.c (show_usage): Remove L from listing options. It is not a - generic option. - -2001-06-06 Christian Groessler - - * config/tc-z8k.c: Removed many warnings by removing unused - variables and tagging unused parameters as such. - (md_begin): Fixed a typo (","instead of ";"). - (struct ctrl_table): Add parentheses to initialize array - correctly. - (struct flag_table): Likewise. - (struct intr_table): Likewise. - (struct table): Likewise. - (check_operand): "#if 0"'ed since it doesn't seem to be used. - -2001-06-06 Peter Jakubek - - * config/tc-m68k.c (md_show_usage): Add all supported ColdFire - options to list (e.g. m5206e, m5307, m5407). - -2001-06-06 Martin Schwidefsky - - * config/tc-s390.h (TC_FORCE_RELOCATION): Always emit relocations - BFD_RELOC_VTABLE_INHERIT and BFD_RELOC_VTABLE_ENTRY. - -2001-06-06 Alan Modra - - * config/tc-i386.c (md_assemble): Handle Pentium4 branch hints. - : Remove dead code. - -2001-06-06 Tracy Kuhrt - - * as.c (parse_args): Correct option name "listing-lhs-width2". - -2001-06-05 Nick Clifton - - * symbols.c (S_SET_EXTERNAL): Do not override a section symbol's - status. - -2001-05-30 Richard Henderson - - * read.c (emit_leb128_expr): Call md_cons_align. - -2001-05-28 Jeff Sturm - - * config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16, - BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64. - (tc_gen_reloc): Likewise. - (sparc_cons_align): Don't clear sparc_no_align_cons. - (cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for - BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set. - -2001-05-27 Alan Modra - - * write.c (relax_segment ): Check the section of a - symbol to determine whether it is absolute rather than comparing - its frag against zero_address_frag as listings play tricks with - frags. - - * config/tc-m68k.c (md_assemble): Ensure variable part of frag is - allocated in the same chunk as the fixed part. - -2001-05-26 Alan Modra - - * write.c (relax_segment ): Calculate growth using - addresses before stretch. Prevent repeated error messages. - From Peter Jakubek - Use as_bad_where and as_warn_where to pinpoint errors. - -2001-05-25 Alan Modra - - * symbols.c (resolve_symbol_value): Always set segment, even when - not finalizing symbol value. - - * config/obj-ieee.c (write_object_file): Set finalize_syms. - * config/obj-coff.c (write_object_file): Likewise. - * (size_section): Remove rs_space assert as fr_symbol is no longer - removed. - (fill_section): Likewise. - - * configure.in: Replace linuxoldld with linux*oldld. - * configure: Regenerate. - - From 2.11 branch 2001-03-30 Richard Henderson - * config/tc-i386.c (md_convert_frag): Don't die on local symbols - that have been finalized. - - * symbols.c (resolve_symbol_value): Clear sy_resolving before - taking exit_dont_set_value. - - * write.c (relax_segment ): Don't zap fr_symbol when - relaxing. - -2000-05-24 Tom Rix - - * config/obj-coff.c (add_lineno): xcoff allows negative line - numbers - * config/tc-ppc.c (ppc_stabx): fix generated symbol - -2001-05-24 Alan Modra - - * write.c (write_object_file): Set finalize_syms = 1 before - size_seg is called. - -2001-05-23 Thiemo Seufer - - * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit - architecture, remove erraneous ISA_MIPS32. - (md_show_usage): Add MIPS r12k support. - (mips_cpu_info_table): Add MIPS r12k support. - -2001-05-22 Alan Modra - - * config/tc-arc.c (md_assemble): Use is_end_of_line instead of - testing for NULs. - - * symbols.c (resolve_symbol_value): Remove "finalize" param, - instead use finalize_syms directly. Don't treat expressions - specially with regard to finalize_syms. Update calls to self. - (resolve_local_symbol): Update call to resolve_symbol_value. - (S_GET_VALUE): Likewise. Return resolve_symbol_value if - !finalize_syms. - * symbols.h (resolve_symbol_value): Update prototype. - * config/obj-aout.c (obj_crawl_symbol_chain): Update call - to resolve_symbol_value. - * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-coff.c (do_relocs_for): Likewise. - (yank_symbols): Likewise. - (fixup_segment): Likewise. - * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. - * config/tc-mips.c (md_convert_frag): Likewise. - * config/tc-ppc.c (ppc_frob_symbol): Likewise. - (ppc_fix_adjustable): Likewise. - * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. - (dwarf2dbg_convert_frag): Likewise. - * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. - (eh_frame_convert_frag): Likewise. - * expr.c (make_expr_symbol): Likewise. - * write.c (adjust_reloc_syms): Likewise. - (write_object_file): Likewise. - (relax_segment): Likewise. - (fixup_segment): Likewise. - (finalize_syms): Init to zero, and update comment. - (write_object_file): Set finalize_syms to 1 rather than 2. - * doc/internals.texi (sy_value): Mention finalize_syms. - (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called. - - * config/tc-m68k.c (relaxable_symbol): Only treat external symbols - as relaxable if embedded system, make weak syms non-relaxable. - Move definition.. - (tc_m68k_fix_adjustable): ..so it can be used here. - (md_apply_fix_2): Sign extend without conditional. - - * config/tc-v850.c: Update copyright. - -2001-05-16 Jeff Johnston - - * cgen.c (gas_cgen_tc_gen_reloc): Changed error message when - howto entry is not found. - -2001-05-15 Alexandre Oliva - - * config/tc-mn10300.c (mn10300_force_relocation): Don't - optimize differences between symbols in code sections to - constants. - (mn10300_fix_adjustable): Don't adjust to section+offset - relocations pointing at symbols in code sections. - -2001-05-16 Alan Modra - - * config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param - for 8 byte insns. - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before - opcodes are output rather than after. Delete insn_size. - * config/tc-v850.c (md_assemble): Similarly, but delete - total_insn_size. - -2001-05-14 Richard Henderson - - * ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment - last change. - -2001-05-14 Richard Henderson - - * ehopt.c (get_cie_info): Rename from eh_frame_code_alignment; - also collect whether to expect an FDE augmentation. - (check_eh_frame): Rewrite as a state machine. Track where in - an FDE we are located, skip any augmentation. - (eh_frame_estimate_size_before_relax): Get code alignment from - the fragment subtype. - (eh_frame_relax_frag, eh_frame_convert_frag): Likewise. - * read.c (emit_leb128_expr): Call check_eh_frame. - -2001-05-14 Alexandre Oliva - - * config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info - before a relaxable insns. - -2001-05-13 Alexandre Oliva - - * config/tc-mn10300.c (tc_gen_reloc): Don't reject differences - between symbols if the base symbol is in the current section; - emit a PC-relative relocation instead. - -2001-05-12 Peter Targett - - * config/tc-arc.c: Update copyright and tidy source comments. - (md_pseudo_table): Add directive .cpu back as an alias for - .option. Add .file and .line for dwarf2 support. - (arc_mach_type): Make bfd_mach_arc_6 default. - (md_longopts): Add entry 'pre-v6' representing old command line - option when assembling for 'arc5' core versions. - (md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new - default behaviour. - (arc_code_symbol): Make symbol value for @h30 fixup expression - equal to O_constant. - (md_assemble): Call dwarf2_emit_insn. - Include "dwarf2dbg2.h". Formatting fixes throughout file. - * config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default. - -2001-05-11 Jakub Jelinek - - * config/tc-ia64.c (special_linkonce_name): New. - (make_unw_section): Map .gnu.linkonce.t.FOO text section into - .gnu.linkonce.ia64unw{,i}.FOO. - (ia64_elf_section_type): Handle .gnu.linkonce.ia64unw{,i}.FOO. - (dot_endp): Add comment about it. - -2001-05-11 Nick Clifton - - * config/tc-arm.c (arm_handle_align): When truncating an aligned - block, ensure that the low order bits of the alignment are - preserved. - -2001-05-10 Alan Modra - - * config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of - symbol_next. - - * config/tc-fr30.c (md_estimate_size_before_relax): Return size of - current variable part of frag. - * config/tc-m32r.c (md_estimate_size_before_relax): Likewise. - * config/tc-openrisc.c (md_estimate_size_before_relax): Likewise. - * config/tc-m68hc11.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_estimate_size_before_relax): Handle non-relaxable cases - separately from relaxable cases for clarity, and return correct - size for multi-pass relaxation. - * config/tc-tahoe.c (RELAX_LENGTH): Correct. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-vax.c (RELAX_STATE): Define. - (RELAX_LENGTH): Define. - (md_relax_table): Add missing entry. - (md_estimate_size_before_relax): As for tc-m68hc11.c. - (md_convert_frag): Remove "length_code". - * config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and - don't bother setting fr_var. Return correct size for multi-pass - relaxation. - * config/tc-v850.c (md_estimate_size_before_relax): Rewrite. - (md_convert_frag): Don't bother clearing fr_var. - (md_pseudo_table): Correct initialization. - * config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - * config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var. - (md_estimate_size_before_relax): No need to set fr_var. - -2001-05-09 Richard Henderson - - * config/tc-ia64.c (generate_unwind_image): Align the fragment - beginning a function's unwind info block. - -2001-05-09 Alexandre Oliva - - * config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs. - -2001-05-08 Andreas Schwab - - * config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to - fx_pcrel_adjust explicitly sign extend when reading it. - -2001-05-08 Alan Modra - - * config/tc-m68k.c (md_estimate_size_before_relax): Set fr_var - from md_relax_table, and combine some switch cases. - -2001-05-06 Alexandre Oliva - - * config/tc-mn10300.c (md_assemble): Subtract operand->shift - from offset in non-pcrel operands too. - -2001-05-06 Nick Clifton - - * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. - * config/tc-arm.c (arm_handle_align): Do not insert more than - MAX_MEM_FOR_RS_ALIGN_CODE bytes. - (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE. - -2001-05-03 Thiemo Seufer - - * Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h. - Run "make dep-am". - * Makefile.in: Regenerate. - * configure.in: Remove duplicate mips-*-ecoff* entry. - * configure: Regenerate. - - * config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry. - (n_names): Cast away type mismatch. - (ecoff_sec_sym_ok_for_reloc): Add unused attribute. - (obj_ecoff_frob_symbol): Likewise. - * ecoff.c: (add_file): Add unused attribute. - (ecoff_directive_begin): Likewise. - (ecoff_directive_bend): Likewise. - (ecoff_directive_def): Likewise. - (ecoff_directive_dim): Likewise. - (ecoff_directive_scl): Likewise. - (ecoff_directive_size): Likewise. - (ecoff_directive_type): Likewise. - (ecoff_directive_tag): Likewise. - (ecoff_directive_val): Likewise. - (ecoff_directive_endef): Likewise. - (ecoff_directive_end): Likewise. - (ecoff_directive_ent): Likewise. - (ecoff_directive_extern): Likewise. - (ecoff_directive_file): Likewise. - (ecoff_directive_fmask): Likewise. - (ecoff_directive_frame): Likewise. - (ecoff_directive_mask): Likewise. - (ecoff_directive_loc): Likewise. - (mark_stabs): Likewise. - (ecoff_stab): Likewise. - (ecoff_frob_symbol): Cast away type mismatch. - (ecoff_padding_adjust): Likewise. - (ecoff_build_symbols): Likewise. - (ecoff_build_procs): Likewise. - (ecoff_build_aux): Likewise. - (ecoff_build_strings): Likewise. - (ecoff_build_fdr): Likewise. - (ecoff_build_debug): Likewise. - * itbl-ops.c (itbl_assemble): Variable initialization. - -2001-05-03 Alan Modra - - * config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF - expressions rather than triggering an assert. - -2001-05-02 Johan Rydberg - - * config/tc-openrisc.c: New file. - * config/tc-openrisc.h: Likewise. - - * Makefile.am: Add OpenRISC target. - * Makefile.in: Regenerated. - - * configure.in (openrisc-*-*): Add target. - * configure: Regenerated. - -2001-05-02 Nick Clifton - - * config/tc-arm.c (arm_frag_align_code): Change error message to - more explanatory version. - -2001-04-29 Keith M Wesolowski - - * config/tc-mips.c (md_parse_option): Also accept - elf64-tradbigmips and elf64-tradlittlemips for OPTION_64. - -2001-04-27 David Mosberger - - * config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p() - argument passing order: predicate goes last, not first. - -2001-04-27 Sean McNeil - - * configure.in: Add arm-vxworks. - * configure: Regenerate. - -2001-04-26 Nick Clifton - - * config/tc-arm.c (arm_handle_align): New Function: Generate - no-op filled alignment frags. - (arm_frag_align_code): New Function: Create a code alignment frag. - (arm_init_frag): New Function: Initialse the target dependent - parts of a frag. - - * config/tc-arm.h (TC_FRAG_TYPE): Define. - (TC_FRAG_INIT): Define. - (HANDLE_ALIGN): Define. - (md_do_align): Define. - -2001-04-25 Nick Clifton - - * config/obj-coff.c (do_linenos_for): Check to see if the filename - symbol has been initialised before extracting its symbol index. - -2001-04-24 H.J. Lu - - * configure: Regenerated with the right version of autoconf. - -2001-04-24 Christian Groessler - - * config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now - generate R_CALLR and R_REL16 relocations - -2000-04-20 Jason Eckhardt - - * config/tc-d10v.h (tc_frob_label): Update the symbol's frag - since frag_now can change after d10v_cleanup is called. - -2001-04-16 David O'Brien - - * configure.in: Add the em type for FreeBSD targets. - * configure: Regenerate. - -2001-04-14 Alexandre Oliva - - * struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE. - * symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT. - - * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of - pc-relative relocations not placed at the end of the instruction. - -2001-04-13 Jim Wilson - - * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. - excluding br.i. - -2001-04-13 Jakub Jelinek - - * config/obj-elf.c (obj_elf_change_section): Add entsize argument, - handle SHF_MERGE and SHF_STRINGS. - (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. - (obj_elf_section): Allow additional argument specifying entity size. - * write.c (adjust_reloc_syms): Keep relocations against local symbols - in SEC_MERGE sections. - -2001-04-12 Jason Merrill - - * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. - -2001-04-12 Alexandre Oliva - - * expr.c (operand): Pass &c to md_parse_name(). - * config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust. - -2001-04-07 Steven J. Hill - - * config/tc-mips.c: Support ELF64 for traditional MIPS targets. - - * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. - * Makefile.in: Regenerated. - - * configure.in: Use traditional MIPS targets for Linux/MIPS. - * configure: Regenerated. - -2001-04-06 Alexandre Oliva - - * config/tc-mn10300.c (xr_registers): Added `pc'. - -2001-04-05 Alan Modra - - * configure.in: Add h8500-*-coff and h8500-*-rtems targets. - * configure: Regenerate. - - * config/tc-h8500.c (md_estimate_size_before_relax): Add missing - cases, and always return size based on current fr_subtype. - (md_begin): Move initialization of md_relax_table.. - (md_relax_table): ..to static initializer. Set rlx_length for - UNDEF_WORD_DISP cases. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - (md_begin): Likewise. - (md_relax_table): Likewise. - * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - Set rlx_backward and rlx_forward to zero for unused states. - * config/tc-sh.c (md_estimate_size_before_relax): Likewise. - (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. - (UNCOND12, UNCOND32): Remove duplicate defines. - -2001-04-04 Hans-Peter Nilsson - - * config/tc-cris.c (md_estimate_size_before_relax) : Don't emit - 32-bit branch, just set fragP->fr_subtype. Set fragP->fr_var. - : Always set fragP->fr_var using md_cris_relax_table. - Add cases to cover all relax states. - (cris_insn_first_word_frag): New. - (md_assemble): Call cris_insn_first_word_frag to get the first - frag in an insn, not frag_more. Don't call dwarf2_emit_insn at - end. Drop variable insn_size. - (gen_bdap): Call cris_insn_first_word_frag, not frag_more. - (cris_sym_leading_underscore): Wrap first as_bad parameter in _(). - (cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto. - - * write.c (write_object_file): Reset broken word state before - calling relax_seg. - -2001-03-31 Alan Modra - - * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT - for one line if not already enabled. - * cond.c (s_elseif): Correct conditional assembly listing. - (s_else): Likewise. - - * cond.c (s_endif): Correct handling of "if .. elseif .." trees. - Don't abort on NULL current_cframe. - -2001-03-30 Alan Modra - - * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. - (dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value. - * config/obj-aout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. - * config/obj-coff.c (do_relocs_for): Likewise. - (yank_symbols): Likewise. - (fixup_segment): Likewise. - * config/tc-ppc.c (ppc_frob_symbol): Likewise. - (ppc_fix_adjustable): Likewise. - * config/tc-mips.c (md_convert_frag): Likewise. - * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. - * ehopt.c (eh_frame_convert_frag): Likewise. - * expr.c (make_expr_symbol): Likewise. - - * frags.h (struct frag): Add last_fr_address. Reorder fields for - better packing. - * symbols.c (resolve_symbol_value): Don't fix expression values - until relaxation is complete. - (resolve_local_symbol): Pass `finalize_syms' to resolve_symbol_value. - (S_GET_VALUE): Likewise, and return unresolved expression value. - * write.c (finalize_syms): New. - (relax_and_size_seg): Split into.. - (relax_seg): New function, returns 1 if anything changed.. - (size_seg): And the remainder of relax_and_size_seg. - (fixup_segment): Arrange for final resolution of sym values. - (adjust_reloc_syms): Likewise. - (write_object_file): Likewise, and repeatedly call relax_seg until - nothing more changes. - (relax_segment): Return 1 if anything changed. Use correct types - for rs_org `target' and `after'. - * write.h (finalize_syms): Declare. - (relax_segment): Update prototype. - - * config/tc-sh.c (md_estimate_size_before_relax): Add extra - do-nothing cases to switch to avoid abort on a second relaxation - pass, and tidy code a little. - * config/tc-cris.c (md_estimate_size_before_relax): Likewise. - * config/tc-h8500.c (md_estimate_size_before_relax): Likewise. - * config/tc-w65.c (md_estimate_size_before_relax): Likewise. - * config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement. - (md_relax_table): Remove first four unused entries. Increment - rlx_length by one throughout table, and update comments to suit. - (md_estimate_size_before_relax): Return size of current variable - part of frag to reflect reality when relaxing more than once. - * config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout. - (COND32, UNCD32): Rename to DISP32 throughout. - (UNDEF_WORD_DISP): Renumber to 3. - (md_estimate_size_before_relax): Add extra do-nothing cases. - * config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite. - * config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite. - * config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to - handle word and dword branches. - -2001-03-29 Hans-Peter Nilsson - - * config/tc-cris.h (tc_fix_adjustable): Allow only - BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. - * config/tc-cris.c (cris_get_pic_suffix): Correct reloc type in - example in comment to valid type. - -2001-03-28 H.J. Lu - - * read.c (equals): Set to local for COFF only if it hasn't been - defined before. - -2001-03-28 Alan Modra - - * config/tc-hppa.c (DEFAULT_LEVEL): Define. - (md_begin): Use it when setting default architecture. - -2001-03-27 Nick Papadonis - - * read.c (equals): (for COFF) default symbols to being local. - -2001-03-27 Hans-Peter Nilsson - - * configure.in (cris-*-*): Change default emulation to criself. - (cris-*-*aout*): New rule. - * configure: Regenerate. - -2001-03-26 Martin Schwidefsky - - * config/tc-s390.c (tc_s390_fix_adjustable): Add test for - BFD_RELOC_390_GOTENT. - * config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Add test for - BFD_RELOC_390_GOTENT. - -2001-03-26 Nick Clifton - - * config/tc-s390.h (TC_FORCE_RELOCATION): Define. - * config/tc-s390.c (s390_force_relocation): New function: Force - relocations for VTINHERIT relocs. - -2001-03-23 Stephane Carrez - - * doc/as.texinfo: Put @c man begin to generate the as man page. - When generating man, define all the variables. Re-organize some - options to obtain better indentation of man page. - * doc/Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. - (as.1): Build from as.texinfo. - * doc/Makefile.in: Regenerate.Index: binutils/Makefile.am - -2001-03-25 Alan Modra - - * config/tc-i386.c (i386_scale): Accept an absolute expression for - scale factor, and return the end of the expression. - (i386_operand): Modify for above. - -2001-03-23 Nick Clifton - - * doc/as.texinfo: Document --listing-XXX command line switches. - Explain why listings behave differently when -pipe is used. - -2001-03-23 Richard Sandiford - - * write.c (fix_new_exp): Print an error if passed a register. - -2001-03-23 Hans-Peter Nilsson - - * config/tc-cris.c: Tweak attribution. Fix typos. PIC support. - (PIC_SUFFIX_CHAR): New macro. - (cris_get_pic_suffix, cris_get_pic_reloc_size): New functions. - (pic): New variable. - (md_longopts): New option --pic. - (OPTION_PIC): Define. - (md_estimate_size_before_relax): Tweak longish comment. - (md_create_long_jump): Make the long jumps generate ADD.D offset,PC. - (md_assemble): Handle a PIC relocation on prefix and normal - instruction operands. - : Handle - "complex" operand expressions. Call frag_more outside - gen_cond_branch_32 parameter list. - (cris_process_instruction): Handle PIC relocs on parsed - operand expressions. Validize PIC reloc sizes. - (get_autoinc_prefix_or_indir_op): Handle PIC suffix. - (gen_bdap): Handle "complex" operand expressions. - (gen_cond_branch_32): Use as_warn_where, not as_warn. Use - ADD.D offset,PC as jump instruction if generating PIC. Generate - error instead of crashing on complex expressions. - (cris_number_to_imm): Add segT parameter. All callers changed. - Use segT parameter, not now_seg, for segment of fixup. Handle - PCREL relocations but check that they are fully resolved. - (md_parse_option): Handle OPTION_PIC. - (tc_gen_reloc): Handle PIC relocs. - (md_show_usage): Update for --pic. - (md_apply_fix3): Renamed from md_apply_fix. - (md_pcrel_from): Accept emitting PCREL relocs when ELF. - (md_cris_force_relocation): Force relocation for PIC relocs. - - * config/tc-cris.h: Tweak attribution. - (MD_APPLY_FIX3): Define. - (IS_CRIS_PIC_RELOC): New macro. - (TC_RELOC_RTSYM_LOC_FIXUP): Define. - (tc_fix_adjustable): Don't adjust a globally visible symbol when - generating ELF. - (tc_frob_symbol): Avoid emitting undefined symbols. - -2001-03-20 Alan Modra - - * frags.h (struct frag): Add relax_marker. - * write.c (is_dnrange): Delete. - (relax_frag): Use correct types for `aim', `target', `address'. - Delete `offset', `was_address'. Test `relax_marker' instead of - using fragile (and slow) address test. - (relax_segment): Init and flip `relax_marker'. - -2001-03-19 Alan Modra - - * config/tc-i386.c (md_assemble ): Correct - used register name. - -2001-03-18 Stephane Carrez - - * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply - with 'Motorola specification for assembly language input standard'. - -2001-03-17 Richard Henderson - - * dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove. - (dwarf2_directive_loc): Don't use them. - (dwarf2_directive_file): Reject duplicate file definitions. - (get_filenum): Zero allocated memory. - (out_file_list): Complain about missing file definitions. - -2001-03-17 Alan Modra - - * read.c (do_org): Handle complex expressions. - * cgen.c (gas_cgen_finish_insn): Likewise. - -2001-03-15 David Mosberger - - * config/tc-ia64.c (md): New member keep_pending_output. - (ia64_flush_pending_output): Flush only if md.keep_pending_output - is not set. - (dot_xdata): Turn on md.keep_pending_output for the duration of - this function. - (dot_xfloat_cons): Ditto. - (dot_xstringer): Ditto. - (dot_xdata_ua): Ditto. - (dot_xfloat_cons_ua): Ditto. - -2001-03-15 Jim Wilson - - * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local - label support. - -2001-03-15 Alexandre Oliva - - * config/tc-sh.c (parse_reg): Match capital MACH and MACL. - -2001-03-15 DJ Delorie - - * stabs.c (s_stab_generic): Don't corrupt the notes obstack by - blindly freeing string if it isn't at the top of the obstack. - -2001-03-13 Alan Modra - - * config/tc-i386.c (RELOC_ENUM): Define. Use throughout file. - (NUM_FLAG_CODE): Define. - (lex_got): New function. - (got_reloc): New global var. - (x86_cons_fix_new): New function. - (x86_cons): New function. - (i386_immediate): Use lex_got here, replacing inline code. Change - "ignoring junk.." error message to "junk.." - (i386_displacement): Likewise. - * config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define. - (x86_cons): Declare. - (TC_CONS_FIX_NEW): Define. - (x86_cons_fix_new): Declare. - -2001-03-12 Nick Clifton - - * config/tc-arm.c (md_begin): Always set machine type based on - cpu_variant. - -2001-03-07 Alan Modra - - * config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc. - (md_assemble) : Use correct field of i.op[] - union. - : Use correct i.disp_reloc[]. - : Likewise. - -2001-03-06 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in - BLX(1) instruction. - -2001-03-06 Igor Shevlyakov - - * config/tc-m68k.c : Add 5407 to archs[] table. - (HAVE_LONG_BRANCH): Add mcf5407. - (select_control_regs): Recognize 5407. - -2001-03-02 Dave Brolley - - * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather - than m32r_do_align. - -2001-03-02 Richard Sandiford - - * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro. - (gen_to_words): Print warnings if NaNs are found and the target CPU - does not support them. Allow largest exponent to be used in normal - numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true. - -2001-02-28 Andreas Jaeger , Bo Thorsen - - * config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed - anymore since we use bfd_elf_generic_reloc now. - (md_apply_fix3): Only apply hack for partial_inplace if not using RELA. - -2001-02-27 Alan Modra - - * configure.in (BFD_VERSION): New. - (AM_INIT_AUTOMAKE): Use $BFD_VERSION. - * configure: Regenerate. - * Makefile.am: Run "make dep-am" - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - -2001-02-26 Mark Elbrecht - - * config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set - SEC_NEVER_LOAD when the 'n' flag is used. - Add SEC_NEVER_LOAD to matchflags. - -2001-02-24 Stephane Carrez - - * symbols.c (decode_local_label_name): Initialize message_format - only when an error is reported (perf pb due to I18N). - -2001-02-23 H.J. Lu - - * dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if - BFD_ASSEMBLER is not defined. - -2001-02-23 Richard Sandiford - - * config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as - done if it's against a symbol. - -2001-02-22 Timothy Wall - - * config/tc-ia64.c (ia64_target_format): Return ia64-aix-specific - target formats if applicable. - * config/te-ia64aix.h: New. Configuration for AIX5 on IA-64. - * Makefile.am (TARG_ENV_HFILES): Added config/te-ia64aix.h. - * Makefile.in: Regenerated. - * configure.in: Added configuration for ia64-*-aix*. - * configure: Regenerated. - -2001-02-21 David Mosberger - - * config/tc-ia64.c (enum operand_match_result): New type. - (operand_match): Change return type to operand_match_result. - Fix all returns appropriately, adding support for returning the - out-of-range result. - (parse_operands): New locals result, error_pos, out_of_range_pos, - curr_out_of_range_pos. Rewrite operand matching loop to give better - error messages. - -2001-02-21 David Mosberger - - * config/tc-ia64.c (struct unwind): Add member "prologue_count". - (dot_proc): Clear unwind.prologue_count to zero. - (dot_prologue): Increment unwind.prologue_count. - (dot_restore): If second operand is omitted, use - unwind.prologue_count -1 for "ecount" (# of additional regions to - pop). Decrement unwind.prologue_count by number of regions - popped. - -2001-02-21 Nick Clifton - - * doc/as.texinfo (Section): Note that some flags to the COFF - version of .section remove attributes rather than setting them. - -2001-02-20 Kazu Hirata - - * config/tc-pdp11.c: Fix formatting. - * config/tc-pdp11.h: Likewise. - -2001-02-20 Bo Thorsen - - * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT - entry. - -2001-02-18 David O'Brien - - * configure.in (cpu_type, arch): Add a generic FreeBSD specification as - all FreeBSD platforms should look the same at this level. - * configure: Rebuilt. - * config/tc-i386.c: Add support for old FreeBSD a.out hosts. - -2001-02-18 lars brinkhoff - - * Makefile.am: Add PDP-11 target. - * configure.in: Likewise. - * config/tc-pdp11.c: New file. - * config/tc-pdp11.h: New file. - * doc/Makefile.am: Add PDP-11 documentation. - * doc/all.texi: Likewise. - * doc/as.texinfo: Likewise. - * doc/c-pdp11.texi: New file. - -2001-02-16 matthew green - - * cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64. - -2001-02-13 Jim Wilson - - * config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED - reloc instead of a 0 reloc. - (md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it - as done. - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise. - -2001-02-13 Ian Lance Taylor - - * write.c (is_dnrange): Stop as soon as the address becomes - larger. - (relax_frag): Add segment parameter. Only call symbol_get_frag - once. Only call is_dnrange if the symbol is in the same segment, - and the symbol address is larger. - (relax_segment): Pass segment to md_relax_frag and relax_frag. - * write.h (relax_frag): Update declaration. - * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass - it to relax_frag. - * config/tc-m32r.c (m32r_relax_frag): Likewise. - * config/tc-m32r.h (md_relax_frag): Add segment parameter. - (m32r_relax_frag): Update declaration. - * config/tc-mips.h (md_relax_frag): Add segment parameter. - * config/tc-tic54x.h (md_relax_frag): Likewise. - * doc/internals.texi (CPU backend): Update documentation for - md_relax_frag. - -2001-02-13 Alan Modra - - * doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb. - Mention effect of < 386 architectures on jump promotion. - (i386-Jumps): xref above. Don't assume long disp is 32 bits. - - * config/tc-i386.c (no_cond_jump_promotion): New. - (set_cpu_arch): Parse "jumps" arch modifier. - (insn_size): Modify usage comment. - (ENCODE_RELAX_STATE): Reformat and protect macro arg. - (SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE. - (TYPE_FROM_RELAX_STATE): New define. - (UNCOND_JUMP, COND_JUMP): Renumber. - (md_relax_table): Reorder to suit. - (COND_JUMP86): New define. - (md_relax_table): Handle COND_JUMP86 cases. Add a few comments. - (md_assemble): Create frag var for jumps of max size, encode relax - state for COND_JUMP86. - (md_estimate_size_before_relax): Handle COND_JUMP86 cases, and - leave conditional jumps small if no_cond_jump_promotion. - (md_convert_frag): Likewise. - - * expr.c (operator): Don't bump input_line_pointer for two char - operators. Instead return operator size via new param num_chars. - (expr): Use above to parse multi-char operators correctly. - -Mon Feb 12 17:45:50 CET 2001 Jan Hubicka - - * config/tc-i386.c (i386_displacement): Fix handling of - BFD_RELOC_X86_64_GOTPCREL. - (i386_validate_fix): Likewise. - -2001-02-12 Philip Blundell - - * config/tc-arm.c (do_ldst): Improve warnings for unpredictable - ldrt/strt instructions. - -2001-02-11 Maciej W. Rozycki - - * config/tc-mips.c (macro): For M_LA_AB emit a - BFD_RELOC_MIPS_CALL16 relocation or a - BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of - BFD_RELOC_MIPS_GOT16 and - BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for - loading the jump register when generating SVR4_PIC code. - -2001-02-10 Chris Demetriou - - * configure.in: Make 'mipself' and 'mipsecoff' emulations - map to MIPS-specific files, as they used to do before the - change on 2000-05-21. - * configure: Regerate. - -2001-02-10 Chris Demetriou - - * config/tc-mips.c (md_parse_option): Don't try to compile - ELF-only option code if not ELF. - -2001-02-08 David Mosberger - - * config/tc-ia64.h (md_elf_section_type): New macro. - (ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info - (they're now handled via ia64_elf_section_type. - - * config/tc-ia64.c (unwind): New members saved_text_seg, - saved_text_subseg, and force_unwind_entry. - (optimize_unw_records): New function to optimize away unnecessary - unwind directives. - (ia64_elf_section_type): New function. - (output_unw_records): Generate unwind info only if the size is - non-zero or if it's forced for some other reason (e.g., - handlerdata or a personality routine). - (generate_unwind_image): Don't switch back to previous - section---stay inside the unwind info section instead so that - handlerdata that may follow goes into the right place. - (dot_handlerdata): Force generation of unwind entry and save the - current active text segment before generating unwind image. - (dot_unwentry): Force generation of unwind entry. - (dot_personality): Ditto. - (dot_endp): Generate unwind table entry only if there is - some unwind info or the unwind entry was forced. - - * config/tc-ia64.c (make_unw_section_name): New macro to form - unwind section name. - (generate_unwind_image): Add "text_name" argument. Use it to - form unwind section name. - (dot_handlerdata): Determine current segment (section) name and - pass it to generate_unwind_image(). - (dot_endp): Determine current segment (section) name and use - it to determine the appropriate unwind section name. - (ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to - n, fill, and max arguments. - -2001-02-09 Schwidefsky - - * Makefile.am: Add linux target for S/390. - * configure.in: Likewise. - * config/tc-s390.c: New file. - * config/tc-s390.h: New file. - -2001-02-09 Alexandre Oliva - - * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for - 2byte, 4byte and 8byte. - -2001-02-08 Alan Modra - - * config/tc-hppa.c (pa_build_unwind_subspace): Don't call - md_number_to_chars with size > sizeof (valueT). - -2001-02-06 H.J. Lu - - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if - there is no relocation. - -2001-02-06 H.J. Lu - - * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined. - - * config/tc-ia64.c (md_parse_option): Only accept the valid - ia64 options on "-axxx". - -2001-02-05 Jim Wilson - - * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of - aborting for invalid operands. - -2001-02-06 Alan Modra - - * config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather - than via pointer. Update all callers. - (UNWIND_LOW32): Define. - (UNWIND_HIGH32): Define. - (pa_build_unwind_subspace): Use the above macros instead of dumping - bitfields directly. Call frag_more once rather than multiple times. - (md_assemble): Use UNWIND_LOW32. - (pa_entry): Likewise - (pa_procend): Likewise. - (process_exit): Use UNWIND_HIGH32. - -2001-02-04 Stephane Carrez - - * config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header - function to select the header according to the cpu. - (md_after_pass_hook, md_do_align): Remove. - (md_cleanup, m68hc11_cleanup): Remove. - (md_pcrel_from_section): Declare. - * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. - (build_jump_insn, build_insn): Likewise. - (m68hc11_listing_header): New function. - (m68hc11_cleanup): Remove. - -2001-02-02 Stephane Carrez - - * config/tc-m68hc11.c (relaxable_symbol): Relax externally visible - symbols because there is no support for shared libraries and these - symbols can't be overridden (unless they are weak). - -2001-02-01 Momchil Velikov - - * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations - for the compilation unit with a zero byte. - -2001-01-30 Alan Modra - - * config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute - destinations. Correct range check for 17 and 22 bit branches. - -2001-01-25 Nick Clifton - - * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is - still set. Issue an error message instead. - (md_estimate_size_before_relax): Delete unused variable - 'buffer_address'. Fixup parentheses around if statement. - -2001-01-23 Kazu Hirata - - * as.c: Fix formatting. - * ehopt.c: Likewise. - * messages.c: Likewise. - * stabs.c: Likewise. - * symbols.c: Likewise. - -2001-01-23 Ben Elliston - - * config/tc-m32r.c (m32r_handle_align): Declare type of fragp. - -2001-01-22 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-19 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - -2001-01-18 Nick Clifton - - * config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and - "da" flags. - (stm_flags): Remove redundant bit from "ed" and "da" flags. - -2001-01-18 Alexandre Oliva - - * configure.in (cpu_type, arch): Match i386 too. - * configure: Rebuilt. - -2001-01-16 Kazu Hirata - - * config/tc-i386.c: Fix formatting. - -2001-01-16 Alan Modra - - * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32 - relocs for .PARISC.unwind section. - - * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind - depending on section flags, not just for .text. - -2001-01-15 Jim Wilson - - * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives - not immediately followed by an instruction. - -2001-01-15 Kazu Hirata - - * config/tc-m68hc11.c: Fix formatting. - -2001-01-15 Nick Clifton - - * symbols.c (colon): Change 'already defined symbol' from a - fatal error to an ordinary error. There is no reason why this - error should be fatal. - - * message.c (as_fatal): Delete output file, if one has been - created. - -2001-01-14 Alan Modra - - * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants. - -2001-01-14 Kazu Hirata - - * config/tc-alpha.c: Fix formatting. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-d10v.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - - * config/tc-arc.c: Fix formatting. - - * config/tc-arc.c: Fix formatting. - -2001-01-14 Alan Modra - - * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for - both 32 and 64 bit ELF. - - * config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand - and don't bother storing `m' for "ce" completer. Tidy handling of - 'J' and 'K' operands to suit. Handle '<' and '>' operands. - -Sun Jan 14 00:36:42 MET 2001 Jan Hubicka - - * config/tc-i386.h (TARGET_MACH): New macro. - (i386_mach): Declare. - * config/tc-i386.c (i386_mach): New function. - -2001-01-13 Philip Blundell - - * doc/as.texinfo: Fix spelling and cross-references. - - * doc/c-arm.texi: Fix typos. Say that `;' is a line separator - character for all systems, not just GNU/Linux. Make it explicit - that `-k' doesn't affect code generation, just ELF flags. - -Sat Jan 13 01:47:35 MET 2001 Jan Hubicka - - * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary - instructions. - -2001-01-12 Frank Ch. Eigler - - * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. - -2001-01-12 Nick Clifton - - * as.c (print_args): Update copyright date to 2001. - -2001-01-12 Peter Targett - - * doc/c-arc.texi: New file. - Some sections to be expanded. - -2001-01-12 Alan Modra - - * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. - (md_parse_option): Always accept "--32". - -2001-01-11 Peter Targett - - * as.h (TC_ARC): Ensure struc-symbol.h included. - * as.c (dwarf2dbg.h): Include to remove implicit declaration - warnings. - * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define. - (TARGET_SYMBOL_FIELDS) added. - - * doc/Makefile.am (CPU_DOCS): Added c-arc.texi. - * doc/c-arc.texi: New file. - Some sections to be expanded. - * doc/as.texinfo: Update command-line options. - Removed outdated text for ARC dependant features, instead include - text from above file. - - * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag. - (TARGET_SYMBOL_FIELDS): Alias to previous definition. - (targ-cpu.h) header. - * config/tc-arc.h: - * config/tc-arc.c: New updated configuration for - ARC, including selection of core variants, and extensibility of - instructions, registers etc. through directives. - - * config/tc-arc.c (arc_extinst): Minor corrections for - error messages. - (arc_common) Likewise. Make alignment argument optional for local - symbols also, with default of zero. - -2001-01-11 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix - STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset). - (build_indexed_byte): Don't relax indexed byte, use 16-bit offset - and fix_new_exp() instead. - (md_convert_frag): For indexed post byte use the symbol value - rather than the displacement. - (md_relax_table): Fix indexed offset relax. - -2001-01-11 Stephane Carrez - - * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't - relax weak symbols. - (relaxable_symbol): New function. - -2001-01-11 Andreas Jaeger - - * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's - not used anywhere. - -2001-01-10 Nick Clifton - - * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. - * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF - -2001-01-10 Nick Clifton - - * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic - character used to dollar local symbols. - (LOCAL_LABEL_CHAR): New constant - the magic character used to - local label symbols. - (dollar_label_name): Use DOLLAR_LABEL_CHAR. - (fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX, - if defined. - Use LOCAL_LABEL_CHAR. - (decode_local_label_name): Skip LOCAL_LABEL_PREFIX. - Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. - -2001-01-08 Bo Thorsen - - * config/tc-i386.c (i386_immediate, i386_displacement): - GOTPCREL check fix. - -2001-01-07 Ian Lance Taylor - - * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted - in last change. - -2001-01-07 Philip Blundell - - * doc/as.texinfo (Bug Reporting): Update email address for - reports. - * README: Likewise. - -Sat Jan 6 13:33:10 MET 2001 Jan Hubicka - - * configure.in: Define DEFAULT_ARCH for i386. - * config/tc-i386.c (md_assemble): Return after the error message; - move testing for 64bit operands to proper place. - -2001-01-06 Jan Hubicka , Andreas Jaeger - - * doc/as.texinfo: Document '#' as comment character for i386 and - x86_64. Add AMD x86-64 into menu of machine dependent information. - - * doc/c-i386.texi: Document x86_64 extensions. - -Fri Jan 5 13:26:42 MET 2001 Jan Hubicka - - * config/tc-i386.c (md_assemble): Handle third byte of the opcode as prefix. - -Thu Jan 4 22:25:26 MET 2001 Jan Hubicka - - * config/tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry. - * NEWS: Add note about Pentium4 support. - -Wed Jan 3 17:26:32 MET 2001 Jan Hubicka - - * config/tc-i387.c (pi, pte, pt): Update. - (type_names): Add new types. - -Wed Jan 3 16:26:52 MET 2001 Jan Hubicka - - * config/tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow, - CpuUnknown): Renumber - (CpuP4, CpuSSE2): New. - (CpuUnknownFlags): Add CpuP4 and CpuSSE2 - -2001-01-03 Philip Blundell - - * config/tc-alpha.c (alpha_force_relocation): Handle vtable - relocs. - (alpha_fix_adjustable): Likewise. - (md_apply_fix): Likewise. - -2000-12-31 H.J. Lu - - * listing.c (listing_message): Allocate string only if it is - used. - - * configure: Rebuild. - -2000-12-31 Hans-Peter Nilsson - - * doc/internals.texi (Relaxing with a table) : - Point out caveats with generating fixups for the opcode in a frag. - -Sat Dec 30 19:02:48 MET 2000 Jan Hubicka - - * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* - * NEWS: Add x86_64. - -2000-12-29 H.J. Lu - - * listing.c (calc_hex): Print the variable part only if the - fragment type is rs_fill. - -2000-12-29 Hans-Peter Nilsson - - * doc/internals.texi (tc_conditional_pseudoop, - TC_LINKRELAX_FIXUP): Fix typos. - -2000-12-28 Richard Henderson - - * write.c (subsegs_finish): Fix thinko last change -- don't - "optimize" the alignment == 0 case. - -2000-12-28 Richard Henderson - - * as.h (rs_align_test): New. - * frags.c (NOP_OPCODE): Move default from read.c. - (MAX_MEM_FOR_RS_ALIGN_CODE): New default. - (frag_align_code): New. - * frags.h (frag_align_code): Declare. - * read.c (NOP_OPCODE): Remove. - (do_align): Use frag_align_code. - * write.c (NOP_OPCODE): Remove. - (get_recorded_alignment): New. - (cvt_frag_to_fill): Handle rs_align_test. - (relax_segment): Likewise. - (subsegs_finish): Align last subseg in section to the - section alignment. Use frag_align_code. - * write.h (get_recorded_alignment): Declare. - * config/obj-coff.c (size_section): Handle rs_align_test. - (fill_section, fixup_mdeps): Likewise. - (write_object_file): Use frag_align_code. - - * config/tc-alpha.c (alpha_align): Use frag_align_code. - (alpha_handle_align): New. - * config/tc-alpha.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-i386.h (md_do_align): Use frag_align_code. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. - (ia64_handle_align): New. - * config/tc-ia64.h (HANDLE_ALIGN): New. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-m32r.c (m32r_do_align): Remove. - (m32r_handle_align): New. - (fill_insn): Use frag_align_code. - * config/tc-m32r.h (md_do_align): Remove. - (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. - * config/tc-m88k.c, config/tc-m88k.h: Similarly. - * config/tc-mips.c, config/tc-mips.h: Similarly. - - * config/tc-sh.c (sh_cons_align): Use rs_align_test. - (sh_handle_align): Likewise. Handle rs_align_code. - (sh_do_align): Remove. - * config/tc-sh.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - - * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. - (sparc_handle_align): Likewise. Handle rs_align_code. - * config/tc-sparc.h (md_do_align): Remove. - (MAX_MEM_FOR_RS_ALIGN_CODE): New. - -2000-12-22 DJ Delorie - - * config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg - when we assemble the first half of a pair. - -2000-12-22 H.J. Lu - - * config/tc-i386.c (reloc): Update the macro for non-bfd - assembler. - (BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler. - -2000-12-22 H.J. Lu - - * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER. - -Wed Dec 20 14:21:22 MET 2000 Jan Hubicka - - * config/tc-i386.h (i386_target_format): Define even for ELFs. - (QWORD_MNEM_SUFFIX): New macro. - (CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags): - New macros - (CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber. - (IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix, - ImmExt): Renumber. - (Size64, No_qSuf, NoRex64, Rex64): New macros. - (Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros. - (Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32, - InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc, - SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem): - Renumber. - (Reg, WordReg): Add Reg64. - (Imm): Add Imm32S and Imm64. - (EncImm): New. - (Disp): Add Disp64 and Disp32S. - (AnyMem): Add Disp32S. - (RegRex, RegRex64): New macros. - (rex_byte): New type. - * config/tc-i386.c (set_16bit_code_flag): Kill. - (fits_in_unsigned_long, fits_in_signed_long): New functions. - (reloc): New parameter "signed"; support x86_64. - (set_code_flag): New. - (DEFAULT_ARCH): New macro; default to "i386". - (default_arch): New static variable. - (struct _i386_insn): New fields Operand_PCrel; rex. - (flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT" - (flag_code): New enum and static variable. - (use_rela_relocations): New static variable. - (flag_code_names): New static variable. - (cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64. - (cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to - K6 and Athlon. - (i386_align_code): Return plain "nop" for x86_64. - (mode_from_disp_size): Support Disp32S. - (smallest_imm_type): Support Imm32S and Imm64. - (offset_in_range): Support size of 8. - (set_cpu_arch): Do not clobber to Cpu64/CpuNo64. - (md_pseudo_table): Add "code64"; use set_code_flat. - (md_begin): Emit sane error message on hash failure. - (tc_i386_fix_adjustable): Support x86_64 relocations. - (md_assemble): Support QWORD_MNEM_SUFFIX, REX registers, - instructions supported on particular arch just partially, - output of 64bit immediates, handling of Imm32S and Disp32S type. - (i386_immedaite): Support x86_64 relocations; support 64bit constants. - (i386_displacement): Likewise. - (i386_index_check): Cleanup; support 64bit addresses. - (md_apply_fix3): Support x86_64 relocation and rela. - (md_longopts): Add "32" and "64". - (md_parse_option): Add OPTION_32 and OPTION_64. - (i386_target_format): Call even for ELFs; choose between - elf64-x86-64 and elf32-i386. - (i386_validate_fix): Refuse GOTOFF in 64bit mode. - (tc_gen_reloc): Support rela relocations and x86_64. - (intel_e09_1): Support QWORD. - -2000-12-15 Diego Novillo - - * config/tc-i386.c (intel_e09_1): Only flag as a memory operand if - it's not an offset expression. - (intel_e10_1): Ditto. Also, if the operand is an offset expression, - keep the braces '[' and ']' in the output string. - (intel_e11): Ditto. Also remove comparison intel_parser.op_modifier - != FLAT. There is no such op_modifier. - -2000-12-14 Michael Sokolov - - * dwarf2dbg.c: If we don't have , try including - if we have it. - -2000-12-13 Kazu Hirata - - * as.h: Fix formatting. - * cgen.h: Likewise. - * dwarf2dbg.c: Likewise. - * input-scrub.c: Likewise. - * read.h: Likewise. - -2000-12-13 Mark Elbrecht - - * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes. - configure: Regenerate. - -2000-12-13 Michael Sokolov - - * dwarf2dbg.c: #include only if it exists. - -2000-12-13 Rodney Brown - - * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo. - (md_apply_fix): Here too. - -2000-12-12 Jim Wilson - - * config/tc-ia64.h (ia64_init): Add prototype. - -2000-12-12 H.J. Lu - - * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined. - - * read.h (outputting_stabs_line_debug): Change it to int. - * stabs.c (outputting_stabs_line_debug): Likewise. - -2000-12-12 Geoffrey Keating - - * config/obj-bout.c (obj_crawl_symbol_chain): Don't take - the address of a function result. - -2000-12-12 Franz Sirl - - * config/tc-ppc.c (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn. - (shlib): Fix typo SHILB -> SHLIB. - (md_parse_option): Likewise. - (ppc_elf_validate_fix): Likewise: - * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-12-12 Nick Clifton - - * cgen.h: Fix formatting. - * input-scrub.c: Fix formatting. - * macro.c: Fix formatting. - * config/tc-mips.c: Fix formatting. - * doc/c-mips.texi: Fix formatting. - -Mon Dec 11 14:35:42 MET 2000 Jan hubicka - - * config/tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel - mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX - references. - (intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse - otherwise. - * config/tc-i386.h (DWORD_MNEM_SUFFIX): Kill. - (No_dSuf): Kill. - - * i386.h (*_Suf): Remove No_dSuf. - (d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP) - Remove. - (i386_optab): Remove 'd' in the suffixes. - -2000-12-06 Mark Elbrecht - - * config/tc-i386.c (T_SHORT): Undefine before defining. - -2000-12-05 Kazu Hirata - - * config/tc-mips.c: Fix formatting. - -2000-12-04 Matthew Hiller - - * config/tc-d10v.c (flag_allow_gstabs_packing): New variable. - (md_longopts): New options --gstabs-packing, --no-gstabs-packing. - (md_show_usage): Ditto. - (md_parse_option): Ditto. - (d10v_cleanup): Writes pending instruction only if - ! outputting_stabs_line_debug || ! flag_allow_gstabs_packing. - Fix compile time warning messages. - - * doc/c-d10v.texi: Documents new options. - -2000-12-04 Matthew Hiller - - * stabs.c (outputting_stabs_line_debug): New variable. - (stabs_generate_asm_lineno): Set outputting_stabs_line_debug at - function entry and unset at function exit. - - * read.h (outputting_stabs_line_debug): New extern declaration. - - * as.c: Include dwarf2dbg.h for definition of dwarf2_finish. - - * dwarf2dbg.c: Fix compile time warning messages. - -2000-12-03 Kazu Hirata - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-hppa.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - -2000-12-01 Chris Demetriou - - * config/tc-mips.c (mips_ip): When calculating offsets, - don't accept as constant the difference between the - addresses of symbols in two different sections. - - * config/tc-mips.c (macro_build): Add new 'U' and 'J' operand - specifiers. - (validate_mips_insn): Likewise. Also, update 'B' operand - specifier to use OP_*_CODE20 constants and delete 'm' operand - specifier. - (mips_ip): Remove 'm' operand specifier, add 'U' and 'J' - operand specifiers. Change warning generated by 'B' operand - specifier to reflect its new multi-purpose usage. - - * config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than - -1, and update comment. - (file_mips_isa): Likewise. - (mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment. - (ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use - ISA_* constants rather than hard-coded numbers. - (mips_cpu_info): New structure. - (mips_cpu_info_table): New table describing CPU and ISA names - and numbers. - (mips_cpu_info_from_name, mips_cpu_info_from_isa, - mips_cpu_info_from_cpu): New functions. - (mips_isa_to_str): New function to get string for ISA name. - (mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and - return const char *. - (md_begin): Redo CPU and ISA selection logic, using - mips_cpu_info_from_*. Convert to use ISA_* constants rather - than hard-coded numbers. - (append_insn, mips_emit_delays, macro, macro2): Convert to use - ISA_* constants rather than hard-coded numbers. - (mips_ip): Convert to use mips_isa_to_str to get ISA name. - (md_longopts): Delete OPTION_NO_MIPS32. - (md_parse_option): Convert to use ISA_* constants rather than - hard-coded numbers. Make OPTIONS_MIPS32 case treat MIPS32 - as an ISA. Delete OPTION_NO_MIPS32 case. Convert OPTION_MCPU - to use strcasecmp to recognize "default" and to use - mips_cpu_info_from_name to get CPU numbers from argument. - (md_show_usage): Move -mips32 so it's with the rest of the ISA - flags. Change 4Kc, 4Kp and 4Km CPU entries to just be - mips32-4k. - (s_mipsset): Accept ISA value 32. - * doc/as.texinfo: Clean up MIPS options summary slightly, - remove -no-mips32. Add note about -mips4 and -mips32 - specifying those ISA levels. Delete -mips32 and -no-mips32 - cpu flag descriptions. - * doc/c-mips.texi: Add -mips32 to list of ISA switches. Clean - up the supported CPU switch list, and replace 4Kc, 4Km, and - 4Kp entries with a single mips32-4k entry. Note that you can - use ".set mips32". - - * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and - ISA_MIPS64. - (md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for - -mips5 and -mips64. - (md_parse_option): Add cases for OPTION_MIPS5 and - OPTION_MIPS64. - (md_show_usage): Mention -mips5 and -mips64 arguments. - (s_mipsset): Add cases for MIPS5 and MIPS64. - (mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs - and pseudo-CPUs. - * doc/as.texinfo: Mention -mips5 and -mips64 options - and their meanings. - * doc/c-mips.texi: Likewise. Also update introduction - and ".set" usage information. - - * config/tc-mips.c (md_show_usage): Add "sb1" to the - CPU list. - (mips_cpu_info_table): Add SB-1 entries. - * doc/c-mips.texi: Add "sb1" to the list of CPUs - known to the -mcpu option. - - * doc/as.texinfo: Correct description of MIPS -mcpu - option, by copying some of the text from doc/c-mips.texi. - -2000-12-01 Joel Sherrill - - * configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): - New targets. - (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. - (sparc*-*-rtems*): Switched from a.out to ELF. - * configure: Regenerate. - * config.in: Regenerate. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * po/gas.pot: Regenerate. - -2000-11-30 Philip Blundell - - * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists, - even in non BFD_ASSEMBLER case. - -2000-11-30 Diego Novillo - - * config/tc-i386.c (md_assemble): Swap i.disp_relocs when using intel - syntax. - -2000-11-29 Richard Henderson - - * dwarf2dbg.c: Rewrite from scratch. Queue all debugging output - until dwarf2_finish; use relaxation to get cross-fragment offsets; - thread multiple subsegments properly; handle multiple code - sections properly; emit proper compilation unit info for assembler - generated debugging. - - * as.h (enum _relax_state): Add rs_dwarf2dbg. - * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. - (dwarf2dbg_estimate_size_before_relax): Declare. - (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. - * write.c: Include dwarf2dbg.h. - (cvt_frag_to_fill): Handle rs_dwarf2dbg. - (relax_segment): Likewise. - -2000-11-28 Hans-Peter Nilsson - - * config/tc-sh.c (md_convert_frag) : Use as_bad_where instead of as_bad. Tweak error message - accordingly. Stabilize frag by updating fix part and resetting - variant part. - : Ditto. - (sh_elf_cons): Cast *input_line_pointer to unsigned char when - indexing is_end_of_line[]. - (md_assemble): Initialize size to 0. - (md_section_align): Mark parameter seg as unused. - (parse_reg): Parse names case-insensitively. - -2000-11-28 Kazu Hirata - - * config/obj-aout.h: Fix formatting. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-som.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - * config/tc-h8300.h: Likewise. - * config/tc-ns32k.h: Likewise. - * config/tc-sparc.h: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-11-28 Nick Clifton - - * doc/as.1 (COPYING): Mention that the GNU Free Documentation - License is present in the sources, but not the output, and - also available from the GNU website. - (GNU Free Documentation License): Comment out this section. - -2000-11-28 Hans-Peter Nilsson - - * Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff - targets. Remove i860 from valid a.out targets. - * Makefile.in: Regenerate. - - * config/tc-cris.c: Include dwarf2dbg.h. - (md_pseudo_table): Add .file and .loc. - (md_assemble): Call dwarf2_emit_insn if generating ELF. - (s_cris_file, s_cris_loc): New. - * config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - * Makefile.am: Regenerate dependencies. - * Makefile.in: Regenerate. - -2000-11-28 Alan Modra - - * expr.c (STANDARD_MUL_PRECEDENCE): Correct value. - (MRI_MUL_PRECEDENCE): Likewise. - (op_rank): Fix a comment typo. - -2000-11-26 Stephane Carrez - - * config/tc-m68hc11.c (build_indexed_byte): Print the offset in - the error message. - (get_operand): Fix analysis for movw/movb instructions. - -2000-11-24 Nick Clifton - - * configure.in (xscale-elf): Add target. - (xscale-coff): Add target. - * configure: Regenerate. - - * config/tc-arm.c (ARM_EXT_V5E): New ARM architecture - extenstion. - (ARM_EXT_XSCALE): New ARM architecture extension. - (ARM_LONGMUL): Rename to ARM_EXT_LONGMUL. - (ARM_HALFWORD): Rename to ARM_EXT_HALFWORD. - (ARM_THUMB): Rename to ARM_EXT_THUMB. - (ARM_ARCH_V4): Remove processor from architecture. - (ARM_ARCH_3M): New architecutre definition. - (ARM_ARCH_V5TE): New architecutre definition. - (ARM_ARCH_XSCALE): New architecutre definition. - (CPU_DEFAULT): Allow to be defaulted to XScale. - (atpcs): New boolean variable. - (ldr_flags): Support 'd' flag for double word loads. - (str_flags): Support 'd' flag for double word stored. - (do_mia): New function. - (do_mar): New function. - (do_mra): New function. - (do_pld): New function. - (do_ldrd): New function. - (do_blx): New function. - (do_bkpt): New function. - (do_clz): New function. - (do_lstc2): New function. - (do_cdp2): New function. - (do_t_blx): New function. - (do_t_bkpt): New function. - (do_smla): New function. - (do_smlal): New function. - (do_smul): New function. - (do_qadd): New function. - (do_co_reg2c): New function. - (LONGEST_INSN): Redefine to 7. - - * doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs - command line switches. - -2000-11-22 Jim Wilson - - * config/tc-ia64.c (pseudo_func): Add missing initializers. - (struct rsrc): Make line unsigned. - (gr_values): Add missing initializer. - (SLOT_NUM_NOT_SET): Add unsigned cast. - (ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix, - dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save, - dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata, - dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf, - dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state, - dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body, - dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln, - dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource, - md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align): - Add ATTRIBUTE_UNUSED to unused parameters. - (convert_expr_to_ab_reg): Add parens. - (convert_expr_to_xy_reg): Add parens. Comment out >= REG_GR test. - (dot_prologue): Initialize grsave when declared. - (md_pseudo_table): Add missing initializers. - (operand_match): Add casts to bfd_vma. - (emit_one_bundle): Delete unused local prev. Make required_template - unsigned. - (specify_resource): Cast i to unsigned. - (note_register_values): Use fprintf_vma. - (print_dependency): Likewise. - -2000-11-21 Jim Wilson - - * config/tc-ia64.c (generate_unwind_image): Call record_alignment - for unwind info section. - (dot_endp): Likewise for unwind section. - - * config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to - fix_new_exp. - -2000-11-21 Jakub Jelinek - - * config/tc-sparc.c (md_pseudo_table): Add .file and .loc. - (output_insn): Call dwarf2_emit_insn. - * config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - -2000-11-17 Richard Henderson - - * ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all - callers. Don't switch segments. Expect CIE == -1 in .debug_frame. - (check_eh_frame): Handle .eh_frame and .debug_frame concurrently. - -2000-11-17 Nick Clifton - - * config/tc-arm.c (md_pseudo_table): Add support for .line and - .file pseudo ops. - -2000-11-17 Richard Henderson - - * config/tc-i386.c (md_pseudo_table): Add .file and .loc. - -2000-11-17 Richard Henderson - - * dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number. - * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for - tri-state definition of alpha_flag_mdebug. - * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. - (s_alpha_file): Store first .file directive. - (s_alpha_stab): New. - (md_pseudo_table): Add stabs and stabn. - -2000-11-17 Richard Henderson - - * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn. - -2000-11-17 Richard Henderson - - * as.c (debug_type): Init to DEBUG_UNSPECIFIED. - (main): Call dwarf2_finish. - * as.h (debug_type): Clarify documentation of the meaning - of this variable. - * dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1. - (print_stats): Fix parenthesis problem. - (now_subseg_size): New. - (dwarf2_finish): Use it. If DEBUG_DWARF2, emit bits for .debug_info. - (dwarf2_directive_file): Don't set debug_type. - (dwarf2_where): Honor DEBUG_DWARF2 first. - (dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno; - do nothing if not emitting dwarf2 debug info, or no work. - * dwarf2dbg.h (dwarf2_emit_insn): Update. - * ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED. - (ecoff_new_file): Likewise. - * read.c (generate_lineno_debug): Kill ecoff hackery. Update - commentary wrt dwarf2. - - * config/tc-alpha.c (alpha_adjust_symtab_relocs): Add - ATTRIBUTE_UNUSED as needed. - (emit_insn): Call dwarf2_emit_insn. - (s_alpha_file): New. - (s_alpha_loc): New. - (s_alpha_coff_wrapper): Don't handle them. - (md_pseudo_table): Update for .file and .loc. - * config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New. - - * config/tc-arm.c (output_inst): Update for dwarf2_emit_insn; - don't protect with debug_type. - * config/tc-hppa.c (md_assemble): Likewise. - * config/tc-m68hc11.c (m68hc11_new_insn): Likewise. - * config/tc-mn10300.c (md_assemble): Likewise. - * config/tc-sh.c (md_assemble): Likewise. - * config/tc-v850.c (md_assemble): Likewise. - - * config/tc-arm.c (arm_end_of_source): Remove. - * config/tc-hppa.c (pa_end_of_source): Remove. - * config/tc-m68hc11.c (m68hc11_end_of_source): Remove. - * config/tc-mn10300.c (mn10300_finalize): Remove. - * config/tc-sh.c (sh_finalize): Remove. - * config/tc-v850.c (sh_finalize): Remove. - - * config/tc-arm.h (md_end): Remove. - * config/tc-hppa.h (md_end): Remove. - (DWARF2_LINE_MIN_INSN_LENGTH): New. - * config/tc-m68hc11.h (md_end): Remove. - * config/tc-mn10300.h (md_end): Remove. - * config/tc-sh.h (md_end): Remove. - * config/tc-v850.h (md_end): Remove. - - * config/tc-ia64.c (emit_one_bundle): Don't protect - dwarf2 bits with debug_type. - (md_assemble): Likewise. - (ia64_end_of_source): Don't call dwarf2_finish. - -2000-11-16 Jim Wilson - - * config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno - >= 128 instead of > 128. Abort if predicate regno is >= 64 instead of - > 16. - -2000-11-16 H.J. Lu - - * config/obj-elf.c (obj_elf_symver): Don't check the missing - version name. - -2000-11-15 Kazu Hirata - - * config/tc-tic30.c: Fix formatting. - * config/tc-tic80.c: Likewise. - * config/tc-v850.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-11-14 DJ Delorie - - * config/tc-v850.c: Support dwarf2. - * config/tc-v850.h: Ditto. - - * config/tc-v850.c (cons_fix_new_v850): Don't rely on - parse_cons_expression_v850 to initialize hold_cons_reloc. - -2000-11-15 Bernd Schmidt - - * config/tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX. - (errata_nops_necessary_p): New function. - (emit_one_bundle): Call it. Update the GROUP_IDX field in struct - md. - -2000-11-14 Jim Wilson - - * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then - return little endian bfd formats. - -2000-11-14 Kazu Hirata - - * config/aout_gnu.h: Fix formatting. - * config/atof-vax.c: Likewise. - * config/m68k-parse.h: Likewise. - * config/m88k-opcode.h: Likewise. - * config/obj-elf.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-cris.c: Likewise. - * config/tc-i386.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/te-386bsd.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-nbsd.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-tmips.h: Likewise. - * config/vax-inst.h: Likewise. - * config/vms-conf.h: Likewise. - -2000-11-14 Jakub Jelinek - - * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits. - -2000-11-13 H.J. Lu - - * config/obj-elf.c (elf_frob_symbol): Support - ".symver name,name2@@@nodename". - (elf_frob_file_before_adjust): Likewise. - - * doc/as.texinfo: Updated for ".symver name,name2@@@nodename" - and ".symver name,name2@@@nodename". - Fix a typo. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * config/obj-elf.c (obj_elf_symver): Check missing version - name. - -2000-11-12 H.J. Lu (hjl@gnu.org) - - * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT - instead of bfd_vma for non-bfd assemblers. - -2000-11-09 Kazu Hirata - - * itbl-ops.c: Fix comment typos. - -2000-11-08 Jim Wilson - - * config/tc-ia64.c (struct unw_rec_list): Add slot_frag field. - (struct unwind): Add next_slot_frag field. - (slot_index): New parameters slot_frag and first_frag. Add code - to add in frag sizes when different. Add comments. - (fixup_unw_records): New locals first_frag and last_frag. Pass new - arguments to slot_index. - (emit_one_bundle): Set slot_frag field. Set next_slot_number after - loop end. Set next_slot_frag field. - -2000-11-07 H.J. Lu - - * doc/as.texinfo (.symver): Updated for versioned symbol - reference. - - * obj.h (format_ops): Add the frob_file_before_adjust field. - - * config/obj-aout.c (aout_format_ops): Set the - frob_file_before_adjust field to 0. - * config/obj-coff.c (coff_format_ops): Likewise. - * config/obj-ecoff.c (ecoff_format_ops): Likewise. - - * config/obj-elf.c (obj_elf_symver): Allow duplicated version - name. - (elf_frob_file_before_adjust): New function to remove unneeded - versioned symbols from the symbol table. - (elf_format_ops): Set the frob_file_before_adjust field to - elf_frob_file_before_adjust. - - * config/obj-elf.h (obj_frob_file_before_adjust): Defined if - not defined. - - * config/obj-multi.h (obj_frob_file_before_adjust): Defined. - -2000-11-07 Peter Targett - - * config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and - BIG_ENDIAN macros. - * config/tc-arc.c: Use S_IS_LOCAL to test local symbols. - Fix compile time warning messages. - -2000-11-07 Nick Clifton - - * stabs.c (generate_asm_file): Increase length of xmalloc'ed - buffer in order to avoid buffer overflows. - -2000-11-06 Steve Ellcey - - * config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage): - Change M to m for -milp32 or -mlp64 to match gcc. - (dot_endp): Use bytes_per_address instead of 8. - (emit_one_bundle): Use number_to_chars_littleendian instead of - md_number_to_chars. - (fix_insn): Likewise. - (ia64_init): New function. - (ia64_target_format): New function. - (md_begin): Set endianness, arch, and machine as appropriate. - * config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars): - Make these macros depend on TE_HPUX macro. - (TARGET_FORMAT): Define. - (HOST_SPECIAL_INIT): Define. - * config/te-hpux.h: New file. - * configure.in: Add "ia64-*-hpux*" target to configure. - * configure: Regenerate. - -2000-11-06 Kazu Hirata - - * as.c: Fix formatting. - * dwarf2dbg.c: Likewise. - * input-file.c: Likewise. - * input-file.h: Likewise. - * input-scrub.c: Likewise. - * itbl-ops.c: Likewise. - * listing.c: Likewise. - * macro.h: Likewise. - * messages.c: Likewise. - * read.c: Likewise. - * subsegs.c: Likewise. - * subsegs.h: Likewise. - * write.c: Likewise. - -2000-11-06 Nick Clifton - - * doc/as.texinfo: Add GNU Free Documentation License. - * doc/gasp.texi: Add GNU Free Documentation License. - * doc/as.1: Add GNU Free Documentation License. - -2000-11-05 Nick Clifton - - * config/tc-arm.c: Add include of "dwarf2dbg.h" - -2000-11-02 Per Lundberg - - * configure.in: Recognise i[3456]86-chaosdev-storm-chaos. - * configure: Regenerate. - -2000-11-01 Nick Clifton - - * read.c (original_case_string): New global variable. - (read_a_source_file): Copy opcode string into - original_case_string if clobbering the case of the opcode. - * read.h: Export the definition of original_case_string. - * config/tc-arm.c (md_assembler): When parsing a .req - directive use the original opcode string, not the case - clobbered version. - -2000-11-02 Nick Clifton - - * config/tc-mn10300.c (debug_line): Remove this static - variable. - (md_assemble): Call dwarf2_generate_asm_lineno instead of - dwarf2_where and dwarf2_gen_line_info. - -2000-11-02 Theo Honohan - - * config/tc-arm.c (do_msr): Improve error message. - -2000-10-31 Eric Christopher - - * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved - or pc-relative, else use fx_offset. - -2000-10-31 Jim Wilson - - * config/tc-ia64.c (struct md): New field tag_fixups. - (ia64_flush_insns): Handle tag_fixups. Error if dangling - qualifying predicate. - (emit_one_bundle): Delete spurious multiplication by one. Handle - tag_fixups. - (ia64_start_line): Error if dangling qualifying predicate. - (defining_tag): New static variable. - (ia64_unrecognized_line, case '['): Parse tags. - (ia64_frob_label): Create tag_fixups. - (md_assemble): Reset md.qp.X_op after using it. - -2000-10-31 Kaz Kojima - - * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094. - -2000-10-31 Bernd Schmidt - - * config/tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2. - -2000-10-30 Kazu Hirata - - * expr.c: Fix formatting. - * flonum-copy.c: Likewise. - * flonum.h: Likewise. - * gasp.c: Likewise. - * hash.c: Likewise. - -2000-10-30 Hans-Peter Nilsson - - * as.h (OPTION_MD_BASE): Bump to 190. - * as.c (parse_args) : Add comment about the need to - check OPTION_MD_BASE in as.h. - - * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL - for weak symbols. - -2000-10-27 Nick Clifton - - * configure.in (emulations): Add m68hc12. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-10-27 Aldy Hernandez - - * config/tc-arm.c (psrs): Remove lowercase versions of spsr* and - cpsr*. - (arm_psr_parse): Handle lowercase CPSR and SPSR. - -2000-10-25 Nick Clifton - - * dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate - a DWARF2 line number information sequence. - - *dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno. - - * read.c (generate_lineno_debug): Update comment describing why - DWARF2 line number debug information is not generated - automatically by this function. - - * doc/as.texinfo: Note that --gdwarf2 only works on some targets, - not all. - - * config/tc-arm.h (md_end): Define. - (DWARF2_LINE_MIN_INSN_LENGTH): Define. - - * config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno - if generating DWARF2 line numbers. - (arm_end_of_source): New function. Call dwarf2_finish if - necessary. - - * config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno. - * config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno. - * config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno. - -2000-10-25 Diego Novillo - - * config/tc-i386.c: Fix prototype declarations for functions taking no - arguments. - -2000-10-24 Diego Novillo - - * config/tc-i386.c (i386_operand_modifier): Remove. - (build_displacement_string): Remove. - (i386_parse_seg): Remove. - (i386_intel_memory_operand): Remove. - (i386_intel_operand): Re-write using recursive descent parser based - on MASM documentation. - (struct intel_parser_s): New structure. - (intel_parser): New static variable. - (struct intel_token): New structure. - (cur_token, prev_token): New static variables. - (T_NIL): Define. - (T_CONST): Define. - (T_REG): Define. - (T_BYTE): Define. - (T_WORD): Define. - (T_DWORD): Define. - (T_QWORD): Define. - (T_XWORD): Define. - (T_SHORT): Define. - (T_OFFSET): Define. - (T_PTR): Define. - (T_ID): Define. - (intel_match_token): New function. - (intel_get_token): New function. - (intel_putback_token): New function. - (intel_expr): New function. - (intel_e05): New function. - (intel_e05_1): New function. - (intel_e06): New function. - (intel_e06_1): New function. - (intel_e09): New function. - (intel_e09_1): New function. - (intel_e10): New function. - (intel_e10_1): New function. - (intel_e11): New function. - -2000-10-20 Jakub Jelinek - - * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p - instructions to loose any special insn->architecture mask. - - * config/tc-sparc.c (v9a_asr_table): Add v9b ASRs. - (sparc_md_end, sparc_arch_types, sparc_arch, - sparc_elf_final_processing): Handle v8plusb and v9b architectures. - (sparc_ip): Handle siam mode operands. Support v9b ASRs (and - request v9b architecture if they are used). - -2000-10-18 Michael Sokolov - - * config/tc-m68k.c: Fix the previous misapplied patch. - -2000-10-18 Michael Sokolov - - * config/tc-m68k.h (RELAX_RELOC_*): New definitions for both - BFD_ASSEMBLER and !BFD_ASSEMBLER. - * config/tc-m68k.c (md_convert_frag_1): Use them instead of - BFD_RELOC_*. - -2000-10-17 Kazu Hirata - - * debug.c: Fix formatting. - * depend.c: Likewise. - * dwarf2dbg.c: Likewise. - * dwarf2dbg.h: Likewise. - * ecoff.c: Likewise. - * expr.c: Likewise. - * expr.h: Likewise. - * flonum-konst.c: Likewise. - * frags.h: Likewise. - -2000-10-17 Chandrakala Chavva - - * as.c: New option OPTION_TARGET_HELP. Prints all target specific - options. - * doc/as.texinfo: Added notes about this new option. - -2000-10-16 Hans-Peter Nilsson - - * config/tc-sh.c (JREG): Remove. - (md_convert_frag): Remove #if 0:d code using JREG. - -2000-10-15 Diego Novillo - - * config/tc-i386.c (i386_operand_modifier): Only match - modifiers SHORT and FLAT if they are followed by a space. - (parse_register): When `allow_naked_reg' is set, do not confuse - identifiers that start with a register name with a register. - -2000-10-12 Kazu Hirata - - * app.c: Fix formatting. - * as.c: Likewise. - * as.h: Likewise. - * bit_fix.h: Likewise. - * cgen.c: Likewise. - * cgen.h: Likewise. - * cond.c: Likewise. - -2000-10-11 Alan Modra - - * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change. - -2000-10-07 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert. - Re-arrange function a little and improve error message. - - * write.c (write_relocs): Fix a comment. - - * config/obj-elf.c (elf_frob_symbol): Make section syms global on - link-once sections. - -2000-10-05 Jim Wilson - - * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr. - -2000-10-05 Alan Modra - - * config/tc-i386.c: Delete some useless comments, reformat others. - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover - non-global syms in linkonce sections. - -2000-10-04 Ralf Baechle - - * config/tc-ia64.c (operand_match): Don't use // style comments. - * config/tc-i370.c: Likewise. - -2000-09-29 Hans-Peter Nilsson - - Changes to handle varying register prefix and user symbol prefix. - * config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX, - SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE, - SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New. - (s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix, - cris_sym_leading_underscore, cris_sym_no_leading_underscore): New. - (demand_register_prefix): New variable. - (md_pseudo_table): New pseudo ".syntax". - (md_longopts): New options --no-underscore and --underscore. - (cris_target_format): Return elf32-us-cris or elf32-cris depending - on symbols_have_leading_underscore. - (get_gen_reg): Accept or require REGISTER_PREFIX_CHAR. - (get_spec_reg): Ditto. - (cris_number_to_imm) : Remove FIXME. - Fix formatting. - (md_parse_option) : Deprecate; add reference to - --help. - : New. - (md_show_usage): Be brief and reformat to match continuation of - --help. - * po/gas.pot: Regenerate. - -2000-09-28 Alan Modra - - * config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't - force relocs for 12 bit branches. - (md_apply_fix): Similarly, adjust logic here. - -2000-09-28 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Add fmt assertion. Don't - adjust for external and weak syms as we will use a reloc. Allow - for +8 offset when calculating limits of branches. - (hppa_fix_adjustable): Undo 2000-09-23 change. - (hppa_force_relocation): Likewise. Add fx_addsy assertion. - Correct distance calculation. - (tc_gen_reloc): Print the file name and line number if we can't - handle a fixup. - - From John David Anglin - * config/tc-hppa.c (nonzero_dibits): Define. - (arg_reloc_stub_needed): Check each arg and return value - separately for zero case. - (pa_align): Declare argument `bytes'. - -2000-09-25 Kazu Hirata - - * config/tc-cris.c: Fix formatting. - * config/tc-d10v.h: Likewise. - * config/tc-d30v.c: Likewise. - * config/tc-d30v.h: Likewise. - * config/tc-fr30.c: Likewise. - * config/tc-fr30.h: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-m68k.h: Likewise. - * config/tc-pj.h: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-ppc.h: Likewise. - * config/tc-sh.c: Likewise. - * config/tc-sh.h: Likewise. - * config/tc-sparc.c: Likewise. - * config/tc-v850.h: Likewise. - * config/tc-vax.h: Likewise. - * config/tc-w65.h: Likewise. - * config/tc-z8k.h: Likewise. - -2000-09-23 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak - checks only for ELF. - (hppa_force_relocation): Likewise. - -2000-09-22 Jim Wilson - - * config/tc-ia64.c (dv_sem): Add "stop". - (specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now. - (specify_resource, case IA64_RS_PRr): New for regs 16 to 62. - (specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to - match above. - (mark_resources): Check IA64_RS_PRr. - -2000-09-22 Michael Sokolov - - * config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1, - md_estimate_size_before_relax): Redesign and clean up the - relaxation mechanism. - -2000-09-21 Kazu Hirata - - * config/tc-ns32k.c: Fix formatting. - * config/tc-ns32k.h: Likewise. - -2000-09-20 Kazu Hirata - - * config/tc-m32r.c: Fix formatting. - * config/tc-m32r.h: Likewise. - * config/tc-m68851.h: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68hc11.h: Likewise. - * config/tc-m88k.c: Likewise. - * config/tc-mcore.c: Likewise. - * config/tc-mcore.h: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-mips.h: Likewise. - * config/tc-mn10200.h: Likewise. - * config/tc-mn10300.h: Likewise. - * config/tc-tahoe.c: Likewise. - * config/tc-tahoe.h: Likewise. - -2000-09-19 Michael Sokolov - - * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci. - Likewise in relaxation description comments. - -2000-09-18 Alan Modra - - * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow - subtraction of two syms without emitting a relocation. - - From David Huggins-Daines - * config/tc-hppa.c (hppa_force_relocation): Force relocations for - global or weak symbols. - -2000-09-15 Kazu Hirata - - * config/tc-h8300.h: Fix formatting. - * config/tc-h8500.c: Likewise. - * config/tc-h8500.h: Likewise. - * config/tc-hppa.h: Likewise. - * config/tc-i370.h: Likewise. - * config/tc-i386.h: Likewise. - * config/tc-i860.c: Likewise. - * config/tc-i860.h: Likewise. - * config/tc-i960.h: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-ia64.h: Likewise. - -2000-09-14 Kazu Hirata - - * config/tc-a29k.c: Fix formatting. - * config/tc-alpha.c: Likewise. - * config/tc-arc.c: Likewise. - * config/tc-arc.h: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-arm.h: Likewise. - * config/tc-avr.c: Likewise. - * config/tc-avr.h: Likewise. - * config/tc-tic30.c: Likewise. - * config/tc-tic30.h: Likewise. - * config/tc-tic54x.c: Likewise. - * config/tc-tic54x.h: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-tic80.h: Likewise. - -2000-09-14 Timothy Wall - - * config/tc-ia64.c (specify_resource): For PR%/PR63, note types of - parallel comparisons for later use. - (struct rsrc): Add parallel comparison type. - (resources_match): Skip special cases of PR usage (non-conflicting - parallel compares). - -2000-09-13 Kazu Hirata - - * config/obj-ecoff.c: Fix formatting. - * config/obj-elf.c: Likewise. - * config/obj-elf.h: Likewise. - * config/obj-evax.h: Likewise. - * config/obj-generic.h: Likewise. - * config/obj-hp300.c: Likewise. - * config/obj-hp300.h: Likewise. - * config/obj-ieee.h: Likewise. - * config/obj-vms.c: Likewise. - * config/obj-vms.h: Likewise. - -2000-09-13 Anders Norlander - - * config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors. - (md_parse_option): Ditto. - (md_longopts): Add -mips32 option. - (md_show_usage): Document new options. - (mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32. - (mips_ip): Assemble mfc0 with a sub-selection code. - (validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20). - (mips_cpu_to_str): New function. - (mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value. - Use CPU_* defines instead of hardcoded numbers. - - * doc/as.texinfo: Document new options. - * doc/c-mips.texi: Ditto. - -2000-09-12 Kazu Hirata - - * as.h: Fix formatting. - * asintl.h: Likewise. - * bit_fix.h: Likewise. - * config/obj-aout.c: Likewise. - * config/obj-aout.h: Likewise. - * config/obj-bout.c: Likewise. - * config/obj-bout.h: Likewise. - * config/obj-coff.c: Likewise. - * config/obj-coff.h: Likewise. - * dwarf2dbg.h: Likewise. - * expr.h: Likewise. - * flonum.h: Likewise. - * frags.h: Likewise. - * itbl-ops.h: Likewise. - * macro.h: Likewise. - * read.h: Likewise. - * sb.h: Likewise. - * struc-symbol.h: Likewise. - * subsegs.h: Likewise. - * symbols.h: Likewise. - * tc.h: Likewise. - * write.h: Likewise. - -2000-09-11 Kazu Hirata - - * bignum-copy.c: Fix formatting. - * config/tc-i370.c: Likewise. - * config/tc-i960.c: Likewise. - * config/tc-m68k.c: Likewise. - * ehopt.c: Likewise. - * flonum-copy.c: Likewise. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - * literal.c: Likewise. - * read.c: Likewise. - * sb.c: Likewise. - * stabs.c: Likewise. - * subsegs.c: Likewise. - -2000-09-09 Philip Blundell - - * configure.in (arm*-*-uclinux*): New target. - * configure: Regenerate. - -2000-09-09 Kazu Hirata - - * input-file.c: Fix formatting. - * itbl-ops.c: Likewise. - * messages.c: Likewise. - -2000-09-08 Philip Blundell - - * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when - offset is negative. - -2000-09-07 H.J. Lu - - * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. - * configure: Rebuild. - -2000-09-07 Kazu Hirata - - * atof-generic.c: Fix formatting. - * config/tc-mips.c: Likewise. - * config/tc-vax.c: Likewise. - * input-scrub.c: Likewise. - -2000-09-07 Alexandre Oliva - - * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets. - * configure.in (sh-*-linux*): Added. - * configure: Rebuilt. - -2000-09-06 Kazu Hirata - - * config/tc-hppa.c: Fix formatting. - - * ecoff.c: Fix formatting. - -2000-09-06 Alexandre Oliva - - * configure: Rebuilt with new libtool.m4. - -2000-09-05 Kazu Hirata - - * cgen.c: Fix formatting. - * config/tc-ia64.c: Likewise. - -2000-09-05 Nick Clifton - - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * configure: Regenerate. - * po/gas.pot: Regenerate. - -2000-09-05 Hans-Peter Nilsson - - * config/tc-cris.c: Correct comment typos. - -2000-09-05 Eric Christopher - - * config/tc-mn10300.c: Cleanup. - (md_pcrel_from): Enable. - -2000-09-05 Alan Modra - - * expr.c (operand): Fix a comment typo. - * write.c (write_relocs): Fix a signed/unsigned warning. - - * config/tc-hppa.c (fudge_reg_expressions): New - (hppa_force_reg_syms_absolute): New. - (pa_equ): Allow reg_section expressions. - * config/tc-hppa.c (md_optimize_expr): Define. - (hppa_force_reg_syms_absolute): Prototype. - - * config/tc-hppa.c (pa_11_fp_reg_struct): Delete. - (pa_parse_number): Pass in arg to select fp reg parsing. - Return 1 to indicate format checks pass. If strict, then only - accept a register or register symbol. Return value in... - (pa_number): New static for pa_parse_number. - (FP_REG_BASE): Define. - (FP_REG_RSEL): Define. - (pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as - appropriate. White space changes. - (need_pa11_opcode): Don't bother passing any params, get them from - globals instead. - (pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode. - Remove extraneous check in case 'Q'. - (pa_equ): Modify call to pa_parse_number to do strict parsing. If - reg, set section of resulting symbol to reg_section. - (pa_parse_space_stmt): Modify call to pa_parse_number. - (pa_space): Likewise. - - * config/tc-hppa.c: (md_apply_fix): Handle vtable relocs. - (hppa_force_relocation): Handle vtable relocs. - (pa_vtable_entry): New. - (pa_vtable_inherit): New. - (md_pseudo_table): Add entries for vtable pseudos. - (hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT - and R_PARISC_GNU_VTENTRY relocs. Reject reduction of relocs - against weak syms. - (tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code. - (pa_type_args): Don't call symbol_get_bfdsym multiple times. - Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a - millicode import. - * config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to - specify a symbol type. - - * config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF - dependent things together. - (md_elf_symbol_type): Define. - - * config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo - symbol. - * config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too. - - * config/obj-elf.h (obj_elf_vtable_inherit): Declare. - (obj_elf_vtable_entry): Declare. - - * config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix * - and export function. - (obj_elf_vtable_entry): Similarly. - (elf_pseudo_table): Fix the damage with a cast. - -2000-09-03 Richard Henderson - - * config/tc-ia64.c (emit_one_bundle): Stop collecting insns - for template selection when a label is needed. - -2000-09-02 Kazu Hirata - - * config/tc-ia64.c: Fix formatting. - -2000-09-02 Nick Clifton - - * configure.in: Increase version number to 2.10.91. - * configure: Regenerate. - * aclocal.m4: Regenerate. - * config.in: Regenerate. - * po/gas.pot: Regenerate. - * Makefile.in: Regenerate. - -2000-09-01 Alexandre Oliva - - * config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define. - * config/tc-sh.c (md_apply_fix): Map 32-bit relocations that - become PC-relative to BFD_RELOC_32_PCREL. Reject 16- or 8-bit - similar relocs. - (sh_obj_adjustable): Return 1 for PC-relative offsets used in - branches. - -2000-09-01 Niibe Yutaka , Kaz Kojima , Alexandre Oliva - - * config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, - TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define. - * config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions. - [OBJ_ELF] (md_pseudo_table) : Use them. - (GOT_symbol): New variable. - (md_undefined_symbol): Set it. - -2000-09-01 Richard Henderson - - * config/tc-ia64.c (match): Don't inline. - (extra_goodness): New. - (md_begin): Prefer nop.f and nop.b for best_template. - -2000-08-31 Kazu Hirata - - * as.c: Fix formatting. - * cond.c: Likewise. - * frags.c: Likewise. - * macro.c: Likewise. - -2000-08-31 Eric Christopher - - * config/tc-mn10300.c: Cleanup and fix warnings. - (md_pseudo_table): Add initializers. - (md_show_usage): Cleanup. - (md_parse_option): Fix warnings. - (md_undefined_symbol): Fix warnings. - (md_conver_frag): Fix warnings. - (tc_gen_reloc): Fix warnings. - (md_apply_fix3): Fix warnings. - (check_operand): Fix warnings. - -2000-08-31 Alexandre Oliva - - * acinclude.m4: Include libtool and gettext macros from the - top level. - * aclocal.m4, configure: Rebuilt. - -2000-08-30 Mark Hatle - - * config/tc-ppc.c (md_parse_option): Recognize -m405. - -2000-08-31 Kazu Hirata - - * listing.c: Fix formatting. - -2000-08-29 Kazu Hirata - - * app.c: Fix a comment typo. Fix formatting. - -2000-08-25 J. David Anglin - - * config/tc-vax.c (md_convert_frag): Correctly calculate the pc relative - offset of the target destination for jmp instructions. - (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments. - -2000-08-24 Hans-Peter Nilsson - - * NEWS: Mention support for CRIS. - -Thu Aug 24 20:41:05 2000 Denis Chertykov - - * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros. - Sets `.lcomm' alignment to zero. - -2000-08-23 Alexandre Oliva - - * config/tc-i386.h (OBJ_MAYBE_ELF, OBJ_MAYBE_COFF, - TC_FIX_ADJUSTABLE): Define. - -2000-08-23 Jim Wilson - - * config/tc-ia64.c (output_unw_records): Set U & E flags only if - unwind.personality_routine is set. - -2000-08-23 H.J. Lu - - * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate. - -2000-08-23 Alexandre Oliva - - * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target - environment is pe. - -2000-08-22 H.J. Lu - - * config.in (STRICTCOFF): New for strict COFF. - - * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*, - i386-*-go32* and i386-go32-rtems*. - * configure: Rebuilt. - - * config/obj-coff.c (obj_coff_endef): Follow the historical - behavior if STRICTCOFF is not defined. - - * doc/internals.texi: Document STRICTCOFF. - -2000-08-22 Alexandre Oliva - - * write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined. - (fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - (TC_FIX_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. - (TC_FIX_ADJUSTABLE): Define. - * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: - Likewise. - -2000-08-22 Eric Christopher - - * config/tc-mn10300.c: (md_apply_fix): New function. - (mn10300_force_relocation): New function. - (mn10300_fix_adjustable): New function. - - * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. - (TC_HANDLES_FX_DONE): Define. - (obj_fix_adjustable): Define. - (MD_APPLY_FIX3): Define. - (TC_LINKRELAX_FIXUP): Define. - - * write.c: (TC_LINKRELAX_FIXUP): Define if not - previously defined. - (fixup_segment): Use TC_LINKRELAX_FIXUP. - - * doc/internals.texi: Document TC_LINKRELAX_FIXUP. - -2000-08-21 Jason Eckhardt - - * config/tc-i860.c (md_apply_fix3): Do not insert the immediate - if the fixup resulted in a relocation. - -2000-08-18 Nick Clifton - - * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn. - Make reference to first element of shift_names explicit. - -2000-08-18 Alexandre Oliva - - * write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use - obj_fix_adjustable() and tc_fix_adjustable() to tell whether to - add a symbol's address. Removed all target-specific #ifdefs that - used to accomplished the same. - * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. - -2000-08-17 Kazu Hirata - - * dwarf2dbg.c: Fix formatting. - -2000-08-17 Nick Clifton - - * config/tc-arm.c (decode_shift): Allow illegal shifts by zero - to be recoded as logical shift lefts by zero. - -2000-08-16 Jim Wilson - - * config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle - postincrement modified registers. Handle IA64_OPND_R3_2 addl - source registers. - (note_register_values): Handle IA64_OPND_R3_2 operands. - -2000-08-16 Jason Eckhardt - - * config/tc-i860.c (md_operand): Silly typo fixed. - -2000-08-16 Nick Clifton - - * config/tc-arm.c (struct asm_shift): Delete. - (shift[]): Delete. - (enum asm_shift_index): New. - (struct asm_shift_properties): New. - (struct asm_shift_name): New. - (shift_properties[]); New. - (shift_names[]); New. - - (decode_shift): Use new structures. - Issue a warning is "ROR #0" is used. - Issue a warning if "ASR #0" or "LSR #0" is used. - - (md_begin): Initialise arm_shift_hsh table from new - asm_shift_name array. - -2000-08-16 Jakub Jelinek - - * config/tc-sparc.c: Kill all warnings. - (md_parse_option): Set -32/-64 for -xarch=, allow all -A archs - in -xarch= as well. - (md_show_usage): Update usage text. - -2000-08-16 Nick Clifton - - * config/tc-arm.c (do_bx): Warn about "bx px" not being very - useful. - -2000-08-15 Will Cohen - - * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined. - - * config/tc-sh.c (md_assemble): Changed so debug_type - test performed for ppi_assemble - * config/tc-sh.c: Included dwarf2dbg.h. - (debug_line): Defined. - (md_assemble): Generates dwarf2 line info. - (sh_finalize): New function. Finalize dwarf2 info. - (assemble_ppi): Returns size of code generated. - (build_Mytes): Returns size of code generated. - (md_pseudo_table): Added "file" and "loc" psuedo ops. - * config/tc-sh.h (md_end): Defined. - (sh_finalize): Declared. - -2000-08-15 Alexandre Oliva - - * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use - md_number_to_chars. - -2000-08-14 Nick Clifton - - * config/tc-arm.c (do_bx): Allow "bx pc". - -2000-08-14 Jim Wilson - - * config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic. - (md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC. - (md_begin): Change assignment to md.flag to OR in the new bit. - -2000-08-14 Mark Elbrecht - - * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug - flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE, - C_MOU, and C_EOS. - -2000-08-14 Jason Eckhardt - - * NEWS: Mention i860 support. - -Mon Aug 14 11:49:12 2000 Jeffrey A Law (law@cygnus.com) - - * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. - -2000-08-14 Andreas Schwab - - * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo. - -2000-08-11 Andreas Schwab - - * doc/c-i860.texi (Opcodes for i860): Remove braces from @item - argument. - -2000-08-11 Kazu Hirata - - * expr.c: Fix formatting. - * config/obj-bout.c: Likewise. - -2000-08-10 Jason Eckhardt - - * doc/c-i860.texi: Flesh out the i860 section more. - -2000-08-10 Kazu Hirata - - * symbols.c: Fix formatting. - * expr.c: Likewise. - -Wed Aug 9 16:28:21 EDT 2000 Diego Novillo - - * config/tc-i386.c (md_assemble): Skip suffix check if the opcode - modifier has the IgnoreSize bit set. - -2000-08-09 Alan Modra - - From Rodney Brown - * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0) - * configure: Regenerate. - -2000-08-09 Kazu Hirata - - * hash.c: Fix formatting. - * gasp.c: Likewise. - -2000-08-08 Jason Eckhardt - - * config/tc-i860.h: Rework completely for BFD_ASSEMBLER. - (i860_fix_info): New enum. - (MD_APPLY_FIX3): Define. - (WORKING_DOT_WORD): Define. - (TC_HANDLES_FX_DONE): Define. - (DIFF_EXPR_OK): Define. - (LISTING_HEADER): Define. - (TARGET_FORMAT): Select target format based on endian flag. - (TARGET_BYTES_BIG_ENDIAN): Default to little endian. - (target_big_endian): Add external declaration. - - * config/tc-i860.c: All existing code reworked completely. Other - new code shown below. - (SYNTAX_SVR4): Define. - (target_warn_expand): New variable. - (md_shortopts): Declare and define (-Qy, -Qn, and -V options). - (md_longopts): Declare and define with new options (-EL, -EB, - and -mwarn-expand). - (md_show_usage): New function. - (md_operand): New function. - (obtain_reloc_for_imm16): New function. - (md_apply_fix3): New function. - (tc_gen_reloc): New function. - -2000-08-08 Stephane Carrez - - * config/tc-m68hc11.c (build_jump_insn): Make sure the - 2 bytes of the jump address are in the same frag. - (find): Accept 68hc12 register indirect modes. - - * NEWS: Mention 68HC11 & 68HC12 support. - -2000-08-07 Richard Henderson - - * config/tc-ia64.c (unwind): Add prologue_mask member. - (dot_vframe): Elide psp_gr record if it overlaps prologue_gr. - (dot_save): Likewise for pfs_gr, rp_gr, and preds_gr. - (dot_body): Clear unwind.prologue_mask. - (dot_prologue): Set it. Accept a register second argument. - -2000-08-07 Kazu Hirata - - * config/atof-ieee.c: Fix formatting. - * config/atof-tahoe.c: Likewise. - -2000-08-06 Nick Clifton - - * config/tc-sparc.c (md_begin): Fix typo in recent formatting - work. - - * doc/as.texinfo (Pseudo Ops): Update to include descriptions - of .popsection, .previous, .pushsection, .subsection, - .version, .vtable_entry, .vtable_inherit and .weak. - -2000-08-05 Kazu Hirata - - * config/tc-cris.c: Fix formatting. - * config/tc-i386.c: Likewise. - * config/tc-sparc.c (sparc_ip): Simplify the code. - -2000-08-04 Kazu Hirata - - * config/tc-cris.c: Rearrange code for readability. - * config/tc-d10v.c: Fix formatting. - * config/tc-m32r.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-08-02 Jim Wilson - - * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode - before ia64_find_opcode. - (md_assemble): Likewise. - -2000-08-01 Nick Clifton - - * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag. - Undo some formatting fixes. - -2000-08-01 Kazu Hirata - - * config/obj-som.c: Fix formatting. - * config/obj-ieee.c: Likewise. - * config/tc-arm.c: Likewise. - * config/tc-v850.c: Likewise. - -2000-08-01 Nick Clifton - - * doc/c-m68k.texi (section M680x0 Options): Turn into a table - index by command line option. - -2000-08-01 Michael Sokolov - - * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description. - (@node M68K-Branch): Rewrite to match the reality. - -2000-07-31 Jason Eckhardt - - * doc/c-i860.texi: New file. - * doc/Makefile.am (CPU_DOCS): Add c-i860.texi. - * doc/Makefile.in: Regenerate. - * doc/all.texi: Add I860 as relevant architecture. - * doc/as.texinfo: Include i860 dependent file c-i860.texi. - -2000-07-31 Kazu Hirata - - * config/tc-d30v.c: Fix formatting. - -2000-07-31 Michael Sokolov - - * config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option. - (md_convert_frag_1, md_estimate_size_before_relax): When making DBcc - long emit a long branch if available instead of an absolute jump, never - emit absolute jumps for anything with --pcrel. - - * doc/c-m68k.texi: Document new command line option. - -2000-07-29 Marek Michalkiewicz - - * config/tc-avr.c: Use PARAMS macro in function declarations. - Don't declare md_pcrel_from_section (already in tc-avr.h). - (avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros. - (avr_operand): Don't set (unsigned) op_mask to -1. - -2000-07-28 Jason Eckhardt - - * configure.in: Add bits for i860-stardent-{sysv4, elf}*. - * configure: Regenerated. - * config/obj-elf.c (obj_elf_type): Recognize a fifth type - of operand to the .type directive (.e.g, "type"). - -2000-07-28 Alan Modra - - * as.h (warn_comment, found_comment, found_comment_file): Declare. - * app.c (do_scrub_chars): Record where first comment found. - * read.c (read_a_source_file): Init found_comment on entry, and - notify whether comments found on exit. - * config/tc-hppa.c (md_shortopts): Add "c". - (md_longopts): Add warn-comment. - (md_parse_option): Handle it. - (md_show_usage): Show available options. - * config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX - -Thu Jul 27 11:25:01 2000 Andrew Cagney - - * config/tc-mn10300.c (md_convert_frag): Fix printfs. - (tc_gen_reloc): Add cast when assigning bfd_abs_symbol to - sym_ptr_ptr - (md_estimate_size_before_relax): Don't fall off end of function. - -2000-07-27 Kazu Hirata - - * config/tc-avr.c: Fix formatting. - * config/tc-ns32k.c: Likewise. - -2000-07-27 Alan Modra - - * config/tc-d10v.c (find_opcode): Remove extraneous `='. - -2000-07-27 Kazu Hirata - - * config/tc-d10v.c: Fix formatting. - * config/tc-z8k.c: Likewise. - * config/tc-sparc.c: Likewise. - -2000-07-26 Dave Brolley - - * cgen.c (queue_fixup): Declare opinfo. - (gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED. - (gas_cgen_md_operand): Ditto. - (gas_cgen_md_apply_fix3): Ditto. - -2000-07-24 Mark Elbrecht - - * config/obj-coff.c (obj_frob_symbol): Don't merge - labels. Don't merge if the symbol isn't constant. Return - immediately if a symbol is merged. - -2000-07-22 Alan Modra - - * frags.c (frag_align): Correct absolute section alignment. - -2000-07-20 DJ Delorie - - * config/obj-coff.c (obj_frob_symbol): revert previous change, - it breaks linking against DLLs. - -2000-07-20 Hans-Peter Nilsson - - * configure.in: Add CRIS support. - * configure: Regenerate. - * Makefile.am: (CPU_TYPES): Add cris. - (CPU_OBJ_VALID) [aout]: Add cris. - (MULTI_CPU_TYPES): Add cris. - (MULTI_CPU_OBJ_VALID) [aout]: Add cris. - [coff]: Only i386 and mips are valid. - (TARGET_CPU_CFILES): Add config/tc-cris.c. - (TARGET_CPU_HFILES): Add config/tc-cris.h. - (MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c. - Regenerate dependencies. - * Makefile.in: Regenerate. - * aclocal.m4: Regenerate. - * as.c: Declare crisaout, criself. - * config/tc-cris.h, config/tc-cris.c: New. - * config/e-criself.c, config/e-crisaout.c: New. - * po/POTFILES.in, po/gas.pot: Regenerate. - -2000-07-20 Kazu Hirata - - * read.c: Fix formatting. - * write.c: Fix formatting. - -2000-07-19 H.J. Lu - - * sb.c: Include if exists for abort (). - -2000-07-19 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment. - (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM. - (pa_type_args): Same here. - -2000-07-17 Mark Elbrecht - - * config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't - merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if - the storage class is already set. - -2000-07-17 Kazu Hirata - - * config/tc-m68hc11.c: Fix formatting. - * config/tc-mn10200.c: Likewise. - * config/tc-mn10300.c: Likewise. - * config/tc-pj.c: Likewise. - * config/tc-tic80.c: Likewise. - * config/tc-w65.c: Likewise. - -2000-07-17 Frank Ch. Eigler - - * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN - is defined. - -2000-07-15 Ian Lance Taylor - - * doc/c-mips.texi (MIPS Opts): Remove erroneous space after - @code. - -2000-07-15 Alan Modra - - * config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for - ELF as are used for SOM (except the 32-bit reloc one) to decide - whether a symbol can be reduced to a section symbol. Expand on - the comment for symbols involved in LR% and RR% expressions. - -2000-07-14 Nick Clifton - - * config/tc-mips.c (mips_disable_float_construction): New - static variable. Set to true if doubles should not be - constructed by loading two single width fp registers with - halves of the value. - (mips_ip): Test mips_disable_float_construction. - (md_longopts): Add command line switches --construct-floats - and --no-construct-floats. - (md_parse_option): Parse new command line options. - (md_show_usage): Describe new command line options. - - * doc/c-mips.texi: Document new command line options. - -2000-07-13 Koundinya K - - * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP* - * configure: Regenerate. - -2000-07-13 Hans-Peter Nilsson - - * configure.in (DEFAULT_EMULATION setting): Revert part of - 2000-07-01 change that set te_multi=multi unless set to tmips. - * configure: Regenerate. - -2000-07-12 Mark Elbrecht - - * config/obj-coff.c (coff_frob_section): Add padding to the last - section when aligning it increases its size. - -2000-07-11 Kazu Hirata - - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Kazu Hirata - - * config/tc-h8500.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - -2000-07-10 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel - displacements correctly. - - * read.h (s_abort): Add ATTRIBUTE_NORETURN. - -2000-07-10 Ryan Bradetich - - * hash.c (hash_insert): Add cast to obstruct_alloc to fix - warning. - (hash_jam): Ditto. - -2000-07-09 Alan Modra - - From David Huggins-Daines - * config/te-hppalinux64.h: Add a new emulation. - * configure.in (emulations): Add configure bits to support the - 64-bit Linux/parisc target. - * configure: Regenerate. - - * config/tc-hppa.c (md_parse_option): Support `-V' for ELF. - (md_shortopts): Add `V' for ELF. - - * config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except - when SOM or ELF_ARG_RELOC are defined. - (pa_type_args): Only set symbol_arg_reloc_info when SOM or - ELF_ARG_RELOC are defined. - (pa_stringer_aux): Don't pa_check_current_space_and_subspace here.. - (pa_stringer): ..Do it here instead. Fix comment typos. - (hppa_force_relocation): Cast enums to int before comparing with - ints. - - From Ryan Bradetich - * config/tc-hppa.c: Removed unneeded libbfd.h to fix macro - redifinition warning. - (md_apply_fix): Added cast from enum to int for fixP->fx_r_type. - (hppa_force_relocation): ditto - (md_apply_fix): Added cast to buf to fix warnings. - - * config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa, - cons_fix_new_hppa, hppa_force_relocation): Prototype. - - * config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF. - (R_N0SEL, R_N1SEL): Define only for OBJ_SOM. - (tc_gen_reloc): Make `code' a reloc_type and `codes' a - reloc_type** to avoid warnings in switch. - (md_apply_fix): Make insn, val signed. Zap buf_wd and read insn a - little earlier instead. - - * config/tc-hppa.c (symbol_arg_reloc_info): Define for both som - and elf. - (pa_type_args): Use symbol_arg_reloc_info. - (struct pa_it): Make arg_reloc unsigned int. - (struct hppa_fix_struct): Likewise for fx_arg_reloc. - (pa_text, pa_data, pa_comm): Don't compile for TE_LINUX. - (pa_code): Delete. pa_text duplicates this function. - (md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX. - (fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned - int. - (cons_fix_new_hppa): Actually change selector to e_fsel when - warning about assuming so. - (tc_gen_reloc): More example elf arg reloc code. - (md_apply_fix): Use arg_reloc_stub_needed for elf too. - (hppa_force_relocation): Likewise. - - * config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include - files. - (pa_end_of_source): Prototype. - (hppa_fix_adjustable): Prototype. - (LABELS_WITHOUT_COLONS): Move it.. - * config/te-hppa.h: To here. - - * config/te-hppa64.h: New file. - - * config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc - type. - (md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt. Handle - format -10, -16, 16 relocs. - (hppa_elf_mark_end_of_function): Test for null - last_call_info->start_symbol - - * config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to - CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE. Don't pass opcode to - re_assesmble_* functions. Delete extraneous statements. Fix - typos in comments. - (md_apply_fix): Compare against 1048575 in case 21. Don't pass - insn to re_assemble_*. - -2000-07-08 Ulf Carlsson - - * doc/internals.texi (Expressions): Fix typo. - -2000-07-08 Kazu Hirata - - * config/tc-sh.c: Fix formatting. - * config/tc-tic54x.c: Fix formatting. - * depend.c: Fix formatting. - * flonum-konst.c: Likewise. - * flonum-mult.c: Likewise. - -2000-07-07 Kazu Hirata - - * config/tc-sh.c: Fix comments. - * config/obj-vms.c: Fix comments. - * config/tc-a29k.c: Likewise. - * config/tc-alpha.c: Likewise. - * config/tc-h8300.c: Likewise. - * config/tc-h8500.c: Likewise. - * config/tc-i370.c: Likewise. - * config/tc-ia64.c: Likewise. - * config/tc-m68hc11.c: Likewise. - * config/tc-m68k.c: Likewise. - * config/tc-mips.c: Likewise. - * config/tc-ns32k.c: Likewise. - * config/tc-ppc.c: Likewise. - * config/tc-z8k.c: Likewise. - -2000-07-06 Mark Elbrecht - - * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New. - Default to '(SEC_LOAD | SEC_DATA)'. - (obj_coff_section) [BFD_ASSEMBLER]: Use it. - - * doc/internals.texi (CPU Backend): Describe - TC_COFF_SECTION_DEFAULT_ATTRIBUTES. - -Thu Jul 6 17:20:58 2000 Andrew Cagney - - * as.c (parse_args): NULL terminate the long option list. - -Tue Jul 4 14:08:28 2000 Andrew Cagney - - * config/tc-d30v.h: Include "write.h" for fixS. - (d30v_start_line, md_pcrel_from_section): Add function prototypes. - -2000-07-05 Nick Clifton - - * config/tc-d30v.c (write_2_short): Further changes to warning - messages produced when combining EITHER_BUT_PREFER_MU attributed - opcodes. - -2000-07-05 DJ Delorie - - * MAINTAINERS: new - -2000-07-04 Alexandre Oliva - - * config/tc-arm.c (psrs): Accept combinations of flags. - -2000-07-03 Marek Michalkiewicz - - * config/tc-avr.c: Change _ () to _() around all strings marked - for translation (exception from the usual coding style). - (avr_opt): New struct variable, how the new switches are set. - (OPTION_MMCU): Define as 'm' and actually use. - (md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap. - (show_mcu_list): New function, display the list of known MCUs. - (md_show_usage): Document the new switches. Call show_mcu_list. - (avr_set_arch): Change 'm' to OPTION_MMCU. - (md_parse_option): Call show_mcu_list if unknown MCU specified. - Handle the new switches. - (avr_operands): Disable warnings for undefined combinations of - operands if -mall-opcodes. Disable warnings for skipping two-word - instructions if enhanced core or -mno-skip-bug. - (avr_operand): Accept all addressing modes on avr1 if -mall-opcodes. - (md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap. - (md_assemble): Accept opcodes not supported by MCU if -mall-opcodes. - (avr_ldi_expression): Warn about implicit lo8(). - * config/tc-avr.h (md_pcrel_from_section): Add prototype. - -2000-07-01 Koundinya K - - * configure.in: Add entry for mips-*-sysv4*MP* - * configure: Rebuild - * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or - elf32-tradlittlemips for traditional mips targets. - * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the - test for Link Once sections as in adjust_reloc_syms. - * config/te-tmips.h: New file for traditional mips targets. Define - TE_TMIPS. - -2000-06-29 Mark Elbrecht - - * config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the - flags argument is not present, don't change an existing section's - section's attributes. If the flags argument is present, warn if the - attributes don't match the section's current attributes. When - long section names are supported, set SEC_LINK_ONCE and - SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section. - -Thu Jun 29 21:30:00 2000 Hans-Peter Nilsson - - * config/obj-aout.c (obj_aout_type): Do not ignore for undefined - symbols; create them. - -2000-06-29 Mark Elbrecht - - * write.c (set_segment_vma): New: Set vma and lma for a segment. - (write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it. - -2000-06-27 Aldy Hernandez - - * config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of - expressions. Ignore the problem when handling 16 bit signed - immediates, because the assembler will take care of the relocation - later. - -2000-06-27 Nick Clifton - - * config/tc-d30v.c (write_2_short): Do not allow opcodes with - the EITHER_BUT_PREFER_MU attribute to be combined into a reverse - sequential order, and emit warning messages if the input source - code contains constructs like that, or parallel constructs - containing such opcodes. - -2000-06-26 Marek Michalkiewicz - - * config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4. - Add more MCU types for avr4 and avr5. Replace at94k{10,20,40} - with just at94k. Change AVR_ISA_85xx back to AVR_ISA_2xxx. - (md_show_usage): Update usage message. - (md_parse_option): Allow redefinition of MCU type within the - same avr[1-5] bfd machine type. Show both old and new MCU type - in the error message. - (md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set. - Simplify 8K wrap code. - -2000-06-25 Kazu Hirata - - * config/obj-aout.c: Remove all uses of DEFUN. - * config/obj-ieee.c: Likewise. - * config/tc-sh.c: Fix comment typos. - * config/tc-tahoe.c: Likewise. - * config/tc-vax.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - * config/tc-h8300.c (build_bytes): Assemble ldmac correctly. - -2000-06-24 DJ Delorie - - * config/tc-i386.c (md_estimate_size_before_relax): Revert - more changes from Sept 1999 - (tc_i386_fix_adjustable): ditto - (md_apply_fix3): ditto - -2000-06-24 Frank Ch. Eigler - - * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf. - (gas_cgen_parse_operand): Set it around expression() call. - (gas_cgen_md_operand): Test for it before longjmp(). - -2000-06-24 Kazu Hirata - - * config/tc-h8500.c: Remove all uses of DEFUN. - * config/tc-sh.c: Likewise. - * config/tc-w65.c: Likewise. - * config/tc-z8k.c: Likewise. - - * config/tc-h8500.c: Fix typos in comments. - -2000-06-23 Frank Ch. Eigler - - * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX - is defined. - -2000-06-23 matthew green - - * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is - defined. Fix error message for `[' grouping. - -2000-06-22 Kazu Hirata - - * config/tc-h8300.c: Fix formatting and comment typos. - -2000-06-22 Timothy Wall - - * config/tc-ia64.c (note_register_values): Move premature QP - notation clearing into the appropriate place. - -2000-06-22 Alan Modra - - * dep-in.sed: Escape literal `.'s on patterns. Trim off `../' - first before anything else. Add bin-bugs.h, emul.h and progress.h - Sort list of files as for $(OBJS) in Makefile.am. - - * Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we - find one. Remake dependencies. - ($(OBJS)): Add bin-bugs.h, emul.h, and progress.h Sort the list. - * Makefile.in: Regenerate. - * doc/Makefile.in: Regenerate. - - * config/tc-i386.c (i386_displacement): Don't assume a constant - displacement is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead size the displacement here after we know - for sure that a .code16gcc operand hasn't automatically added - operand size prefixes. - -2000-06-21 H.J. Lu - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - -2000-06-21 Kazu Hirata - - * config/tc-h8300.c (parse_reg): Make the function static. - (parse_exp): Likewise. - -2000-06-20 DJ Delorie - - * config/tc-i386.c (tc_i386_fix_adjustable): Revert change from - Sept 1999; RVA relocs need to be treated more like DIR32 relocs - for cygwin import libraries to work properly. - -2000-06-20 H.J. Lu - - * Makefile.am: Rebuild dependency. - * Makefile.in: Rebuild. - * configure: Likewise. - * doc/Makefile.in: Likewise. - -2000-06-20 Timothy Wall - - * doc/internals.texi (CPU backend): Add @itemx for - TC_START_LABEL_WITHOUT_COLON. - * doc/c-tic54x.texi: New. - * doc/as.texinfo: Add tic54x features and include primary tic54x - documentation file. - * doc/all.texi: Add C54X. - * doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi. - * doc/Makefile.in: Regenerate. - * configure.in: Add tic54x and define LIBM for tic54x. - * configure: Regenrate. - * config/tc-tic54x.[ch]: New. - * config/obj-coff.h: Add tic54x. - * Makefile.am: (CPU_TYPES): Add tic54x. - (TARGET_CPU_CFILES): Add 'tc-tic54x.c'. - (TARGET_CPU_HFILES): Add 'tc-tic54x.h'. - (as_new_LDADD): Add $(LIBM). - * Makefile.in: Regenerate. - -2000-06-18 Stephane Carrez - - * doc/Makefile.am (CPU_DOCS): Added 68hc11 file. - * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port. - * doc/as.texinfo: Likewise. - - * configure, Makefile.in: Regenerate. - * configure.in (emulations): Recognize m6811 and m6812. - * Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES): - Added files for 68hc11 and 68hc12 assembler. - * config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12. - * config/tc-m68hc11.h: Header definition for that assembler. - -2000-06-18 Nick Clifton - - * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte - instead of OCTETS_PER_BYTE. - - * config/tc-v850.c: Fix compile time warnings. - * config/tc-ppc.c: Fix compile time warnings. - -2000-06-18 H.J. Lu - - * configure.in: Don't emulate i386-pc-pe-coff with i386coff. - * configure: Rebuild. - -2000-06-17 Mark Elbrecht - - * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER - to BFD_ASSEMBLER. - -2000-06-16 Nick Clifton - - * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230, - RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants. - - * doc/c-mips.texi: Document newly accepted cpu variants. - -2000-06-15 Ulf Carlsson - - * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES. - -2000-06-13 Ulf Carlsson - - * macro.c (getstring): Make it possible to escape the quote - character. - -Tue Jun 13 20:58:28 2000 Catherine Moore - - * config/tc-hppa.c (pa_export): Weak symbols can be global. - -2000-06-13 H.J. Lu - - * configure: Regenerate. - -2000-06-09 Alan Modra - - * app.c (do_scrub_begin): Don't default lex[';'] as a line - separator. - * doc/internals.texi (line_separator_chars): Semicolon is no - longer a default. Mention null and newline as defaults. - - * read.c (is_end_of_line): Remove ifdef TC_HPPA. - - * config/tc-i386.h (line_separator_chars): Explicitly mention `;' - * config/tc-i860.h (line_separator_chars): Likewise. - * config/tc-h8300.c (line_separator_chars): Likewise. - * config/tc-i960.c (line_separator_chars): Likewise. - * config/tc-m68k.c (line_separator_chars): Likewise. - * config/tc-mips.c (line_separator_chars): Likewise. - * config/tc-ns32k.c (line_separator_chars): Likewise. - * config/tc-sparc.c (line_separator_chars): Likewise. - * config/tc-vax.c (line_separator_chars): Likewise. - - * config/tc-h8300.c (comment_chars): Use string initialiser. - * config/tc-i960.c (line_comment_chars): Likewise. - * config/tc-z8k.c (comment_chars, line_comment_chars, - line_separator_chars): Likewise. - - * config/tc-arm.c (line_separator_chars): Always use `;', not just - for TE_LINUX. - -2000-06-08 Nick Clifton - - * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value - for size 1 fixes. - -2000-06-08 David O'Brien - - * configure.in (VERSION): Update to show this is the CVS mainline. - -2000-06-08 Matthew Jacob - - * config/tc-alpha.c (md_undefined_symbol): Properly understand that - $at is the integer register $r28, vs. both $r28 and the floating - point register $f28. - -2000-06-08 James E. Wilson - - * config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns. - (dot_endp): Don't call ia64_flush_insns. - (emit_one_bundle): Don't delete prologue/body records from - unwind_record list in first loop. Rewrite second loop to account for - this. - -2000-06-07 David Mosberger - - * config/tc-ia64.c: Add missing prototypes. - (generate_unwind_image): Cast argument to output_unw_records call. - -Wed Jun 7 22:44:14 2000 Denis Chertykov - - * config/tc-avr.c (avr_operand): fix the formatting of the comment. - -Wed Jun 7 21:26:15 2000 Denis Chertykov - - * config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h - (REGISTER_P): likewise. - (avr_opcodes): uses include/opcode/avr.h - (avr_operand): enable ld r,Z or st r,Z for at90s1200. - -2000-06-04 Alan Modra - - * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing - initializers too. - -2000-06-03 H.J. Lu - - * read.c (is_end_of_line): Put back `;'. - -2000-06-03 Alan Modra - - * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf. - -2000-06-01 Alan Modra - - * expr.c (operand): Test is_end_of_line outside switch to catch - line separator chars that are also operators. - (operator): Return O_illegal for line separator chars. - - * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;' - entry (or `!' entry for TC_HPPA). - - * config/tc-arm.c (my_get_float_expression): Cast to unsigned char - before indexing is_end_of_line. Remove redundant check for '\0'. - (fp_op2): Likewise. - * config/tc-h8500.c (md_assemble): Likewise. - * config/tc-mcore.c (md_assemble): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - (md_atof): Likewise - - * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing - is_end_of_line. - * config/tc-mcore.c (mcore_cons): Likewise. - (mcore_float_cons): Likewise. - (mcore_stringer): Likewise. - * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. - -2000-06-01 Scott Bambrough - - * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. - -2000-05-29 Nick Clifton - - * config/tc-sh.c: Fix compile time warning messages. - - * config/tc-mips.c: Fix compile time warning messages. - -2000-05-29 Philip Blundell + * config/tc-sh.c (parse_at): Install the correct version of + 2002-02-04's patch. + + * config/tc-sh.c (md_apply_fix3) : Don't + assume fixP->fx_subsy is non-NULL. - * doc/as.texinfo: Update copyright dates. - (Local Labels): Delete misplaced mention of ARM. - * NEWS: Mention ARM ELF support. +2002-02-04 Alexandre Oliva -2000-05-27 Alexandre Oliva + * config/tc-sh.c (parse_at): Set arg type of @(expr,pc) to + A_DISP_PC_ABS, and adjust it by -4. + (get_specific): Accept A_DISP_PC_ABS where A_DISP_PC is + expected. + (build_Mytes): Mark PCRELIMM fix-ups as pc-relative only if + the operand type is not A_DISP_PC_ABS. + +2002-02-04 Hans-Peter Nilsson + + * config/tc-mmix.c (tc_gen_reloc): Don't try and take the value of + common and weak symbols. Handle common and weak symbols as + undefined symbols with regards to GREG handling and merging. + (mmix_frob_file): Ditto. + +2002-02-02 Jason Thorpe + + * configure.in (hppa-*-netbsd*): New target. + * configure: Regenerate. + * config/tc-hppa.h: Also define WARN_COMMENTS if TE_NetBSD. + +2002-02-02 Alan Modra + + * config/tc-v850.c: Add missing prototypes amd use old-style + function definitions. + (AREA_ZDA, AREA_SDA, AREA_TDA): Delete. + (sdata_section tdata_section, zdata_section, sbss_section, + tbss_section, zbss_section, rosdata_section, rozdata_section, + scommon_section, tcommon_section, zcommon_section, + call_table_data_section, call_table_text_section): Delete. + (v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss, + v850_zbss, v850_bss, v850_rosdata, v850_rozdata, + v850_call_table_data, v850_call_table_text): Delete. + (struct v850_seg_entry): New. + (v850_seg_table): New. + (SDATA_SECTION TDATA_SECTION, ZDATA_SECTION, SBSS_SECTION, + TBSS_SECTION, ZBSS_SECTION, BSS_SECTION, ROSDATA_SECTION, + ROZDATA_SECTION, SCOMMON_SECTION, TCOMMON_SECTION, ZCOMMON_SECTION, + CALL_TABLE_DATA_SECTION, CALL_TABLE_TEXT_SECTION): Define. + (do_v850_seg): New. + (v850_seg): New. + (v850_comm): Use do_v850_seg and v850_seg_table. Simplify + recording of alignment. + (md_pseudo_table): Use v850_seg. + (md_begin): Don't init .call_table_data and .call_table_text here. + Set v850_seg_table bss entry. + +2002-02-01 Hans-Peter Nilsson + + Support on-demand global register allocation by passing on + base-plus-offset relocs to the linker. + * config/tc-mmix.c: Tweak and fix typos in comments. + (allocate_undefined_gregs_in_linker): New variable. + (OPTION_LINKER_ALLOCATED_GREGS): New option macro. + (md_longopts): Add --linker-allocated-gregs. + (md_parse_option) : Imply --linker-allocated-gregs. + : New. + (md_show_usage): Update text for -x. Add text for + --linker-allocated-gregs. + (tc_gen_reloc): Derive default value for addend from val and + baddsy. Use addsec and bfd_is_abs_section in more places. Don't + emit error for BFD_RELOC_MMIX_BASE_PLUS_OFFSET without suitable + GREG if allocate_undefined_gregs_in_linker. + * doc/as.texinfo (Overview) : Add + --linker-allocated-gregs. + * doc/c-mmix.texi (MMIX-Opts): Add blurb about + --linker-allocated-gregs. Mention that it's implied by -x. + (MMIX-Pseudos) : Mention when and how a GREG can be omitted. + (MMIX-mmixal): Clarify dated comparison and location of MMIXware. - * config/tc-mn10300.c (md_assemble): Copy size to real_size before - it is modified, and use the real_size to compute the frag address - for dwarf2 line info. + * config/tc-mmix.h (md_parse_name): Use ISUPPER, not isupper. -2000-05-27 Alan Modra +2002-02-01 Alan Modra - * Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed - line-matching scheme to cope with automake moving variables around. - ($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@ + * Makefile.am: Run "make dep-am" * Makefile.in: Regenerate. -2000-05-26 Jakub Jelinek - - * config/tc-sparc.c (sparc_relax): New. - (md_longopts): Add -relax and -no-relax options. - (md_parse_options, md_show_usage): Likewise. - (md_apply_fix3): Optimize tail call into branch always if possible. - -Thu May 4 15:27:07 2000 Donald Lindsay - - * config/tc-d10v.c (write_2_short, parallel_ok, md_assemble, - d10v_cleanup) implement Mitsubishi's newly explained branch-packing - rules, with warning when a GAS statement specifies a packing that - will result in an instruction being squashed. - Added typdef packing_type and enumerals, changed various integer - literals to use the enumerals. - -2000-05-24 David Mosberger - - * config/tc-ia64.c (dot_restorereg_p): New function. - (md_pseudo_table): Add restorereg.p. - (output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1. - (output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2. - - * config/tc-ia64.h (unw_record_type): Add unwabi. - (unw_r_record): Rename member MASK to GRMASK. Add sub-structure - called MASK with members for imask, and the masks produced by - fr_mem, gr_mem, br_mem, and frgr_mem. - (unw_p_record): Add members ABI and CONTEXT. - (unw_x_record): Add member AB. - * config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT - as pseudo-register for use during unwind info generation. - (AR_PFS, AR_LC): New macros. - (enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers - whose names start with an at sign (as in "@priunat"). - (pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat" - register. - (unwind_list, unwind_tail, current_unwind_entry, proc_start, - proc_end, unwind_info, personality_routine): Consolidate into - "unwind" structure to reduce offset-table use. Add member - NEXT_SLOT_NUMBER to track the slot number for the next instruction - to be emitted. - (output_R1_format, output_R3_format, output_P3_format, - output_P6_format): Initialize R with zero to reduce compiler warnings. - (output_P7_format): Ditto. Add `default' branch to switch - statement to reduce compiler warnings. - (output_P8_format, output_B1_format, output_B4_format): Ditto. - (output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE. - (format_ab_reg): Rename from format_a_b_reg. Merge A and B args - into single argument. - (output_X1_format, output_X3_format): Initialize R with zero to reduce - compiler warnings. Merge A and B args into single argument. - (output_X2_format, output_X4_format): Remove unused variable R. Merge - A and B args into single argument. - (free_record): Removed (wasn't used). - (free_list_records): Also free imasks in prologue records. - (output_prologue, output_prologue_gr): Initialize mask bits to zero. - (output_spill_mask): Remove. - (output_unwabi): New function. - (output_epilogue, output_label_state, output_copy_state): Call - alloc_record. - (output_spill_psprel, output_spill_sprel, output_spill_psprel_p, - output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB - argument. - (process_one_record): New locals FR_MASK and GR_MASK. Ignore - gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them - as part of handling the prologue records. Emit region's imask if - we have one. Handle unwabi, epilogue, label_state, copy_state, - spill_psprel, spill_sprel, spill_reg, spill_psprel_p, - spill_sprel_p, and spill_reg_p records. - (set_imask, count_bits, slot_index): New function. - (fixup_unw_records): Fix region size computation. Handle - epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p, - spill_sprel_p, and spill_psprel_p records. Merge mask bits of - frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and - set_imask accordingly. Update imask for gr_gr, and br_gr records. - (convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function. - (dot_save): Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_restore): Don't just ignore it. - (dot_restorereg): New function.. - (generate_unwind_image): Ensure unwind info is a multiple of eight - bytes, not just four bytes. - (dot_handlerdata, dot_unwentry): Demand empty rest of line. - (dot_altrp): Don't just ignore it. - (dot_savemem): New function. Replaces dot_savesp() and - dot_savepsp(). Use manifest constants for applicaton registers. - Handle REG_PR and REG_PRIUNAT. - (dot_savef): Simplify. - (dot_saveb): Support generation of br_gr. - (dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p, - dot_label_state, dot_copy_state): New function. - (dot_unwabi): Don't just ignore it. - (md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp, - spillreg.p, spillsp.p, spillpsp, label_state, copy_state, - unwabi, vframesp, and vframepsp. Fix typo alprp->altrp. - (emit_one_bundle): Set slot number for prologue/body records - *before* emitting the first insn. - (emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER. - (md_begin): Declare "psp" pseudo-register. - (md_operand): Handle PSEUDO_FUNC_REG. Fix printing of error message - so we don't get segfault. - (output_psp_sprel): Output sp/psp relative offsets as 4-byte word - counts as required per SW Conventions manual - (output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel, - output_preds_psprel, output_preds_sprel, output_spill_base, - output_unat_psprel, output_unat_sprel, output_lc_psprel, - output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel, - output_priunat_psprel, output_priunat_sprel, output_bsp_psprel, - output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel, - output_rnat_psprel, output_rnat_sprel, output_spill_psprel, - output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto. - (dot_vframe): Implement. - (dot_vframesp, dot_vframepsp): New function. +2002-01-31 Ivan Guzvinec -Tue May 23 00:57:05 2000 Hans-Peter Nilsson - - * configure.in (i386-*-freebsd a.out entry): Quote properly. + * config/tc-or32.c: New file. + * config/tc-or32.h: New file. + * configure.in: Add support for or32 targets. * configure: Regenerate. - -2000-05-23 Alan Modra - - * config/tc-i386.c (md_assemble): Pass jump reloc in fr_var... - (md_estimate_size_before_relax): so we can use it here instead of - old kludges. Localise vars to blocks. Comment. - - * frags.c (frag_new): Update fr_var comments. - * frags.h (struct frag): Ditto. - -2000-05-22 Richard Henderson - - * config/tc-ia64.c (FUNC_PC_RELATIVE): New. - (pseudo_func): Add pcrel. - (operand_match): Handle IA64_OPND_TGT64. - (build_insn): Likewise. - (md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE]. - (ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE. - (fix_insn): Handle all three 64-bit relocation types. - -Mon May 22 22:43:32 2000 Hans-Peter Nilsson - - * obj.h (struct format_ops): New members begin, app_file, - s_set_other, s_set_desc, s_get_type, s_set_type, - separate_stab_sections, init_stab_section. - - * config/obj-multi.h: Update GPL notice to v2. - (obj_begin): New. - (obj_app_file): New. - (S_SET_SIZE): Test s_set_size for NULL before calling. - (S_SET_ALIGN): Similar for s_set_align. - (S_SET_OTHER): New. - (S_SET_DESC): New. - (S_GET_TYPE): New. - (S_SET_TYPE): New. - (SEPARATE_STAB_SECTIONS): New. - (INIT_STAB_SECTION): New. - (EMIT_SECTION_SYMBOLS): New. - (AOUT_STABS) [OBJ_MAYBE_AOUT]: Define. - - * config/obj-elf.h: Update GPL notice to v2. - Mention that this file is included from obj-multi.h. - (obj_begin): Wrap definition in ifndef. - (elf_file_symbol): Constify declaration. - (obj_app_file): Ditto. - (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): - Wrap in ifndef SEPARATE_STAB_SECTIONS. - - * config/obj-elf.c (elf_s_set_other): New. - (elf_file_symbol): Constify argument. - (elf_separate_stab_sections): New. - (elf_init_stab_section): New. - (elf_format_ops): Add new members. Remove comma at end. - - * config/obj-ecoff.c (ecoff_separate_stab_sections): New. - (ecoff_format_ops): Add new fields. Remove comma at end. - Mention inconsistency for emit_section_symbols. - - * config/obj-coff.h (c_dot_file_symbol): Constify declaration. - - * config/obj-coff.c (c_dot_file_symbol): Constify argument. - (coff_separate_stab_sections): New. - (coff_format_ops): Add new members. - - * config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New. - (obj_aout_s_set_other): New. - (obj_aout_s_set_desc): New. - (obj_aout_s_get_type): New. - (obj_aout_s_set_type): New. - (obj_aout_separate_stab_sections): New. - (aout_format_ops): New members added. Use obj_aout_process_stab, - not 0. Use obj_aout_sec_sym_ok_for_reloc, not 0. - (obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as - appropriate. - (obj_aout_line, obj_aout_weak, obj_aout_type): Ditto. - -2000-05-22 Alan Modra - - * config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment - for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN. - (md_estimate_size_before_relax): Ensure jumps to weak and - externally visible symbols are relocatable. - -Sat May 20 16:41:55 2000 Hans-Peter Nilsson - - * stabs.c (aout_process_stab): Make global. - (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate. - * read.h (aout_process_stab): Declare. - - * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]: - Generalize to *aout, *coff *elf. - * configure: Regenerated. - - * doc/internals.texi (Object format backend): Say - SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined. - - * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h. - * Makefile.in: Regenerated. - -2000-05-19 Catherine Moore - - * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined. - -2000-05-18 Alan Modra - - * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of - instruction to reflect change in re_assemble_*. - -Thu May 18 10:52:14 2000 Jeffrey A Law (law@cygnus.com) - - * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then - build PA64 ELF tools. - * configure: Rebuilt. - -2000-05-17 Alan Modra - - * Makefile.am: Regenerate dependencies. + * config/obj-coff.c: Add support for or32 targets. + * config/obj-coff.h: Add support for or32 targets. + * Makefile.am: Add support for or32 targets. * Makefile.in: Regenerate. + * NEWS: Mention support for OpenRISC. + * doc/Makefile.in: Regenerate. + * po/POTFILES.in: Regenerate. + * po/gas.pot: Regenerate. -2000-05-15 Nick Clifton - - * config/tc-arm.c (struct asm_psr): Add boolean field - distinguishing between CSPR and SPSR. Rename 'number' field - to 'field'. - (psrs): Rearrange contents to match new asm_psr structure. - (arm_psr_parse): Move next to psr_required_here. Make it - return an asm_psr structure. - (psr_required_here): Use asm_psr structure returned by - arm_psr_parse. - (do_msr): Reorganise to allow psr_required_here to be called - only once. - (md_undefined_name): Mark 'name' parameter as unused, since - the COFF target does not use it. - -2000-05-14 David O'Brien - - * config/te-386bsd.h: Clean up comments to adhere to the GNU coding - standards. - * config/te-aux.h: Likewise. - * config/te-dpx2.h: Likewise. - * config/te-go32.h: Likewise. - * config/te-hp300.h: Likewise. - * config/te-hppa.h: Likewise. - * config/te-i386aix.h: Likewise. - * config/te-ic960.h: Likewise. - * config/te-interix.h: Likewise. - * config/te-nbsd532.h: Likewise. - * config/te-pc532mach.h: Likewise. - * config/te-ppcnw.h: Likewise. - * config/te-psos.h: Likewise. - * config/te-sparcaout.h: Likewise. - * config/te-sun3.h: Likewise. - * config/te-sysv32.h: Likewise. - -2000-05-14 Alan Modra - - * config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16 - bits. Instead explicitly mask and sign extend. Do the 8 bit mask - and sign extend without an if statement. - (build_bytes): Likewise. - -2000-05-14 Kazu Hirata - - * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no - X_add_symbol L_32 case. - -2000-05-14 David O'Brien - - * config/te-freebsd.h: New file. - -2000-05-13 Alan Modra - - * asintl.h (gettext, dgettext, dcgettext, textdomain, - bindtextdomain): Replace defines with those from intl/libgettext.h - to quieten gcc warnings. - - * NEWS: Mention x86 .arch and -q. - - * config/tc-i386.c (quiet_warnings): New. - (md_assemble): Use quiet_warnings. - (md_parse_option): Set quiet_warnings from -q. - (md_show_usage): Mention -q, delete -m. - (flag_do_long_jump): Delete. - (md_parse_option): Remove -m. - (md_show_usage): Remove -m. - (md_create_long_jump): Remove useless flag_do_long_jump code. - - * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold - the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER. - -2000-05-13 Alan Modra - Alexander Sokolov - - * doc/c-i386.texi (i386-Arch): New section. - (i386-Syntax): Mention .intel_syntax and .att_syntax. - - * config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New. - (smallest_imm_type): Use smallest opcode for shift by one if cpu - architecture has been given and is not 486. - (set_cpu_arch): New. - (md_pseudo_table): Add .arch. - (md_assemble): Warn if cpu architecture has been given and an - unsupported instruction. - - * config/tc-i386.h (SMALLEST_DISP_TYPE): Delete. - Move operand_types bit defines after relevant template field. - (template): Add cpu_flags. - (Cpu*): Define. - (arch_entry): New. - -2000-05-12 Alexandre Oliva - - * config/tc-mn10300.h (md_end): Define. - (mn10300_finalize): Declare. - * config/tc-mn10300.c: Include dwarf2dbg.h. - (debug_line): Define. - (md_assemble): Generate dwarf2 line info. - (mn10300_finalize): New function. Finalize dwarf2 info. - -2000-05-11 Ulf Carlsson - - * config/tc-mips.c (md_estimate_size_before_relax): Use the - external version of the relocation for weak symbols. - -2000-05-08 David Mosberger - - * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed - frame size in units of 16 bytes, as required per SW Conventions manual. - (output_unw_records): Output info-block header as a dword to get - byte-order right. - -2000-05-08 Alan Modra - - * as.h: #include "file", not on files from ../include. - (as_abort, as_fatal): Add ATTRIBUTE_NORETURN. - * config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings. - (md_convert_frag): Add ATTRIBUTE_UNUSED. - (tc_coff_symbol_emit_hook): Ditto. - (OPTCOUNT): Cast to int to avoid compiler warning. - (md_begin): Fix signed/unsigned warnings. - -2000-05-08 Michael Sokolov - - * config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the - ABRANCH LONG case for a conditional branch on a 68000. - (md_estimate_size_before_relax): Likewise. Also handle - flag_short_refs correctly for ABRANCH, BCC68000, and DBCC. - (m68k-ip: case ABSL): Relax absolute references to 16-bit - PC-relative on all CPUs. - (md_estimate_size_before_relax): Likewise. - -2000-05-04 Alan Modra - - * as.c (parse_args): Just mention current year in printed - copyright message. - -2000-05-03 J.T. Conklin - - * config/tc-ppc.c (pre_defined_registers): Add entries for vector - unit registers. - (md_parse_option): Recognize -m7400. - -2000-05-03 Ian Lance Taylor - - * config/atof-ieee.c (gen_to_words): When adding carry back in, - don't permit lp to become less than the words array. - -2000-05-03 Rodney Brown - - config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2 - Fix little-endian case. - -2000-05-03 David O'Brien - - * as.c (parse_args): Update copyright. - -2000-05-03 Mark Elbrecht - - * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 - for the .bss section too. - -2000-05-02 Alan Modra - - * configure.in: Set em=linux for hppa-*-linux. - * configure: Regenerate. - * doc/Makefile.in: Regenerate with correct automake. - - * frags.c (frag_grow): Sanity check chunk_size. - - * config/obj-elf.h: #include "bfd.h" not - * config/obj-som.h: Likewise. - * config/obj-ieee.h: Likewise. - - * config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64. - - * config/tc-hppa.c (log2): Only compile when OBJ_SOM. - (md_pseudo_table): Fully initialise OBJ_ELF cases. - (fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate. - (pa_ip): low_sign_unext now returns via function value. Use - re_assemble_* instead of dis_assemble_* and - INSERT_FIELD_AND_CONTINUE combination. Don't call sign_unext - unnecessarily. - (md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate. - (md_section_align, md_parse_option, md_show_usage, - md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try, - pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry, - pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level, - pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum, - pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym, - pa_text): Likewise. - (md_apply_fix): Change type of new_val to offsetT. Delete w1, w2, - w, resulti. Add insn, val. Move bfd_get_32 and bfd_put_32 - outside of switch. Correct mask and shifting errors in case 10 - and case -11. In case 21, compare against signed range to suit - hppa_field_adjust changes. In case 12, use re_assemble_12. In - case 17 and case 22, use offsetT variable to properly check range. - Use re_assemble_* here too. - (evaluate_absolute): Change type of value to offsetT. Call - hppa_field_adjust to do the work for us. - (pa_parse_cmpb_64_cmpltr): Delete save_s. - (pa_parse_cmpib_64_cmpltr): Ditto. - (pa_build_unwind_subspace): Delete unused var subseg. Change type - of i to unsigned int. - (pa_type_args): Conditionally declare symbol if OBJ_SOM. - (pa_end_of_source): Return type is void. - -Mon May 1 08:54:23 2000 Catherine Moore - - * macro.c (macro_expand_body): Don't prepend macro number with zeroes. - -Mon May 1 14:19:39 2000 Denis Chertykov - - * config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places. - More comments added. - (md_begin): Removed "construct symbols for each register name". - Because register names conflicts with GCC generated function - names. - (avr_operand): Now constant numbers can be used as a register - identifiers (0 as r0, 31 as r31). - (md_assemble): use skip_space () before parsing instruction - operands. - -2000-05-01 Alan Modra - - * configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to - ensure all pe targets use bfd. Remove unnecessary bfd_gas=yes on - arm-*-netbsd* and arm-*-wince as this is set for all arm*. - * configure: Regenerate. - -2000-04-29 Andreas Jaeger - - * as.h: Correctly check GCC version. - -2000-04-26 David O'Brien - - * doc/as.1: Fix unbalanced brackets. - - * config/tc-i386.c (comment_chars): Don't use '/' as comment start if - TE_FreeBSD. - (line_comment_chars): Set to '/' if TE_FreeBSD. - -Tue Apr 25 11:02:02 2000 Jeffrey A Law (law@cygnus.com) - - * configure.in: Configury support for PA64 (currently disabled). - * configure: Rebuilt. - -2000-04-25 Machida Hiroyuki - - * config/tc-mips.c (s_change_sec): Use record_alignment, not - bfd_set_section_alignment. - -2000-04-25 Alan Modra - - * config/tc-i386.c (offset_in_range): Ensure shift counts are less - than 32. - -2000-04-24 Nick Clifton - - * doc/c-arm.texi (ARM Directives): Document behaviour of .align 0. - * doc/as.texinfo (Align): Include arm and strongarm in list of - targets that have the second form of the behaviour of the .align - directive. - -2000-04-24 Mark Klein +2002-01-30 Richard Sandiford - * config/obj-som.c: Terminate obj_pseudo_table. + * config/tc-sh.c (parse_reg): Fix end-of-word check for is, ix, iy + and mod. -Mon Apr 24 15:21:11 2000 Clinton Popetz +2002-01-29 Chris Demetriou - * as.c (parse_args): Allow md_parse_option to override -a listing - option. - * config/obj-coff.c (add_lineno): Change type of offset parameter - from "int" to "bfd_vma." - * config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine." - (ppc_mach, ppc_subseg_align, ppc_target_format): New. - (ppc_change_csect): Align correctly for XCOFF64. - (ppc_machine): New function, which discards "ppc_machine" line. - (ppc_tc): Cons for 8 when code is 64 bit. - (md_apply_fix3): Don't check operand->insert. Handle 64 bit - relocations. - (md_parse_option): Handle -a64 and -a32. - (ppc_xcoff64): New. - * config/tc-ppc.h (TARGET_MACH): Define. - (TARGET_FORMAT): Move to function. - (SUB_SEGMENT_ALIGN): Use ppc_subseg_align. + * config/tc-mips.c (tc_gen_reloc): Arrange for + BFD_RELOC_PCREL_HI16_S relocations to be output relative to + their LO16 parts, even for ELF. -Sun Apr 23 16:45:45 2000 Denis Chertykov +2002-01-29 Daniel Jacobowitz - * config/tc-avr.c: New AVR_ISA_ defined. - (md_assemble): Handle opcodes with optional operands (lpm,elpm). - (avr_operand): Handle 'a', 'v' and 'z' constraint letters needed - for `fmul', `movw' and `lpm R,Z' instructions. - (avr_operands): Warn if current opcode is a two-word instruction - and previous opcode was cpse/sbic/sbis/sbrc/sbrs. - (avr_opcodes): New commands added. - (REGISTER_P): Check 'a' and 'v' constraint letters. - (mcu_types): New MCU added. + * config/tc-i386.c: Protect definitions of true and false + from redefinition. -2000-04-22 Timothy Wall +2002-01-28 Jakub Jelinek - * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent - to "natval". - (operand_match): Conditionally insert default bit values for IMMU9. + * config/obj-elf.c (elf_frob_file_before_adjust): Remove symbols + made because of .weak, if they are neither defined nor used in any + way. -2000-04-14 Matthew Green +2002-01-27 Daniel Jacobowitz - * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support. - * configure: Rebuilt. + * configure: Regenerated. -Fri Apr 21 14:29:43 2000 Jeffrey A Law (law@cygnus.com) - Jason Eckhardt +2002-01-26 Hans-Peter Nilsson - * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats. + * doc/Makefile.am (install): Depend on install-info. + * doc/Makefile.in: Regenerate. - * config/tc-hppa.c (CHECK_ALIGN): New macro. - Added handling of new operand types l,y,&,fe,fE,fx. +2002-01-26 Nick Clifton -Fri Apr 21 13:20:53 2000 Richard Henderson - David Mosberger - Timothy Wall - Andrew MacLeod - Jim Wilson + * po/fr.po: Updated version - * Makefile.am (CPU_TYPES): Add ia64. - (TARGET_CPU_CFILES): Add config/tc-ia64.c. - (TARGET_CPU_HFILES): Add config/tc-ia64.h. - * Makefile.in: Rebuild. - * app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS. - * configure: Rebuild. - * configure.in: Recognize ia64 as cpu type. Set bfd_gas. - (ia64-*-elf*, ia64-*-linux-gnu*): New targets. - * expr.c (expr): Handle md_optimize_expr. - * read.c (LEX_HASH): Add comment. - * config/tc-ia64.c, config/tc-ia64.h: New files. +2002-01-24 Kazu Hirata -2000-04-21 Richard Henderson + * config/tc-h8300.c (check_operand): Don't print a warning + when a valid 24-bit address is given to a 16-bit address + operand. - * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when - bundling a non-delayed branch type instruction. +2002-01-24 Alexandre Oliva -2000-04-20 Alexandre Oliva + * config/tc-sh.c (sh_elf_suffix): Removed. + (sh_PIC_related_p, sh_check_fixup, sh_cons_fix_new, + sh_end_of_match, sh_parse_name): New functions. + (sh_elf_cons): Simplify. + (parse_exp): Reject misplaced PIC operands. + (md_undefined_symbol): Simplify. + (sh_fix_adjustable): Let @GOTOFF be adjusted. + (md_apply_fix3): Write @PLT and @GOTOFF addends in place. + (tc_gen_reloc): Move fixp subsy absolute value into addnumber. + Complain if subsy remains at the end. + * config/tc-sh.h (sh_parse_name, sh_cons_fix_new): Declare. + (md_parse_name, TC_CONS_FIX_NEW, O_PIC_reloc): Define. - * config/tc-mn10300.c (HAVE_AM30): Define. - (md_assemble): Use it. +2002-01-22 Alexandre Oliva -2000-04-19 Alan Modra + * config/tc-mn10300.c (xr_registers): Move `pc'... + (other_registers): ... here. - * config/obj-elf.c (obj_elf_change_section): Check for changed - section attributes. +2002-01-22 Alan Modra - * Makefile.am: (CPU_MULTI_VALID): Remove. - (MULTI_CPU_TYPES): Define. - (MULTI_CPU_OBJ_VALID): Define. - (DEPTC): Use the above. - (DEPOBJ): Same here. - (DEP2): And here. - Regenerate dependencies. + * Makefile.am: Run "make dep-am". * Makefile.in: Regenerate. + * gas/po/POTFILES.in: Regenerate. -2000-04-19 Michael Sokolov - - * Makefile.am (YACC, LEX): Get them from configure. - -2000-04-18 H.J. Lu (hjl@gnu.org) - - * config/tc-i386.c (offset_in_range): Use addressT instead of - bfd_vma for non-bfd assemblers. - -2000-04-17 Alan Modra - - * config/tc-i386.c (offset_in_range): Sign extend val so BFD64 - doesn't give spurious errors. - -2000-04-14 Michael Sokolov +2002-01-21 DJ Delorie - * as.h (SEEK_SET): Define if undefined. + * config/obj-coff.c (obj_coff_init_stab_section): Make the + stabstr_name allocation permanent, as it will be referenced from + the section hash. -2000-04-13 Alan Modra +2002-01-21 Jason Thorpe - * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on - constants, and don't assume offsetT is 32 bits. + * configure.in (ia64-*-netbsd*): New target. + * configure: Regenerate. -2000-04-12 Andrew Cagney +2002-01-21 Hans-Peter Nilsson - * config/tc-d10v.h: Include "write.h" to get definition of fixS. - (md_pcrel_from_section): Add prototype. - (d10v_fix_adjustable): Add prototype. - (d10v_force_relocation): Replace 'struct fix' with 'fixS'. + * doc/as.texinfo (Overview) : Add missing {} + to @dots call. + : Ditto. + * doc/c-arm.texi (ARM Options): Ditto. - * config/tc-d10v.c (md_apply_fix3): Add paren around &&. +2002-01-18 Richard Earnshaw -2000-04-12 Nick Clifton + * tc-arm.c (do_xsc_mia, do_xsc_mar, do_xsc_mra): Renamed from + do_mia, do_mar and do_mra respectively. + (do_mav_*): Renamed from do_c_*. + (mav_reg_required_here, mav_parse_offset): Renamed from + cirrus_reg_required_here and cirrus_parse_offset respectively. + (MAV_MODE?): Renamed from CIRRUS_MODE?. - * config/tc-d10v.c (find_opcode): Correctly calculate position of - symbol in frag chain. +2002-01-18 Richard Earnshaw + Keith Walker -2000-04-10 Alan Modra + * tc-arm.c (ARM_EXT_V5J, ARM_ARCH_V5TEJ): Define. + (insns): Add pattern for bxj instruction. + (do_bxj): New function. + (arm_cpus): Add arm926ej. + (arm_archs): Add armv5tej. - * config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT. - (fits_in_unsigned_byte, fits_in_unsigned_word): Ditto. - (fits_in_signed_word, smallest_imm_type): Ditto. - (md_assemble): Use an offsetT var to hold offsetT values, not a - long. - (offset_in_range): New. - (md_assemble): Use it. - (md_convert_frag): Change type of target_address, opcode_address, - and displacement_from_opcode_start to offsetT. - (md_create_short_jump): Change type of offset to offsetT. - (md_create_long_jump): Ditto. - (md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32. - (md_chars_to_number): Remove. - (output_invalid): Remove duplicate prototype. +2002-01-18 Richard Earnshaw -2000-04-09 Nick Clifton + * doc/c-arm.texi: Add new fpe options to list of supported flags. - * Makefile.am (CPU_TYPES): Add 'avr'. - (TARGET_CPU_CFILES): Add 'tc-avr.c'. - (TARGET_CPU_HFILES): Add 'tc-avr.h'. +2002-01-19 Keith Walker - * Makefile.in: Regenerate. - - * doc/as.texinfo: Add M32R documentation. - -Fri Apr 7 15:56:57 2000 Andrew Cagney - - * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add - --enable-build-warnings option. - * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. - * Makefile.in, configure: Re-generate. + * tc-arm.c (arm_fpus): Add fpe2 and fpe3. -2000-04-07 Nick Clifton +2002-01-18 Richard Earnshaw - * config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX - in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and - BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH. - (tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX. - (arm_force_relocation): Force relocations for - BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well. + * NEWS: Mention new ARM command-line options and VFP support. -Wed Apr 5 22:26:32 2000 J"orn Rennecke + * config/tc-arm.c (ARM_CEXT_XSCALE): Replaces ARM_EXT_XSCALE. All + uses changed. + (ARM_CEXT_MAVERICK): Similarly. + (ARM_ANY): Now means any core instruction. + (CPU_DEFAULT): Default to ARM_ANY. + (uses_apcs_26, atcps, support_interwork, uses_apcs_float) + (pic_code): Declare for all object types. Make type int. + (legacy_cpu, legacy_fpu, mcpu_cpu_opt, mcpu_fpu_opt, march_cpu_opt) + (march_fpu_opt, mfpu_opt): Declare. + (md_longopts): Tidy up conditional definitions. + (arm_opts, arm_cpus, arm_archs, arm_fpus, arm_extensions) + (arm_long_opts): New tables. + (arm_parse_cpu, arm_parse_arch, arm_parse_fpu): New functions. + (arm_parse_extension): New function. + (md_parse_option): Rewrite using new table-driven system. + (md_show_usage): Use new table-driven system. + (md_begin): Calculate cpu_variant from command line option data. + * doc/as.texinfo (ARM ISA options): Docuement new ARM-specific + command-line options. + * doc/c-arm.texi: Likewise. - * config/tc-sh.c (get_operands): There's no third operand if the - first operand is an immediate. +2002-01-18 Andreas Jaeger -Wed Apr 5 22:07:19 2000 J"orn Rennecke + * as.c (parse_args): Update year. - * config/tc-sh.c (immediate): Delete. - (sh_operand_info): Add immediate member. - (parse_reg): Use A_PC for pc. - (parse_exp): Add second argument 'op'. All callers changed. - (parse_at): Expect pc to be coded as A_PC. - Use immediate field in *op. - (insert): Add fourth argument 'op'. All callers changed. - (build_relax): Add second argument 'op'. All callers changed. - (insert_loop_bounds): New function. - (build_Mytes): Remove DISP_4. - Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT. - (assemble_ppi): Use immediate field in *operand. - (sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}. - (md_apply_fix): Likewise. - (tc_gen_reloc): Likewise. Check for a pcrel BFD_RELOC_SH_LABEL. +2002-01-17 Timothy Wall -Wed Apr 5 06:35:45 2000 Alexandre Oliva + * config/tc-tic54x.c (encode_address): Add a more informative + warning about incorrect syntax. - * config/tc-sparc.c (sparc_ip): Avoid string pasting. - -Tue Apr 4 19:27:50 2000 Hans-Peter Nilsson - - * internals.texi (CPU backend): Document - TC_CHECK_ADJUSTED_BROKEN_DOT_WORD. - -2000-04-04 Alan Modra +2002-01-17 Nick Clifton * po/gas.pot: Regenerate. - * as.c (show_usage): Restore translated part of bug string. - * gasp.c (show_usage): Likewise. - - * Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep. - (DEP): Quote when passing vars to sub-make. Use "mv -f" rather - than move-if-change. - (DEP1): Modify for "gcc -MM". - (DEPTC): Likewise. - (DEPOBJ): Likewise. - (DEP2): Likewise. - (CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA. - Update dependencies. - * Makefile.in: Regenerate. - -2000-04-03 Alexandre Oliva - - * config/tc-mn10300.c (md_pseudo_table): Use constant names. - (md_begin): Likewise. - (HAVE_AM33): New macro. - (md_assemble): Use it. Match r_regs and xr_regs only if - HAVE_AM33. - -2000-04-03 Alan Modra - - * as.h: #include "bin-bugs.h" - * as.c (show_usage): Use REPORT_BUGS_TO. - * gasp.c: #include "bin-bugs.h" - (show_usage): Use REPORT_BUGS_TO. - - * config/tc-sparc.c (md_show_usage): Add a trailing newline. - -Mon Apr 3 13:56:03 2000 Hans-Peter Nilsson - - * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined, - call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after - adjustments. - -2000-04-03 Alan Modra - - * config/tc-i386.c (i386_immediate): Don't assume a constant - immediate is necessarily 16 bits when in 16 bit code mode. - (md_assemble): Instead set guess_suffix here after we have checked - registers. - -2000-04-02 Richard Henderson - - * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit - quantities. Correct right shift sign extension. - (build_insn): Make `number' unsigned long. Mask top 6 bits of - 32-bit value when shifting into place. - -2000-04-01 Ian Lance Taylor - - * app.c: Add ATTRIBUTE_UNUSED as needed. - * config/tc-ppc.c: Likewise. - (ppc_size): Make unsigned long. - (ppc_insert_operand): Add casts to avoid warnings. - -2000-03-31 Nick Clifton - - * config/tc-d10v.h (md_flush_pending_output): Define. - -2000-03-29 Nick Clifton - - * config/tc-sh.h (SEG_NAME): New macro: return the name of a - segment. Works for both BFD_ASSEMBLER and others. - (SUB_SEGMENT_ALIGN): Use SEG_NAME. - -2000-03-29 Nick Clifton - - * listing.c (LISTING_LHS_WIDTH): Default depends on - LISTING_WORD_SIZE. - (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH. - -2000-03-27 Ian Lance Taylor - - * config/tc-sh.c (md_show_usage): Use backslash before newline in - string literal. +2002-01-17 Nick Clifton -2000-03-27 Alan Modra + * macro.c (get_any_string): Add no-c-format comment to prevent + confusion when translating string. + * gasp.c (get_any_string): Add no-c-format comment to prevent + confusion when translating string. + +2002-01-16 Thiemo Seufer + Johannes Stezenbach + * config/tc-mips.c (percent_op): Ensure longer percent_op's are + matched before the shorter ones. + (my_getSmallParser): Fix handling of nested parentheses in + percent_op's. Code cleanup. + (my_getPercentOp): New function, code from my_getSmallParser. + (my_getSmallExpression): Fix handling of closing parentheses. + Code cleanup. Better comments. - * config/tc-avr.h (TC_HANDLES_FX_DONE): Define. +2002-01-16 Nick Clifton - * config/tc-avr.c (mcu_types): Add missing initialiser. - (md_pcrel_from_section): Add prototype. - (avr_operand): Remove redundant test of unsigned < 0. - (avr_cons_fix_new): Ensure exp_mod_pm zero on function exit. - -2000-03-27 Denis Chertykov - - * config/tc-avr.c: New file for AVR support. - * config/tc-avr.h: Likewise. - * configure.in: Add AVR support. - * configure: Regenerate. - -2000-03-26 Timothy Wall - - * gasp.c (macro_op): Add new argument to check_macro call. - Macro structure definitions moved to macro.h - * sb.h: Add argument to prototype for input_scrub_include_sb. - * input-scrub.c (input_scrub_include_sb): Allow disabling of sb - nesting checks with an additional flag. - (struct input_save): Add flag to indicate whether current sb - should be checked for proper macro/conditional nesting. - (input_scrub_push/pop): Save/restore nest check flag. - (input_scrub_next_buffer): Ditto. Also call end of macro hook if - defined. - * macro.c (check_macro): Allow caller to retrieve parsed macro - information if a pointer is provided. This information may be - used by the new macro hooks. - * macro.h: Update prototype for check_macro. Macro struct - definitions moved here from macro.c/gasp.c. - * read.c (read_a_source_file): Add parameter to check_macro call, - and pass macro info to the macro hook, if defined. - (input_scrub_insert_line): New. Allow insertion of a line of - characters into the input stream. - (input_scrub_insert_file): New. Allow insertion of an arbitrary - file into the input stream. - (s_include): Use input_scrub_insert_file. - * internals.texi: Document new macro hooks. - * as.h: New prototypes added. - -2000-03-26 Alan Modra - - * config/tc-i386.c: Don't start any as_bad or as_warn message with - an initial capital letter. - (i386_index_check): Reindent. - -2000-03-19 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc - relative branches. - -2000-03-17 Thomas de Lellis - - * config/tc-arm.c (do_t_adr): Flag "adr Rd,label" - instruction operand bad if Rd > 7 when generating - thumb instructions. Prevents for example, - "adr r12,label" from silently failing and generating - the wrong instruction. - -2000-03-17 Nick Clifton - - * config/tc-arm.c (md_apply_fix3): Handle same-section relocations - that have a destingation >= 0x400000. - Fix compile time warning messages. - -Thu Mar 16 23:45:16 2000 J"orn Rennecke - - * config/tc-sh.c (md_begin): When encountering insn that are - not supported by the current arch, only change the name if - its contents are the same as prev_name. - (get_specific): If the the architecture doesn't match, fail. - -Thu Mar 16 21:18:13 2000 J"orn Rennecke - - * config/tc-sh.c (IDENT_CHAR): Define. - (parse_reg): Use it instead of isalnum. Put r[0..7]_bank operand - matching back where it came from. - -Thu Mar 16 20:58:10 2000 J"orn Rennecke - - * config/tc-sh.c (md_show_usage): Add description of -dsp. - -2000-03-15 Jonathan Larmour - - * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before - normal operands. - -2000-03-15 Kazu Hirata - - * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate. - -Mon Mar 13 22:02:59 2000 Hans-Peter Nilsson - - * expr.c (operand) [case 'f']: When testing if '0f' can start a - floating-point-number, make sure 'f' is in FLT_CHARS. - -Sat Mar 11 00:01:39 2000 Hans-Peter Nilsson - - * read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition. - (s_lcomm_internal): Use it. - * doc/internals.texi (CPU backend): Document it. - * config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3 - bytes. - -2000-03-10 Geoffrey Keating - - * config/tc-mips.c (mips_ip): Don't put stuff in .rodata - when embedded-pic. - - * config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic - implementation doesn't have special handling for switch - statements. - (macro_build): Allow for code in sections other than .text. - (macro): Likewise. - (mips_ip): Likewise. - (md_apply_fix): Do pc-relative relocation madness for MIPS ELF. - Don't perform relocs if we will be outputting them. - (tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative - relocations. Allow BFD_RELOC_16_PCREL_S2 relocs when - embedded-pic. + po/tr.po: New file: Turkish translation. + configure.in (LINGUAS): Add "tr". + configure: Regenerate. -2000-03-09 Catherine Moore +2002-01-15 Richard Earnshaw - * config/tc-m32r.c (m32r_fix_adjustable): Look up the - relocation type based on the entry in the fixup structure. - Put S_IS_EXTERN processing back in. + Support for VFP instructions + * tc-arm.c (CP_WB_OK, CP_NO_WB): New defines. + (cp_address_required_here): New argument wb_ok. When false, do not + accept write-back forms of addressing. Change all callers. + (FPU_VFP_EXT_NONE, FPU_VFP_EXT_V1xD, FPU_VFP_VFP_V1) + (FPU_VFP_EXT_V2): Define. + (FPU_ARCH_VFP, FPU_ARCH_VFP_V1xD, FPU_ARCH_VFP_V1, FPU_ARCH_VFP_V2): + Define in terms of above. + (vfp_dp_reg_pos, vfp_sp_reg_pos, vfp_ldstm_type): New enums. + (vfp_reg): New struct. + (vfp_regs): New array of registers. + (insns): Add VFP instructions. + (sn_table): New array of VFP single-precision register names. + (dn_table): New array of VFP double-precision register names. + (all_reg_maps): Add the new register tables. + (arm_reg_type): Add new values for above. Increase RET_TYPE_MAX. + (vfp_sp_reg_required_here, vfp_dp_reg_required_here, do_vfp_sp_monadic) + (do_vfp_dp_monadic, do_vfp_sp_dyadic, do_vfp_dp_dyadic) + (do_vfp_reg_from_sp, do_vfp_sp_reg2, do_vfp_sp_from_reg) + (do_vfp_reg_from_dp, do_vfp_reg2_from_dp, do_vfp_dp_from_reg) + (do_vfp_dp_from_reg2, vfp_psr_parse, vfp_psr_required_here) + (do_vfp_reg_from_ctrl, do_vfp_ctrl_from_reg, do_vfp_sp_ldst) + (do_vfp_dp_ldst, vfp_sp_reg_list, vfp_dp_reg_list, vfp_sp_ldstm) + (vfp_dp_ldstm, do_vfp_sp_ldstmia, do_vfp_sp_ldstmdb, do_vfp_ldstmia) + (do_vfp_dp_ldstmdb, do_vfp_xp_ldstmia, do_vfp_xp_ldstmdb) + (do_vfp_sp_compare_z, do_vfp_dp_compare_z, do_vfp_dp_sp_cvt) + (do_vfp_sp_dp_cvt): New functions. + (md_begin): Set soft-float flag for appropriate VFP work. + (md_atof): Handle VFP-format doubles. + (md_parse_option): Handle VFP command-line options. + (md_show_usage): Display VFP command-line options. + +2002-01-15 Richard Earnshaw + + * tc-arm.c (md_parse_option): Tidy up setting of cpu_variant for + various command line options. + +2002-01-15 Nick Clifton + + * config/tc-xstormy16.c: (xstormy16_fix_adjustable): Do not fix + vtinherit relocs. + (xstormy16_md_apply_fix3): Do not return a value. -2000-03-08 H.J. Lu (hjl@gnu.org) +2002-01-14 Richard Earnshaw - * Makefile.am (install-exec-tooldir): Depend on - install-exec-bindir for parallel make. - * Makefile.in: Regenerated. + * tc-arm.c (md_longopts): On targets that aren't bi-endian, support + the -EL/-EB option that matches the target's endianness. + (md_parse_option): Likewise. -2000-03-06 Nick Clifton +2002-01-14 Richard Earnshaw - * config/tc-m32r.c (struct md_longopts): Add -m32r command line - switch. - (md_parse_option): Parse -m32r command line switch - disable m32rx - compatability. - (md_show_usage): Document new option. + * tc-arm.c (md_longopts): Fix misplaced #endif -- the -oabi option + is not dependent on ARM_BI_ENDIAN. - * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi. - * doc/Makefile.in: Regenerate. - * doc/c-m32r.texi (M32R-Opts): Document new command line switch. +2002-01-14 Richard Earnshaw -2000-03-02 Michael Meissner + * tc-arm.c (all error messages): Normalize capitalization of messages. - * config/tc-d30v.c (check_range): Remove code that incorrectly - sign extended values where bits < 32. + * tc-arm.h (md_operand): Delete define. + * tc-arm.c (in_my_get_expression): New static variable. + (my_get_expression): Set and clear it. + (md_operand): New function. If called from my_get_expression + put the error in inst.error. + (output_inst): Now takes argument of instruction being assembled. + Print it out with any error message. + (do_ldst, do_ldstv4, thumb_load_store): Fault attempt to use a store + with '=' syntax. + (end_of_line): Don't update inst.error if it is already set. + +2002-01-11 Richard Earnshaw + + * tc-arm.c ((do_ldst): Fix handling an immediate expression pseudo + op that can be translated into a mvn instruction. + +2002-01-11 Steve Ellcey + + * gas/config/tc-ia64.h (MD_FLAGS_DEFAULT): New Macro for + setting default md.flags. + (SHT_INIT_ARRAY): New elf special section used by HP-UX. + (SHT_FINI_ARRAY): New elf special section used by HP-UX. + * gas/config/tc-ia64.c (setup_unwind_header): Add support + for 32 bit unwind info blocks. + (generate_unwind_image): Add support for different types + of unwind images (32 bits and/or big-endian). + (ia64_init): Use MD_FLAGS_DEFAULT to set md.flags. + (ia64_target_format): Add support for hpux target formats. + (ia64_gen_real_reloc_type): Add support for FUNC_IPLT_RELOC. + (ia64_elf_section_type): Add support for SHT_INIT_ARRAY and + SHT_FINI_ARRAY elf section types. + +2002-01-10 Richard Earnshaw + + * tc-arm.c (struct reg_entry): Move before prototypes. + (int_register, cp_register, fp_register): Delete. + (reg_table): Delete. Replaced with ... + (rn_table, cp_table, cn_table, fn_table, mav_mvf_table) + (mav_mvd_table, mav_mvfx_table, mav_mvdx_table, mav_mvax_table) + (mav_dspsc_table): ... one table per register set. + (arm_reg_hsh): Delete. + (struct reg_map): New structure. + (all_reg_maps): New array. + (enum arm_reg_type): New enums. + (build_reg_hsh): New function. + (insert_reg_alias): Use hash table passed by caller. Adjust all + callers. + (create_register_alias): New function, split out from ... + (md_assemble): ... here. + (md_begin): Build new register hash tables. + (arm_reg_parse): New argument for the hash table to search. Adjust all + callers. + (arm_reg_parse_any): New function. + (co_proc_number): Look up the processor number in the processor hash + table. + (cirrus_regtype): Delete. + (cirrus_register, cirrus_mvf_register, cirrus_mvd_register) + (cirrus_mvfx_register, cirrus_mvdx_register, cirrus_mvax_register) + (ARM_EXT_MAVERICKsc_register): Delete. + (do_c_binops_1, do_c_binops_2, do_c_binops_3): Delete. + (do_c_binops_1[a-o], do_c_binops_2[a-c], do_c_binops_3[a-d]): New + functions. + (do_c_triple_4, do_c_triple_5): Delete. + (do_c_triple_4[ab], do_c_triple_5[a-h]): New functions. + (do_c_quad_6): Delete. + (do_c_quad_6[ab]): New functions. + (do_c_binops, do_c_triple, do_c_quad, do_c_shift, do_c_ldst): Rework + arguments to use new register parsing methods. + (cirrus_reg_required_here): Likewise. + (insns): Reclassify cirrus maverick worker functions. + (cirrus_valid_reg): Delete. + +2002-01-07 Jason Thorpe + + * configure.in (sh*le): Set cpu_type=sh and endian=little. + (sh*-*-netbsdelf*): New target. + * configure: Regenerate. + * tc-sh.h: Update copyright years. + (TARGET_FORMAT): Add version for TE_NetBSD. + +2002-01-07 Nick Clifton + + * read.c (emit_expr): Do not allow 'size' or 'nbytes' to go + negative. + +2002-01-06 Alan Modra + + * config/tc-m68k.h (md_prepare_relax_scan): Rewrite. + * config/tc-m68k.c (md_relax_table): Add md_prepare_relax_scan comment. + +2002-01-05 Daniel Jacobowitz + + * tc-mips.c (mips_cprestore_valid): New flag. + (mips_frame_reg_valid): New flag. + (macro) [M_JAL_2]: Check both flags. + [M_JAL_A]: Likewise. + (s_cprestore): Set mips_cprestore_valid. + (tc_get_register): If setting mips_frame_reg, set + mips_frame_reg_valid and clear mips_cprestore_valid. + (s_mips_ent): Clear both flags. + (s_mips_end): Clear both flags. + +2002-01-05 Alan Modra + + * write.c (write_object_file): Make use of bfd_section_list_remove. + * config/obj-ecoff.c (ecoff_frob_file): Likewise. + * config/tc-mmix.c (mmix_frob_file): Likewise. -2000-03-02 H.J. Lu (hjl@gnu.org) +2002-01-04 Jason Thorpe - * configure.in: Support --enable-targets=all on ia32. + * configure.in (i386-*-netbsdelf*): Collapse target into... + (i386-*-netbsd*): ...this. Add support for x86-64. * configure: Regenerated. -2000-03-01 Nick Clifton - - * gasp.c (do_align): Remove bogus check of alignment value. - -2000-02-27 Thomas de Lellis - - * config/obj-elf.c (elf_frob_symbol): Remove code which when - TC_PPC was defined forced the type of a symbol with no other type - to be BSF_OBJECT. - -2000-02-27 Hans-Peter Nilsson - - * doc/internals.texi (CPU backend): Mention that - line_separator_chars do not break up comments. Fix typos for - LEX_AT and LEX_NAME descriptions. Document operands for - TC_EQUAL_IN_INSN, md_operand and md_section_align. Correct - description of md_create_short_jump usage. Document argument for - md_undefined_symbol. - -2000-02-27 Jakub Jelinek - - * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option. - (md_parse_option): Handle it. - (md_show_usage): Document it. - -2000-02-27 Ian Lance Taylor - - * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an - opcode, for the instruction `pal19'. From Andrea Arcangeli - . - -2000-02-26 Alan Modra - - * config/tc-i386.c (i386_immediate): Move constant operand sizing - from here.. - (md_assemble): To here, before template operands are matched. - Also ensure a constant immediate is sign extended when we know the - size is at most 16 bits. This is to catch cases like "add - $0xffc0,%ax" where we don't know the size, and thus that the - immediate can be represented as Imm8S until after parsing the - register operand. - (i386_displacement): Similarly sign extend 16 bit constant - displacements. - (md_assemble): Relax 16-bit jump constant range check to suit sign - extended displacements. - -2000-02-26 Andreas Jaeger - - * doc/c-mips.texi (MIPS Opts): Fix typo in last patch. - -2000-02-25 Alan Modra - - * config/tc-i386.c (md_assemble): Don't swap intersegment jmp and - call operands when intel_syntax. - (intel_float_operand): Return 2 for "fi...". - (i386_operand_modifier): Change "DWORD PTR" test to suit above. - Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...". Revert - earlier "SHORT" change. - (md_assemble): When determining suffix from Regs, exclude - InOutPortReg. - -2000-02-24 Nick Clifton - - * configure: Add arm-wince, mips-pe and sh-pe targets. - * configure: Regenerate. - - * config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and - sh-pe targets. - (TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to - "pe-mips" for the mips-pe target. - - * config/tc-arm.c (insns): Change displacement encoded in BL - and B instructions if the target port is arm-wince. - (do_ldst): Do not bias the relocation offset if the target - port is arm-wince. - (md_pcrel_from): Add in missing relocation offset bias if the - target os arm-wince. - - * config/tc-mips.c (mips_target_format): Support COFF flavour. - (md_begin): Disable -G support for mips-pe target. - (md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32. - * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for - COFF flavour. - - * config/tc-sh.c (md_begin): sh-pe target is little endian. - * config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD - assembler, just set the alignment to 4. - - * config/te-wince-pe.h: New file for WinCE targets. Define - TE_WINCE. - -2000-02-25 Alan Modra - - * config/tc-i386.c (md_assemble): Swap segments too for intel mode - string instructions. - (i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT. - (i386_intel_memory_operand): After finding a segment override, - check again for no `[' before looking for a displacement. Bomb if - more than one displacement rather than silently discarding the - second and subsequent ones. Free strings malloc'd by - build_displacement_string. - -2000-02-24 Catherine Moore - - * config/obj-som.c (obj_pseudo_table): Add "weak". - (obj_som_weak): New routine. - -2000-02-24 Alan Modra - - * config/tc-i386.c (union i386_op): New. - (struct _i386_insn): Delete disps[], imms[], regs[]. Add op[]. - Throughout file replace occurences of disps[n], imms[n], regs[n] - with equivalent op[n].disps, op[n].imms, op[n].regs. Simplify - intel mode operand swapping. Add assert in regKludge and - fake_zero_displacement code. Test i.types[n] when outputting - displacements and immediates. Combine output of Disp16 with - Disp32. - (md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes - when in intel mode by (not) reversing fsub and fdiv operands - before the template search. This fails for single operand - shorthand forms of the instruction, and if UNIXWARE_COMPAT is - undefined. Instead fix the base_opcode after we've found the - template. Move base_opcode xor with found_reverse_match from - opcode output code to before this fix so we test for the correct - opcodes. - (md_assemble): Don't use strcmp when deciding to ignore the suffix - check in intel mode. Instead compare opcodes. - - * config/tc-i386.h (TC_RELOC): Delete. - * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC - with equivalent call to reloc. - - * as.h (flag_m68k_mri): Move declaration after target include, and - only declare when TC_M68K defined. Define as zero otherwise. - (LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0. - * app.c (scrub_m68k_mri): Declare only when TC_M68K defined. - Define as zero otherwise. - (do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined. - (struct app_save): Declare scrub_m68k_mri only when TC_M68K. - (app_push, app_pop): Save scrub_m68k_mri only when TC_M68K. - (do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than - testing whether defined. - * cond.c (ignore_input): Use NO_PSEUDO_DOT directly. - * expr.c (operand): #ifdef unused case labels when TC_M68K undefined. - * read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly - rather than testing whether defined. - (s_mri): Set flag_m68k_mri only when TC_M68K defined. - (parse_mri_cons): Declare and use only when TC_M68K. - * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1. - * config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1. - * config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1. - - * NEWS: Mention IBM 370 support. - -2000-02-23 Richard Henderson - - * config/tc-i386.c (md_assemble): When swapping operands for - intel_syntax, assume everything that's not Imm or Disp is a - register. - -2000-02-23 Linas Vepstas - - * config/tc-i370.c, config/tc-i370.h: New files. - * Makefile.am: Add support for Linux/IBM 370. - * configure.in: Likewise. - * app.c (do_scrub_begin): Don't lex single quote when TC_I370. - * config/obj-elf.c: Include elf/i370.h - (obj_elf_section): Don't do anything special for flag_mri if TC_I370. - - * Makefile.in: Regenerate. - * configure: Regenerate. - - * doc/c-i370.texi: New file. - * doc/all.texi: Include it. - * doc/as.texinfo: And here. - * doc/Makefile.am(CPU_DOCS): Add c-i370.texi. - * doc/Makefile.in: Regenerate. - -2000-02-19 Michael Meissner - - * config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to - determine if an instruction can be used in parallel with an ADDppp - or SUBppp instruction. - -2000-02-22 Andrew Haley - - * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64. - -2000-02-22 Andrew Haley - - * config/tc-mips.c (mips_gp32): New variable. - (macro_build) Use mips_gp32. - (mips_ip): Ditto. - (md_longopts): Add "-mgp32" and "-mgp64". - (md_parse_option): Add OPTION_GP32 and OPTION_GP64. - - (OPTION_M7900): Change offset - (OPTION_NO_M7900): Ditto. - -2000-02-22 Alexandre Oliva - - * config/obj-coff.c (add_lineno): Accept non-positive lineno with - warning, and bump it to 1. - -2000-02-22 Ian Lance Taylor - - From Brad Lucier : - * dwarf2dbg.c (print_stats): Add cast to force printf argument to - match format. - -2000-02-21 Catherine Moore - - * config/tc-mips.c (MF_HILO_INSN): Define. - (mips_7000_hilo_fix): Declare. - (append_insn): Conditionally insert nops after an mfhi/mflo insn. - (md_parse_option): Check for 7000_HILO_FIX options. - (OPTION_M7000_HILO_FIX): Define. - (OPTION_NO_M7000_HILO_FIX): Define. - * doc/c-mips.texi (-mfix7000): Describe. - -2000-02-21 Alan Modra - - * listing.c (print_lines): Remove unused variable `end'. - - * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc - type for JumpInterSegment output. Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. - (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for - reloc_type when BFD_ASSEMBLER. Move common code out of switch - statement and quell signed vs. unsigned comparison warning. - -2000-02-18 Nick Clifton - - * config/tc-d10v.c (find_opcode): Add a symbol's value to - the computed frag offset, rather than overwriting it. - -Thu Feb 17 00:11:08 2000 J"orn Rennecke - - * config/tc-sh.c ("elf/sh.h"): Include. - (sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables. - (md.begin): Initialize target_arch. - Only include opcodes in has table that match selected architecture. - (parse_reg): Recognize register names for sh-dsp. - (parse_at): Recognize post-modify addressing. - (get_operands): The leading space is now optional. - (get_specific): Remove FDREG_N support. Add support for sh-dsp - arguments. Update valid_arch. - (build_Mytes): Add support for SDT_REG_N. - (find_cooked_opcode): New function, broken out of md_assemble. - (assemble_ppi, sh_elf_final_processing): New functions. - (md_assemble): Use find_cooked_opcode and assemble_ppi. - (md_longopts, md_parse_option): New option: -dsp. - * config/tc-sh.h (elf_tc_final_processing): Define. - (sh_elf_final_processing): Declare. - -Fri Feb 11 14:21:51 2000 Jeffrey A Law (law@cygnus.com) - - * config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create - the unwinder subspace. Save the current seg/subseg before creating - the new seg/subseg. - -2000-02-10 Nick Clifton - - * config/tc-mcore.c (INST_BYTE0): Redefine to handle big and - little endian targets. - (INST_BYTE1): Redefine to handle big and little endian - targets. - (cpu_type): New type: Select between M340 and M210. - (parse_psrmod): New function: Parse the PSRCLR and PSRSET - instructions of the M340. - (md_assemble): Add support for the MULSH and OPSR classes of - instructions. - (md_atof): Add support for little endian targets. - (md_parse_option): Add support for -EL, -EB and -mcpu command - line switches. - (md_convert_frag): Add support for little endian targets. - (md_apply_fix3): Add support for little endian targets. - (md_number_to_chars): Add support for little endian targets. - -2000-02-10 Timothy Wall - - * read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is - defined, use it to verify the symbol just read should be a label. - -2000-02-10 Timothy Wall - - * app.c (do_scrub_chars): Handle "||" for parallel instructions - when DOUBLEBAR_PARALLEL is defined. Avoid stripping whitespace - around colons when KEEP_WHITE_AROUND_COLON is defined. - * doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL - and KEEP_WHITE_AROUND_COLON. - -2000-02-08 Timothy Wall - - * read.c (s_rept): Call do_repeat, which abstracts the repeat - logic. - (do_repeat): New. Abstract repeat logic so that a "break" can be - implemented. - (end_repeat): New. Provide support for a "break" out of the - repeat loop. - * read.h: Add prototypes for new functions. - -2000-02-08 Timothy Wall - - * doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro. - * as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero). - * expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is - non-zero. - -2000-02-08 Timothy Wall - - * read.c: Added elseif to directives table. - * read.h: Added prototype for s_elseif. - * doc/as.texinfo: Added description for elseif. - * cond.c (s_elseif): New function - -2000-02-04 Timothy Wall - - * listing.c (print_lines): Remove conditionals causing bug in - listings. - -2000-02-03 Timothy Wall - - * as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER - default values. - * frags.c (frag_new): Calculate fr_fix in octets - (frag_now_fix) Return offset as target address offset (bytes). - (frag_now_fix_octets) New - Return offset in octets (8-bit - quantities). - * frags.h: Added prototype for frag_now_fix_octets(). - Distinguish between octets and bytes in field descriptions. - * listing.c (calc_hex): Account for octets vs bytes when - printing addresses/offsets. - (print_lines) Ditto. Also, if LISTING_WORD_SIZE is not 1, and - target is little-endian, print the octets in a word in big-endian - order so that the display looks like a proper hexadecimal number, - instead of having the octets reversed. - * read.c (do_align): When recording alignment, alignment power - should be in terms of target bytes (minimum addressible unit) - instead of octets. - (do_org) Convert ORG target address (byte) argument into an - octet offset when generating a variable fragment. - * symbols.c (resolve_symbol_value): Symbol final value - converted to a target address offset (bytes) from its octet offset. - * config/obj-coff.c (coff_frob_symbol): Symbol target address - offset (bytes) is adjusted by the frag offset (octets) converted - to bytes. - (coff_frob_section) Section alignment power is in terms of bytes; - convert it to an octet alignment power when calculating size (and - size mask) in octets. Don't modify the section size in order to - "align" it for TI COFF, since that format has a different method - for storing alignment information. - -2000-02-01 Timothy Wall - - * stabs.c (generate_asm_file): Escape backslashes in stabs file - entries, matching the way GCC generates them. If not escaped, the - filename is encoded incorrectly. - -2000-01-31 Nick Clifton - - * config/tc-arm.c (reg_table): Add support for ATPCS register - naming conventions. - -2000-01-31 Geoff Keating - - * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if - already defined. - * config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES): - New macro. - * config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag - of a symbol when we really care about its value. - -2000-01-19 Chandra Chavva - - * config/tc-mcore.c (md_assemble): Give warning message if - operands passes to instruction are more than the spec. - -2000-01-27 Thomas de Lellis - - * config/tc-arm.c (armadjust_symtab): If the assembler is in - Thumb mode but the label seen was not declared as '.thumb_func' - then set the ST_INFO type to STT_ARM_16BIT mode. This allows - correct disassembly of Thumb code bounded by non function labels. - -2000-01-27 Alan Modra - - * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c - Add dependencies for e-i386aout.o. Fix 2 comment lines. - - * Makefile.in: Same here. - Update copyright. - - * configure.in: Set bfd_gas for i386-aout when primary target - is bfd. Handle i386aout emulation. Don't use te_file=multi, as - we may need the primary te_file. Remove incorrect comment. - - * configure: Regenerate. - - * config/e-i386aout.c: New file. - - * as.c (USE_EMULATIONS): Move to before print_version_id. - (struct emulation): Add i386aout. - (show_usage): Split text strings. Reformat -a text. Add --em - help. - Update copyright. - - * obj.h (struct format_ops): Add s_get_other and s_get_desc. - (aout_format_ops): New. - Update copyright. - - * read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT - preprocessor conditional and add aout USE_EMULATIONS tests. - (read_a_source_file): Don't pass error strings to printf as - format arg. - Update copyright. - - * gasp.c (exp_get_abs): Don't pass error strings to printf as - format arg. - (do_data): Same here. - (process_file): And here. - Update copyright. - - * symbols.c (colon): Rewrite "already defined" fatal message - code for aout with USE_EMULATIONS. - Update copyright. - - * config/obj-aout.c (OBJ_HEADER): Define. - (obj_pseudo_table): Rename to aout_pseudo_table. Init all - fields of sentinel. - (obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE, - S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi - forms here. - (obj_aout_type): Expand S_SET_OTHER here too. - (obj_read_begin_hook): Remove. - (aout_pop_insert): New. - (obj_aout_s_get_other): New. - (obj_aout_s_get_desc): New. - (aout_format_ops): New. - Update copyright. - - * config/obj-aout.h (obj_pop_insert): Define so non-multi usage - gets aout_pseudo_table. - (aout_pseudo_table): Declare. - (obj_read_begin_hook): Define. - Update copyright. - - * config/obj-coff.c (obj_pseudo_table): Rename to - coff_pseudo_table. - (coff_pop_insert): Use coff_pseudo_table. - (coff_sec_sym_ok_for_reloc): Remove. - (coff_format_ops): Add 0 entries for s_get_size, s_set_size, - and comment all zero entries and remove #if 0 code. - Update copyright. - - * config/obj-coff.h (obj_pop_insert): Define. - (coff_pseudo_table): Declare. - Update copyright. - - * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for - s_get_size, s_set_size. Comment all zero entries. - Update copyright. - - * config/obj-elf.c (elf_s_get_other): New function. - (obj_read_begin_hook): Rename to elf_obj_read_begin_hook. - (obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook. - (elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and - comment. - (obj_elf_parse_section_letters): Don't pass error strings to - printf as format arg. - Update copyright. - - * config/obj-elf.h (ECOFF_DEBUGGING): Define when - OBJ_MAYBE_ECOFF. - (elf_s_get_other): Declare. - (S_GET_OTHER) Define as elf_s_get_other if not already - defined. - (S_SET_OTHER): Only define when not already defined. - (elf_obj_read_begin_hook): Declare. - (obj_read_begin_hook): Define. - (elf_obj_symbol_new_hook): Declare. - (obj_symbol_new_hook): Define. - Update copyright. - - * config/obj-multi.h: Add copyright header and protect against - multiple inclusion. Add * to all function pointers. - (OBJ_HEADER): If defined, include it rather than other defines - in this file. - (obj_frob_file_after_relocs): Test for NULL. - (obj_symbol_new_hook): Here too. - (obj_sec_sym_ok_for_reloc): And here. - (S_GET_OTHER): Define. - (S_GET_DESC): Define. - (ECOFF_DEBUGGING): Remove as it's done in obj-elf.h - (OBJ_MAYBE_ELF): Update comment. - - * config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to - OBJ_AOUT preprocessor conditional and handle emulation by - testing OUTPUT_FLAVOR. - (i386_displacement): Here too. - (md_section_align): Similarly here. - (i386_target_format): Conditionally compile when more than one - of OBJ_MAYBE_{ELF,COFF,AOUT} defined. Add aout case. - (i386_immediate): Fix error message for aout BFD_ASSMBLER. - (i386_displacement): Here too. - Update copyright. - - * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*. - Define TARGET_FORMAT for aout only when not multi. - Update copyright. - - * config/te-multi.h: Delete file as it's identical to te-generic.h - -2000-01-15 Alan Modra - - * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete. - * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to - LONG_MNEM_SUFFIX. - - * config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to - DWORD_MNEM_SUFFIX. - * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some - comments. - -2000-01-13 Clinton Popetz - - * config/tc-mips.c (mips_do_align): New function. - * config/tc-mips.h (md_do_align): Define. - -2000-01-10 Philip Blundell - - * doc/c-arm.texi (ARM Options): Fix typo. - (ARM-Chars): Correct description of `#'. Mention that `;' is a - line separator for Linux. - * doc/as.texinfo (Comments): Mention the ARM. - -2000-01-10 Philip Blundell - - * configure.in (arm*-*-conix*): New target. - (arm*-*-linux-gnu*): Match instead of arm-*-linux* and - armv*-*-linux-gnu. - * configure: Regenerate. +2002-01-03 matthew green -2000-01-03 Martin v. Loewis + * config/tc-ppc.c (md_parse_option): BookE is not Motorola specific. - * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos. - (obj_elf_visibility): New function. +2002-01-02 Nick Clifton - * doc/as.texinfo (Visibility): New node: document visibility - pseudo ops. + * config/tc-m68k.c (md_estimate_size_before_relax): Test for a + NULL frag link. -For older changes see ChangeLog-9899 +For older changes see ChangeLog-0001 + +Local Variables: +mode: change-log +left-margin: 8 +fill-column: 74 +version-control: never +End: diff -uprN binutils-2.11.92.0.12.3/gas/ChangeLog-0001 binutils-2.11.93.0.2/gas/ChangeLog-0001 --- binutils-2.11.92.0.12.3/gas/ChangeLog-0001 Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/ChangeLog-0001 Sun Feb 3 11:22:31 2002 @@ -0,0 +1,7703 @@ +2001-12-31 Richard Henderson + + * config/tc-ia64.c (errata_nop_necessary_p): Prototype. + (make_unw_section_name): Constify local variables. + + * config/tc-ia64.c (has_suffix_p): New. + (note_register_values): Use it instead of strstr. + +2001-12-31 Jeffrey A Law (law@redhat.com) + + * config/tc-hppa.c (pa_ip): Handle new 'c' mode completers, + 'X', 'M', and 'A'. + +2001-12-21 Jakub Jelinek + + * config/tc-sparc.h (TC_PARSE_CONS_EXPRESSION): Define. + (sparc_cons): Provide prototype. + * config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_*_PCREL and + BFD_RELOC_SPARC_PLT{32,64}. Enumerate for which relocs + reloc->addend = fixp->fx_addnumber shouldn't be done instead of + enumarating for which pc relative ones it should be done. + (sparc_cons_special_reloc): New variable. + (sparc_cons): New function. + (cons_fix_new_sparc): Use sparc_cons_special_reloc. + * testsuite/gas/sparc/pcrel.s: New test. + * testsuite/gas/sparc/pcrel.d: Expected output. + * testsuite/gas/sparc/pcrel64.s: New test. + * testsuite/gas/sparc/pcrel64.d: Expected output. + * testsuite/gas/sparc/plt.s: New test. + * testsuite/gas/sparc/plt.d: Expected output. + * testsuite/gas/sparc/plt64.s: New test. + * testsuite/gas/sparc/plt64.d: Expected output. + * testsuite/gas/sparc/sparc.exp: Add pcrel, pcrel64, plt and plt64 + tests. + +2001-12-20 Thiemo Seufer + Daniel Jacobowitz + + * config/tc-mips.c (file_mips_gp32): Initialize to invalid value. + (file_mips_fp32): Likewise. + (md_begin): Compatibility handling for -mipsN option. + +2001-12-20 Alexandre Oliva + + * config/tc-sh.c (parse_at): Reject @(r0) and @(r0,). + +2001-12-20 matthew green + + * config/tc-ppc.c (md_parse_option): Make -maltivec default + to generating PowerPC instructions. + +2001-12-20 Jason Thorpe + + * configure.in (mips-dec-netbsd*): Delete. + * configure: Regenerate. + + * configure.in (arm-*-netbsdelf*): Add target. + * configure: Regenerate. + +2001-12-18 Nick Clifton + + * config/tc-mips.h (TC_HANDLE_FX_DONE): Remove redundant + definition. + +2001-12-18 Niibe Yutaka + + * configure.in (assign object format): Bug fix for setting + endian. + * configure: Regenerate. + +2001-12-18 matthew green + + * configure.in (m68k-*-netbsdelf*): New target. + (m68k-*-netbsd*): Also include ELF support. + (m68k-*-netbsdaout*): New alias for m68*-*-netbsd*. + * configure: Regenerate. + +2001-12-18 Thiemo Seufer + + * gasp.c (main): Protoype. + +2001-12-17 Richard Henderson + + * config/tc-alpha.c (alpha_handle_align): Encode unop with RB as $sp. + +2001-12-17 Nick Clifton + + * cgen.c: Add prototype for queue_fixup. + (gas_cgen_parse_operand): Move initilisastion of errmsg to avoid + possible longjmp corruption. + * cgen.h: Add prototype for gas_cgen_md_operand. + +2001-12-15 Alan Modra + + * config/obj-elf.c (obj_elf_init_stab_section): References are + kept to section name strings. Don't alloca them! + +2001-12-12 Alexandre Oliva + + * config/tc-d10v.c (get_operands): Mark OPERAND_PLUS after + OPERAND_ATSIGN as O_absent. + +2001-12-07 Geoffrey Keating + Richard Henderson + + * configure.in: Add support for xstormy16. + * configure: Regenerated. + * Makefile.am: Add support for xstormy16. + * Makefile.in: Regenerated. + * config/tc-xstormy16.c: New file. + * config/tc-xstormy16.h: New file. + +2001-12-06 Richard Earnshaw (rearnsha@arm.com) + + * tc-arm.c (do_arit, do_cmp, do_mov, do_ldst, do_ldstt, do_ldmstm) + (do_branch, do_swi, do_adr, do_adrl, do_empty, do_mul, do_mla) + (do_swap, do_msr, do_mrs, do_mull, do_ldstv4, do_bx, do_blx) + (do_bkpt, do_clz, do_lstc2, do_cdp2, do_co_reg2, do_smla, do_smlal) + (do_smul, do_qadd, do_pld, do_ldrd, do_co_reg2c, do_cdp, do_lstc) + (do_co_reg, do_fpa_ctrl, do_fpa_ldst, do_fpa_ldmstm, do_fpa_monadic) + (do_fpa_dyadic, do_fpa_cmp, do_fpa_from_reg, do_fpa_to_reg, do_mia) + (do_mar, do_mra, do_c_binops, do_c_binops_1, do_c_binops_2) + (do_c_binops_3, do_c_triple, do_c_triple_4, do_c_triple_5, do_c_quad) + (do_c_quad_6, do_c_dspsc, do_c_dspsc_1, do_c_dspsc_2, do_c_shift) + (do_c_shift_1, do_c_shift_2, do_c_ldst, do_c_ldst_1, do_c_ldst_2) + (do_c_ldst_3, do_c_ldst_4, do_branch25): Delete redundant argument, + FLAGS. + (struct asm_opcode): Adjust parms field accordingly. + (md_assemble): Don't pass dummy second argument when calling worker + functions. + (build_arm_ops_hsh): Add prototype + (BAD_FLAGS): Delete. + +2001-12-05 Richard Earnshaw + + * tc-arm.c (struct asm_opcode): Delete comp_suffix and flags. Add + cond_offset. Rename variants->variant. + (insns): Adjust for new format. Explicitly code each variant that + takes flags. Remove temporary instructions. + (struct arm_it): Remove redundant field suffix. + (s_flag, ldr_flags, str_flags, byte_flag, cmp_flags, ldm_flags) + (stm_flags, lfm_flags, sfm_flags, round_flags, fix_flags, except_flag) + (long_flag): Delete. + (struct asm_flg): Delete. + (LONGEST_INST): Delete. + (V4_STR_BIT): Define. + (struct thumb_opcode): Rename variants->variant. + (do_empty): Renamed from do_nop. + (ldst_extend): Delete argument hwse. Split code for half-word and + signed byte instructions to ... + (ldst_extend_v4): ... here. + (ld_mode_required_here): Use ldst_extend_v4. + (do_ldrd): Simplify now that this is only called for ldrd. No + need to test for XScale, which was wrong anyway. Don't reject r12 + as a target register. Add test that ldrd doesn't update an index + register. + (do_pld): Don't allow post-indexed or write-back addressing modes. + Adjust call to ldst_extend. + (do_adr): Split code for adrl to ... + (do_adrl): ... here. + (do_cmp): No need to fold in COND_BIT. + (do_ldst): Simplify. Split code for ldrt/strt into do_ldstt. Split + code to handle half-word and signed byte instructions to ... + (do_ldstv4): ... here. + (do_ldstt): New function. Handle load/store with translate. + (do_ldmstm): Write feature modification bits directly into + inst.instruction. + (do_fpa_ldst): Remove suffix handling code. + (do_fpa_dyadic, do_fpa_monadic, do_fpa_from_reg): Likewise. + (do_fpa_ldmstm): Type of access is now held in inst.instruction. + (build_arm_ops_hsh): New function. + (md_begin): Call it. Don't build the ARM opcode directly. + (md_assemble): Simplify ARM instruction handling. + +2001-12-05 Arati Dikey + + * tc-sh.c (parse_at): Corrected incorrect op->type selection due + to missing 'else'. + +2001-12-04 Alexandre Oliva + + * config/tc-d10v.c (write_2_short): Don't skip dummy fixups, so + that we can tell which operand refers to the insn put in the L + container and mark it as such, so that the relocation type can be + adjusted. + +2001-12-04 Thiemo Seufer + + * config/tc-mips.c (mips_cpreturn_offset): Better comment. + (load_register): Better error message. Cast away signedness + mismatches. Add casts needed for varargs. + (load_address): Replace checks of HAVE_64BIT_ADDRESS with dbl. + Remove superfluous casts. + (macro): Cast away signedness mismatches. Remove superfluous casts. + (s_cpload): Fix wrong comment. + (s_mips_weakext): Standardize output message. + (get_number): Likewise. + +2001-12-04 Thiemo Seufer + + * config/tc-mips.c (append_insn): Add jump address range overflow + check. + +2001-12-04 Thiemo Seufer + + * config/tc-mips.c (md_parse_option): Fix comment. Allow -mabi option + for ELF only. + (show): Document -mabi option. + +2001-12-03 Jeroen Dobbelaere + + * config/tc-arm.c (md_parse_option): Only clear cpu part when + specifying 'xscale' cpu (don't change the fpu part). + +2001-12-04 Alexandre Oliva + + * config/tc-d10v.c (find_opcode): Reject SP operand if + OPERAND_NOSP flag is present. + +2001-12-03 Eric Christopher + + * config/tc-mips.c (tc_gen_reloc): One missed BFD_RELOC_MIPS_GPREL. + +2001-12-02 Thiemo Seufer + + * config/tc-mips.c (macro_build): Replace BFD_RELOC_MIPS_GPREL + by BFD_RELOC_GPREL16. + (load_address): Likewise. + (macro): Likewise. + (md_apply_fix): Likewise. Replace BFD_RELOC_MIPS_GPREL32 by + BFD_RELOC_GPREL32. + (s_gpword): Replace BFD_RELOC_MIPS_GPREL32 by BFD_RELOC_GPREL32. + (tc_gen_reloc): Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. + *config/tc-mips.h: Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16. + +2001-11-29 Alexandre Oliva + + * config/tc-d10v.c (get_operands): Emit OPERAND_PLUS for + prefix `+'. + + * config/tc-d10v.c (find_opcode): Reject non-SP operand if + flags requires SP. + +2001-11-29 Arati Dikey + + * tc-sh.c (parse_at): Removed case-sensitivity of index register + R8, R9. + +2001-11-28 Jakub Jelinek + + * write.c (adjust_reloc_syms): Mark SEC_MERGE symbols as used + in reloc if it has non-zero addend. + * config/tc-alpha.c (tc_gen_reloc): Reinstall SEC_MERGE check. + * config/tc-sparc.c (md_apply_fix3): Likewise. + +2001-11-28 Andreas Schwab + + * as.c (parse_args): Call md_after_parse_args if defined. + * config/tc-ia64.h (md_after_parse_args): Define. + * config/tc-ia64.c (ia64_after_parse_args): Reject --gstabs. + * doc/internals.texi (CPU backend): Document md_after_parse_args. + +2001-11-23 Jakub Jelinek + + * config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test. + * write.c (adjust_reloc_syms): Don't handle relocs against + SEC_MERGE section symbols specially. + (fixup_segment): Likewise. + +2001-11-21 Richard Sandiford + + * config/tc-mips.c (mips_need_elf_addend_fixup): New, extracted from... + (md_apply_fix3): ...here. Don't prevent the symbol value being + subtracted twice from GPREL addends. + (tc_gen_reloc): Add the symbol value to a GPREL addend if it was + subtracted by the previous function. + +2001-11-20 Nick Clifton + + * config/tc-avr.c (md_apply_fix3): Fix typo introduced by + md_apply_fix3 change. + +2001-11-20 Ben Elliston + + * config/tc-m88k.c (md_apply_fix3): Match local variable `val' to + usage after md_apply_fix3 cleanups. + +2001-11-19 Hans-Peter Nilsson + + * doc/c-mmix.texi: Use texinfo 4 features. + (MMIX-mmixal): Fix typo. + +2001-11-17 Hans-Peter Nilsson + + * config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in + val assignment. + +2001-11-16 Michael Snyder + + * stabs.c (stabs_generate_asm_lineno): Remember file and line number + from one call to the next, and eliminate consecutive duplicates + (thereby emitting only one line symbol per source line). + * dwarf2dbg.c (dwarf2_gen_line_info): Ditto. + +2001-11-16 Alan Modra + + * config/tc-m68k.c (md_apply_fix3): Change val back to a signed type. + +2001-11-15 H.J. Lu + + * config/tc-hppa.c (md_apply_fix3): Fix a typo. + +2001-11-15 H.J. Lu + + * config/tc-alpha.c (md_apply_fix3): Fix a typo. + +2001-11-15 Nick Clifton + + * write.c (fixup_segment): Remove references to md_apply_fix and + TC_HANDLE_FX_DONE. + * cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances + of md_apply_fix to md_apply_fix3. + Make all md_apply_fix3 functions void. + * cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of + MD_APPLY_FIX3 and TC_HANDLE_FX_DONE. + * doc/internals.texi: Update references to md_apply_fix3. + * tc.h: Update prototype for md_apply_fix3. + +2001-11-15 Alan Modra + + * config/tc-i386.h (md_end): Define. + (i386_elf_emit_arch_note): Declare. + (CpuUnknown): Delete. + * config/tc-i386.c (default_arch): Constify. + (smallest_imm_type): Remove CpuUnknown test. + (md_assemble): Don't bother checking cpu_arch_flags non-zero. + (i386_elf_emit_arch_note): New function. + + * po/POTFILES.in: Regenerate. + +2001-11-15 Thiemo Seufer + + * config/tc-mips.c (mips_ip): Re-allow %hi() op for non-ELF assembler. + +2001-11-15 Alan Modra + + * frags.c (frag_grow): Revert last change. + + * dwarf2dbg.c (get_frag_fix): Align last frag size. + + * config/tc-ppc.c (ppc_insert_operand): Pass (ppc_cpu | ppc_size) + to operand->insert. + (md_assemble): Likewise. + +2001-11-12 Nick Clifton + + * frags.c (frag_grow): Use frag_make_room() to grow the + obstack. + +2001-11-14 Nick Clifton + + * config/tc-sparc.c (md_apply_fix3): Do not remove the symbol's + value from the addend for fixups against local symbols in + SEC_MERGE sections - it was not added in, in the first place. + +2001-11-11 Timothy Wall + + * write.c (relax_segment): Convert symbol address into an octet + offset prior to adding to the frag address, which is an octet + offset. Add comments to that effect. + * config/tc-tic54x.c: Fix bugs causing tests to fail. + * config/tc-tic54x.h: Ditch PARAMS macro. + +2001-11-13 Alan Modra + + * config/obj-elf.c (obj_elf_version): Ensure terminating NUL is + put in note section. Use sizeof instead of hard-coded constants. + +2001-11-12 Thiemo Seufer + + * config/tc-mips.c (support_64bit_objects): Define for OBJ_ELF only. + (md_longopts): Allow OPTION_MABI for ELF compilation only. RE-allow + OPTION_GP32, OPTION_GP64, OPTION_FP32 for non-ELF compilation. + Sort options a bit more logical. + (md_parse_option): Allow OPTION_32, OPTION_N32, OPTION_N64, + OPTION_MABI only for elf targets. + +2001-11-12 Thiemo Seufer + + * config/tc-mips.c (set_at): Add cast needed for varargs. + (load_register): Likewise. + (macro): Likewise. Some code reformatting. + (macro2): Add cast needed for varargs. + (mips16_macro): Likewise. + +2001-11-12 Thiemo Seufer + + * config/tc-mips.c (md_assemble): Remove superflous casts. + (append_insn): Likewise. + (mips16_macro_build): Likewise. + (macro): Likewise. + (mips16_ip): Likewise. + (s_cpload): Likewise. + (mips_relax_frag): Likewise. + +2001-11-12 Thiemo Seufer + + * config/tc-mips.c (mips_abi_level): Move in front of + mips_set_options. + (mips_set_options): Add members gp32, fp32, abi. + (file_mips_gp32): New flag. + (file_mips_fp32): New flag. + (mips_opts): Initialize the new members. + (mips_gp32): Remove. + (mips_fp32): Remove. + (HAVE_32BIT_GPRS): Use the new values from mips_opts. + (HAVE_32BIT_FPRS): Likewise. + (HAVE_NEWABI): Likewise. + (HAVE_64BIT_OBJECTS): Likewise. + (md_begin): Likewise. Save default (file) values. + (md_parse_option): Use the new values from mips_opts. + (s_mipsset): Likewise. Fix logic to keep the ABI selection if + possible. Let .set mipsN work together with .set push/pop. + Enhance error messages. + (mips_elf_final_processing): Use file_mips_* for header processing. + +2001-11-09 Marek Michalkiewicz + + * config/tc-avr.c (mcu_types): Update for new devices. + +2001-11-09 Stephane Carrez + + * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for + the page man title. + * doc/Makefile.in: Rebuild. + * doc/as.texinfo: Do not put man SEEALSO in document; + Use @command for commands, @option for options; Reorganize usage + to clearly identify target specific options. + +2001-11-08 Thiemo Seufer + + * config/tc-mips.c (mips_force_relocation): Remove duplicate code. + +2001-11-06 Thiemo Seufer + + * config/tc-mips.c (my_getSmallParser): Fix small parser bug. + +2001-11-05 Martin Schwidefsky + + * config/tc-s390.c (tc_s390_force_relocation): Force all relocations + that need the global offset table. + (md_apply_fix3): Add code to undo opertions done in fixup_segment + triggered by TC_FORCE_RELOCATION. + * config/tc-s390.h (TC_FORCE_RELOCATION): Replace macro code with + a call to function tc_s390_force_relocation. + (TC_FIX_ADJUSTABLE): Define. + +2001-11-04 Chris Demetriou + + * configure.in (mips-*-netbsd*): Add support for target. + * configure: Regenerate. + +2001-11-02 Nick Clifton + + * configure.in (ALL_LINGUAS): Add 'fr'. + * configure: Regernate. + * po/fr.po: New file. Obtained from the translation project web + site. + +2001-11-02 Richard Earnshaw + + * tc-arm.c: Re-arrange prototypes by architecture. + (insns): Re-arrange instructions by archtitecture. Pld instruction + is part of ARMv5E. + (tinsns): blx and bkpt are part of ARMv5T. + (do_fp_{ctrl,ldst,ldstm,dyadic,monadic,cmp,from_reg,to_reg}): Rename + to do_fpa_*. All callers changed. + + * tc-arm.c (insns): Add two temporary instructions to handle + ldrd/strd. + +2001-11-01 Stephane Carrez + + * config/tc-m68hc11.c (build_jump_insn): Allocate worst case storage + for bra/bsr and use frag_variant(), this ensure that the possible + 16-bit BFD_RELOC_16 will be in the same frag. + +2001-10-31 Chris Demetriou + + * config/tc-mips.c (HAVE_32BIT_ADDRESSES): If compiling embedded + PIC code, assume pointers the same size as GPRs. + (macro): In M_LA_AB handling for embedded PIC code, support + "la $treg,foo-bar($breg)". In load/store handling + (label ld_st) support " $treg,-($breg)" + which is used by the compiler for switch statements. + In load/store double multi-instruction macro handling + (label ldd_std) add a comment that no special handling + is currently done for embedded PIC. + (mips_ip): In 'o' (16-bit offset) case, only accept 16 + bit offsets. + +2001-10-31 Richard Earnshaw + + General cleanup of feature definitions. + * tc-arm.c (ARM_EXT_LONGMUL, ARM_EXT_HALFWORD, ARM_EXT_THUMB): Delete. + (ARM_2UP, ARM_ALL, ARM_3UP, ARM_6UP): Delete. + (FPU_CORE, FPU_FPA10, FPA_FPA11, FPU_ALL, FPA_MEMMULTI): Delete. + (ARM_EXT_V{1,2,2S,3,3M,4,4T,5T,5ExP}): New defines. + (ARM_EXT_V{5,5E}): Synchronize with above. + (ARM_ARCH_V*): Define a complete set in terms of above features. + (ARM_{1,2,3,250,6,7,8,9,STRONG}): Define in terms of architecture. + (FPU_FPA_EXT_V[12]): Define. + (FPU_ARCH_FPE, FPU_ARCH_FPA): Define in terms of above. + (FPU_ANY): Define. + (FPU_DEFAULT): Default to FPA. + (CPU_DEFAULT): For XScale, this is now just ARM_ARCH_XSCALE; for + Thumb, this is now ARM_ARCH_V5T. + (insns): Rework for new feature defines. + (tinsns): Likewise. + (opcode_select, do_ldst, md_begin, md_parse_option): Likewise. + +2001-10-31 NIIBE Yutaka + + * configure.in: Handle sh*eb-*-linux* and sh*-*-linux*. + * configure: Regenerate. + * Makefile.in: Regenerate. + * doc/c-sh.texi (SH Options): Added descriptions. + +2001-10-30 Hans-Peter Nilsson + + * configure.in: Update for MMIX port. + * Makefile.am: Ditto. Regenerate dependencies. + * Makefile.in: Regenerate. + * configure: Regenerate. + * config/tc-mmix.h, config/tc-mmix.c: New files. + * doc/Makefile.am (CPU_DOCS): Add c-mmix.texi + * doc/Makefile.in: Regenerate. + * doc/all.texi: @set MMIX. + * doc/as.texinfo: Ditto. Add MMIX gas manpage option overview. + Include c-mmix.texi. + * doc/c-mmix.texi: New file. + +2001-10-24 Chris Demetriou + + * config/tc-mips.c (hilo_interlocks, cop_interlocks): Make + these evaluate to true if mips_arch indicates SB-1. + +2001-10-23 Alan Modra + + * as.c (parse_args): Print the date as well for --version. + +2001-10-20 Chris Demetriou + + * config/tc-mips.c (md_show_usage): Print "sb1" for Broadcom + SB-1 CPU for consistency. + (mips_cpu_info_table): Tweak comment about SB-1. + +2001-10-20 H.J. Lu + + * config/tc-arm.c (do_c_shift): Use ISDIGIT instead of isdigit. + (cirrus_parse_offset): Likewise. + +2001-10-19 Nick Clifton + + * config/tc-arm.c: Restore line_comment_chars. + +2001-10-18 Nick Clifton + + * config/tc-arm.c (comment_chars): Remove semi-colon accidentally + added to the list. + +2001-10-18 Hans-Peter Nilsson + + * write.c (fixup_segment): Handle fixups for SEC_MERGE sections as + for undefined symbols. + +2001-10-17 Chris Demetriou + + * doc/as.texinfo (MIPS ISA options): Added accidentally + omitted "-mips64" option to list of options. + +2001-10-17 matthew green + + * config/tc-ppc.c (md_show_usage): Add missing -maltivec, -m7400, + -m7410, -m7450 and -m7455 options. + +2001-10-17 Alan Modra + + * config/tc-ppc.c (PPC_HA, PPC_HIGHERA, PPC_HIGHESTA): Simplify. + (ppc_size): Select PPC_OPCODE_64 if 64 bit. + (md_begin): Don't set ppc_size here. + (ppc_target_format): Test ppc_size as well as BFD_DEFAULT_TARGET_SIZE. + (md_shortopts): Constify. + (md_longopts): Likewise. + (md_longopts_size): Likewise. + (ppc_elf_suffix): Only allow 64-bit relocs when ppc_size specifies + 64-bit opcodes. + (ppc_machine): Explain why this function is a nop. + +2001-10-17 Alan Modra + + * bit_fix.h: Comment typo fix. + * config/tc-mips.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-arc.c (arc_code_symbol): Remove unnecessary test. + + * configure.in (MIPS_STABS_ELF): AC_DEFINE in only one place so + that autoheader doesn't duplicate config.in entries. + (DEFAULT_ARCH): Ditto. + * configure: Regenerate. + * config.in: Regenerate. + +2001-10-16 Alan Modra + + From Andrew Pines + * config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes. + +2001-10-16 NIIBE Yutaka , + Hans-Peter Nilsson + + * config/tc-sh.c (shl): Remove. + (big): New function. + (little): Remove shl handling. Emit error for endian mismatch. + (md_show_usage): Add description of -big. + (md_parse_option): Handle OPTION_BIG. Remove shl handling. + (OPTION_BIG): Add. + (md_pseudo_table): Add .big. + (md_longopts): Add -big. + (md_begin): Don't set target_big_endian here. + * config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove. + (LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian. + (shl): Remove. + * configure.in (endian): Default is big. + (sh-*-pe*): Little endian. + (cpu_type): Set sh for target sh*. + * configure: Regenerate. + +2001-10-15 Thiemo Seufer + + * config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI + relocations. + +2001-10-13 Nick Clifton + + * config/tc-arm.c: Replace CONST with const. + + * cgen.c: Tidy up formatting. + +2001-10-12 matthew green + + * config/tc-ppc.c (md_parse_option): New -m7410, -m7450 and -m7455 + flags, equivalent to -m7400. New -maltivec to enable AltiVec + instructions. New -mbook64 and -mbooke/-mbooke32 flags to enable + 64-bit and 32-bit BookE support, respectively. Change -m403 and + -m405 to set PPC403 option. + (md_show_usage): Adjust for new options. + * doc/all.texi: Set PPC. + * doc/as.texinfo: Add PPC support and pull in c-ppc.texi. + * doc/c-ppc.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-ppc.texi. + * doc/Makefile.in: Regenerate. + +2001-10-12 Nick Clifton + + * read.c (s_bad_endr): New function. Issues a warning message + about a bad use of the .rept pseudo op. + (po_table[]): Add .endr. + * read.h: Prototype s_bad_endr. + + * CONTRIBUTORS: Update contact email address. + +2001-10-11 Kazu Hirata + + * config/tc-alpha.c: Fix comment typos. + * config/tc-cris.c: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-mn10200.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-v850.c: Likewise. + +2001-10-11 Kazu Hirata + + * app.c: Fix comment typos. + * bit_fix.h: Likewise. + * expr.c: Likewise. + * itbl-ops.c: Likewise. + +2001-10-11 Nick Clifton + + * input-file.c: Include safe-ctype.h. + (input_file_open): Use ISSPACE instead of isspace. + +2001-10-10 Thiemo Seufer + + * config/tc-mips.c (mips_cpreturn_offset): New variable. + (mips_cpreturn_register): Likewise. + (mips_gp_register): Likewise. + (s_cpsetup): New function prototype. + (s_cplocal): Likewise. + (s_cpreturn): Likewise. + (s_gpvalue): Likewise. + (mips_pseudo_table): Add .cpsetup, .cplocal, .cpreturn, .gpvalue + pseudo-ops. + (macro): Don't warn about .cprestore for NewABI. + (md_pcrel_from): Code cleanup. + (mips_force_relocation): Force output of some NewABI relocations even + without a defined symbol. + (s_cpload): Ignore .cpload for NewABI. + (s_cpsetup): Handle .cpsetup. + (s_cplocal): Handle .cplocal. + (s_cprestore): Ignore .cprestore for NewABI. + (s_cpreturn): Handle .cpreturn. + (s_gpvalue): Handle .gpvalue. + (s_cpadd): Ignore .cpadd for NewABI. + (nopic_need_relax): Take g_switch_value into account as gp + optimization. + (tc_gen_reloc): Don't handle BFD_RELOC_MIPS_{CALL,GOT}* for NewABI. + +2001-10-10 Thiemo Seufer + + * config/tc-mips.c (my_getSmallParser): New function prototype. + (small_ex_type): Named this enum, more return values for + my_getSmallExpression. + (mips_ip): Allow SPC and HT between arguments. Handle some NewABI + triple relocations. Protect some parts with ifdef OBJ_ELF. + (percent_op_match): New struct, lookup table for %some_reloc(). + (my_getSmallParser): New function, parses nested percent_ops also. + (my_getSmallExpression): Rewite to support nested percent_ops. + +2001-10-10 Thiemo Seufer + + * config/tc-mips.c + (load_address): Support both 32- and 64-bit addresses. + (macro): Call load_register correctly. Expand 64-bit loads ans stores. + (macro2): Call load_address correctly. + +2001-10-09 Christian Groessler + + * config/tc-z8k.c: Include opcodes/z8k-opc.h after bfd.h + since z8k-opc.h now uses the PARAMS macro. + +2001-10-09 Aldy Hernandez + + * config/tc-arm.c: Change MAVERIK to MAVERICK. + +2001-10-09 Alan Modra + + * config/obj-elf.c: Make use of elf_group_name and elf_next_in_group + throughout file. + (obj_elf_change_section): Rename "group" to "group_name". + (obj_elf_section): Likewise. + (elf_frob_file): Don't use sec->lineno for SHT_GROUP section to store + first member section; Instead use elf_next_in_group. + +2001-10-09 Alan Modra + + * config/obj-elf.c: (obj_elf_change_section): Add "group" param. + Set elf_section_data group from it. Warn if group name changed. + (obj_elf_parse_section_letters): Parse 'G' too. + (obj_elf_section): Parse group name. + (struct group_list): New. + (build_group_lists): New function. + (elf_frob_file): Create SEC_GROUP section(s). + + * config/obj-elf.c: (elf_copy_symbol_attributes): Zap trailing + whitespace. + +2001-10-08 Aldy Hernandez + + * doc/arm/c-arm.texi (ARM Options): Add arm9e documentation. + + * config/tc-arm.c (ARM_EXT_MAVERIK): New macro. + (cirrus_regtype): New enum. + (LONGEST_INST): Change to 10. + (CIRRUS_MODE1): New. + (CIRRUS_MODE2): New. + (CIRRUS_MODE3): New. + (CIRRUS_MODE4): New. + (CIRRUS_MODE5): New. + (CIRRUS_MODE6): New. + (insns): Add cirrus dsp instructions. + (ARM_EXT_MAVERIKSC_REG): New. + (cirrus_register): New. + (cirrus_mvf_register): New. + (cirrus_mvd_register): New. + (cirrus_mvfx_register): New. + (cirrus_mvdx_register): New. + (cirrus_mvax_register): New. + (ARM_EXT_MAVERIKsc_register): New. + (reg_table): Add cirrus registers. + (cirrus_valid_reg): New. + (cirrus_reg_required_here): New. + (do_c_binops_1): New. + (do_c_binops_2): New. + (do_c_binops_3): New. + (do_c_triple_4): New. + (do_c_triple_5): New. + (do_c_quad_6): New. + (do_c_dspsc_1): New. + (do_c_dspsc_2): New. + (do_c_shift_1): New. + (do_c_shift_2): New. + (do_c_ldst_1): New. + (do_c_ldst_2): New. + (do_c_ldst_3): New. + (do_c_ldst_4): New. + (do_c_binops): New. + (do_c_triple): New. + (do_c_quad): New. + (do_c_dspsc): New. + (do_c_shift): New. + (cirrus_parse_offset): New. + (do_c_ldst): New. + (md_parse_option): Add arm9e. + (md_show_usage): Same. + +2001-10-08 Tom Rix + + * config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to + location of next .bf + * config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx. + +2001-10-07 Alan Modra + + * config/obj-elf.c: Standardize error/warning messages - don't + capitalise, no final period or newline, don't say "ignoring" for + as_bad messages. In some cases, change the wording to that used + elsewhere for similar messages. + (obj_elf_section_name): New function, split out from .. + (obj_elf_section): .. here. Correctly mask off SHF_MERGE if + entsize not specified. + +2001-10-05 Jakub Jelinek + + * doc/as.texinfo: Document M and S ELF section flags. + +2001-10-05 Alan Modra + + * subsegs.c (subseg_text_p): Return 0 for absolute section. + * read.c (do_align): If in absolute section, warn about and ignore + non-zero fill pattern. + +2001-10-05 Alexandre Oliva + + * config/tc-mn10300.c (tc_gen_reloc): Don't free + reloc->sym_ptr_ptr if it's not allocated. + +2001-10-04 Thiemo Seufer + + * config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a + relocation triple. + (prev_insn_fixp): Likewise. + (append_insn): Changed prototype to accept a relocation pointer. + (imm_reloc): Make it an array. + (offset_reloc): Likewise. + (md_assemble): Handle triple relocations. + (append_insn): Likewise. Add handling for some NewABI relocations. + (mips_no_prev_insn): Handle triple relocations. + (macro_build): Likewise. Add handling for some NewABI relocations. + Move handling for the 'u' case to append_insn(). + (mips16_macro_build): Handle triple relocations. + (macro_build_lui): Likewise. Don't handle _gp_disp as special symbol + for NewABI. + (mips_ip): Handle triple relocations. + (mips16_ip): Likewise. + (mips_force_relocation): Force handling of triple relocations + without symbols for NewABI. + (md_apply_fix): Add handling for some NewABI relocations. + +2001-10-05 Alan Modra + + * config/tc-i386.c (parse_register): If not producing code for + x86_64, reject x86_64 register name matches. + (md_assemble): Remove now redundant check for x86_64 regs. + +2001-10-04 Alan Modra + + * config/tc-ppc.c (md_assemble ): Test ppc_size as well + as BFD_DEFAULT_TARGET_SIZE. + (ppc_tc): Likewise. + (ppc_is_toc_sym): Likewise. + (md_apply_fix3): Likewise. + +2001-10-03 Thiemo Seufer + + * config/tc-mips.c (mips_64): Remove. + (mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS + in it. + (mips_abi_level, mips_abi): New enum. + (mips_32bit_abi): Remove. + (HAVE*PRS): Use mips_abi instead of mips_32bit_abi. + (HAVE_NEWABI): New define. + (HAVE_64BIT_OBJECTS): New define. + (HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects. + (HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES. + (support_64bit_objects): New prototype. + (md_begin): Use mips_abi instead of mips_32bit_abi. Don't write + .reginfo section for n32, use .MIPS.options instead. + (support_64bit_objects): New function, code from md_parse_option. + (md_longopts): Add -n32 option. + (md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64. + Add -n32 option. Protect with OBJ_ELF. + (s_mipsset): Use mips_abi instead of mips_32bit_abi. + (mips_elf_final_processing): Likewise. Don't write .reginfo section + for n32, use .MIPS.options instead. + +2001-10-03 Alan Modra + + * po/POTFILES.in: Regenerate. + * configure: Regenerate. + +2001-10-02 Alan Modra + + * config/tc-ppc.c (md_apply_fix3 ): Make it 64 + bits if target is 64 bit. + + * doc/as.texinfo (listing): Fix typo. + + * as.c (print_version_id): Use BFD_VERSION_STRING in place of + BFD_VERSION. + * Makefile.am (Makefile): Depend on bfd/configure.in. + Run "make dep-am". + * Makefile.in: Regenerate. + +2001-09-30 H.J. Lu + + * config/obj-elf.c (obj_elf_parse_section_letters): Accept "am" + and "ams" for compatibility. + +2001-09-30 Hans-Peter Nilsson + + * config/tc-sh.c (md_pcrel_from_section): Transformed from + md_pcrel_from. Handle pc-relativeness against link-time + symbol. Handle relativeness to elsewhere than the fixup. + * config/tc-sh.h (MD_PCREL_FROM_SECTION): Define. + (md_pcrel_from_section): Prototype. + + * Makefile.am: Update dependencies with "make dep-am". + * Makefile.in: Regenerate. + +2001-09-30 Stephane Carrez + + * config/tc-m68hc11.c (cmp_opcode): Define prototype. + (print_opcode_format, skip_whites): Likewise. + (convert_branch, m68hc11_new_insn): Likewise. + (build_dbranch_insn, build_indexed_byte): Likewise. + (build_reg_mode, find, find_opcode): Likewise. + (print_insn_format): Fix call to print_opcode_format. + (md_assemble): Fix call to build_dbranch_insn. + +2001-09-27 Nick Clifton + + * config/tc-arm.c: Add missing prototypes. + +2001-09-26 Jeff Johnston + + * input-file.c (input_file_open): When reading the + first line looking for #NO_APP, prepare for the possibility + of finding #APP instead. Also fix algorithm to allow + white-space to follow either #NO_APP or #APP directives. + +2001-09-25 Geoff Berry + + * listing.c (buffer_line): Don't write past the end of `line' when + EOF is reached. + +2001-09-25 Alexandre Oliva + + * config/tc-mn10300.c (tc_gen_reloc): Don't emit an *ABS* + relocation for differences between symbols in a section other + than the one in which the difference is to be placed; apply + the relocation instead. + +2001-09-24 Nick Clifton + + * config/tc-arc.c: Add missing prototype. + (md_atof): Change type to int. Add missing prototype. + * config/tc-arc.h: Prototype exported functions. + +2001-09-22 Nick Clifton + + * as.c: Add missing function prototype. + * config/obj-aout.c: Fix compile time warning. + +2001-09-21 Bruno Haible + + * config/tc-openrisc.c: Don't include . + +2001-09-19 Martin Schwidefsky + + * gas/config/tc-s390.c: Add option -mwarn-areg-zero. + +2001-09-19 Alan Modra + + * config/tc-i370.c: Fix typo in last change. + +2001-09-19 Nick Clifton + + * doc/as.texinfo (Symbol Names): Improve documentation on local + labels and add documenation about dollar labels. + +2001-09-18 Bruno Haible + + * as.h: Don't include . + * as.c (main): For gettext, also set the LC_CTYPE locate facet. + * atof-generic.c: Include "safe-ctype.h" instead of . + (atof_generic): Use ISDIGIT instead of isdigit. + * config/m68k-parse.y: Include "safe-ctype.h". + (yylex): Use ISDIGIT/ISALNUM instead of isdigit/isalnum. + * config/obj-elf.c: Include "safe-ctype.h". + (obj_elf_vtable_inherit): Use ISSPACE instead of isspace. + * config/obj-vms.c: Include "safe-ctype.h". + (Write_VMS_MHD_Records): Use TOUPPER instead of islower/toupper. + (VMS_Case_Hack_Symbol): Use ISUPPER/ISLOWER/TOUPPER/TOLOWER + instead of isupper/islower/toupper/tolower. + * config/tc-a29k.c: Include "safe-ctype.h" instead of . + (insert_sreg): Use TOUPPER instead of islower/toupper. + (machine_ip): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead of + isalpha/isalnum/isupper/tolower. + (a29k_unrecognized_line, md_operand): Use ISDIGIT instead of + isdigit. + * config/tc-alpha.c: Include "safe-ctype.h" instead of . + (md_undefined_symbol, s_alpha_ent): Use ISDIGIT instead of isdigit. + * config/tc-arc.c: Include "safe-ctype.h" instead of . + (md_assemble): Use ISSPACE/ISALNUM instead of isspace/isalnum. + (arc_extoper): Use TOLOWER instead of isupper/tolower. + * config/tc-arm.c: Include "safe-ctype.h" instead of . + (arm_psr_parse): Use ISALPHA instead of isalpha. + (accum0_required_here): Use ISALNUM instead of isalnum. + (do_ldrd): Use ISSPACE instead of isspace. + (decode_shift): Use ISALPHA instead of isalpha. + (insert_reg): Use TOUPPER instead of islower/toupper. + (arm_reg_parse): Use ISALPHA instead of isalpha. + (arm_parse_reloc): Use ISALNUM/ISPUNCT/TOLOWER instead of + isalnum/ispunct/tolower. + * config/tc-avr.c: Include "safe-ctype.h" instead of . + (md_parse_option): Use TOLOWER instead of tolower. + (avr_operand): Use ISDIGIT/TOLOWER instead of isdigit/tolower. + * config/tc-cris.c: Include "safe-ctype.h" instead of . + (cris_process_instruction): Use ISLOWER instead of islower. + (get_gen_reg): Use ISALNUM/ISDIGIT instead of isalnum/isdigit. + (get_spec_reg): Use TOLOWER/ISALNUM instead of isupper/tolower/isalnum. + (get_flags): Use ISSPACE instead of isspace. + * config/tc-d10v.c: Include "safe-ctype.h" instead of . + (do_assemble): Use TOLOWER instead of tolower. + * config/tc-d30v.c: Include "safe-ctype.h" instead of . + (do_assemble): Use TOLOWER instead of tolower. + (d30v_start_line): Use ISSPACE instead of isspace. + * config/tc-fr30.c: Include "safe-ctype.h" instead of . + (fr30_is_colon_insn): Use TOLOWER instead of tolower. + * config/tc-h8300.c: Include "safe-ctype.h" instead of . + (skip_colonthing, get_operand): Use ISDIGIT instead of isdigit. + * config/tc-h8500.c: Include "safe-ctype.h" instead of . + (start_label): Use ISALPHA instead of isalpha. + * config/tc-hppa.c: Include "safe-ctype.h" instead of . + (pa_ip): Use ISUPPER/ISLOWER/TOLOWER instead of + isupper/islower/tolower. + (pa_parse_number): Use ISDIGIT instead of isdigit. + (pa_chk_field_selector): Use TOLOWER instead of tolower. + (pa_stringer): Use ISDIGIT instead of isdigit. + * config/tc-i370.c: Include "safe-ctype.h" instead of . + (register_name): Use ISALPHA instead of isalpha. + (i370_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (i370_addr_offset): Use ISDIGIT/ISALPHA instead of + isdigit/isalpha. + (i370_addr_cons): Use ISALPHA/ISXDIGIT instead of + isalpha/isxdigit. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-i386.c: Include "safe-ctype.h" instead of . + (md_begin): Use ISDIGIT/ISLOWER/ISUPPER/TOLOWER/ISALPHA + instead of isdigit/islower/isupper/tolower/isalpha. + (output_invalid): Use ISPRINT instead of isprint. + * config/tc-i860.c: Include "safe-ctype.h" instead of . + (i860_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + * config/tc-i960.c: Include "safe-ctype.h" instead of . + (get_args): Use ISALNUM instead of isalnum. + * config/tc-ia64.c: Include "safe-ctype.h". + (dot_pred_rel): Use TOUPPER/ISDIGIT instead of toupper/isdigit. + (ia64_unrecognized_line): Use ISDIGIT instead of isdigit. + (ia64_parse_name): Likewise. + * config/tc-m32r.c: Include "safe-ctype.h" instead of . + (assemble_two_insns): Use ISSPACE/ISALNUM/ISUPPER/TOLOWER + instead of isspace/isalnum/isupper/tolower. + * config/tc-m68hc11.c: Include "safe-ctype.h" instead of . + (md_assemble): Use TOLOWER/ISALNUM instead of tolower/isalnum. + * config/tc-m68k.c: Include "safe-ctype.h" instead of . + (mklower_table): Remove variable. + (mklower): Remove macro. + (insert_reg): Use TOUPPER instead of islower/toupper. + (md_begin): Remove initialization of mklower_table. + (s_reg): Use ISALNUM instead of isalnum. + (mri_assemble): Use ISUPPER/TOLOWER instead of isupper/tolower. + (parse_mri_condition): Use TOLOWER instead of isupper/tolower. + (build_mri_control_operand): Use TOLOWER instead of tolower. + (s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise. + * config/tc-m88k.c: Include "safe-ctype.h" instead of . + (md_assemble): Use ISSPACE instead of isspace. + (get_imm16): Use ISALNUM instead of isalnum. + (get_cnd): Use ISDIGIT/ISUPPER/TOLOWER instead of + isdigit/isupper/tolower. + (get_bf_offset_expression): Use ISALPHA/ISUPPER/TOLOWER + instead of isalpha/isupper/tolower. + (hexval): Use ISDIGIT/ISLOWER/ISUPPER instead of + isdigit/islower/isupper. + * config/tc-mcore.c: Include "safe-ctype.h" instead of . + (mcore_s_section): Use ISSPACE instead of isspace. + (parse_reg): Use ISSPACE/TOLOWER/ISALNUM instead of + isspace/tolower/isalnum. + (parse_creg): Use ISSPACE/TOLOWER instead of isspace/tolower. + (parse_psrmod): Use TOLOWER instead of isascii/tolower. + (parse_exp, parse_mem, md_assemble): Use ISSPACE instead of + isspace. + * config/tc-mips.c: Include "safe-ctype.h" instead of . + (mips_ip): Use ISSPACE/ISDIGIT instead of isspace/isdigit. + (mips16_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + (my_getSmallExpression): Use ISDIGIT/TOLOWER instead of + isdigit/tolower. + (tc_get_register): Likewise. + (get_number): Use ISDIGIT/ISXDIGIT instead of isdigit/isxdigit. + (s_mips_ent): Use ISDIGIT instead of isdigit. + * config/tc-mn10200.c: Include "safe-ctype.h" instead of . + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-mn10300.c: Include "safe-ctype.h" instead of . + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-ns32k.c: Don't include . + * config/tc-pdp11.c: Include "safe-ctype.h". + (mklower): Remove function. + (parse_reg): Use TOLOWER instead of mklower. + * config/tc-pj.c: Include "safe-ctype.h". + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-ppc.c: Include "safe-ctype.h" instead of . + (register_name): Use ISALPHA instead of isalpha. + (ppc_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (md_assemble): Use ISSPACE instead of isspace. + (ppc_canonicalize_symbol_name): Use ISLOWER/TOUPPER instead of + islower/toupper. + * config/tc-s390.c: Include "safe-ctype.h" instead of . + (register_name): Use ISALPHA instead of isalpha. + (s390_elf_suffix, s390_lit_suffix): Use ISALNUM instead of isalnum. + (md_gather_operands, md_assemble, s390_insn): Use ISSPACE instead of + isspace. + * config/tc-sh.c: Include "safe-ctype.h" instead of . + (sh_elf_suffix): Use ISALNUM/TOLOWER instead of + isalnum/islower/tolower. + (IDENT_CHAR): Use ISALNUM instead of isalnum. + (parse_reg): Use TOLOWER instead of tolower. + (find_cooked_opcode): Use TOLOWER instead of isupper/tolower. + * config/tc-sparc.c: Include "safe-ctype.h" instead of . + (sparc_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit. + (parse_keyword_arg): Use ISALNUM instead of isalnum. + * config/tc-tahoe.c: Include "safe-ctype.h". + (tahoe_reg_parse): Use ISDIGIT instead of isdigit. + (tip_op): Use TOLOWER instead of isupper/tolower. + * config/tc-tic30.c: Include "safe-ctype.h". + (md_begin): Use ISLOWER/ISDIGIT/ISUPPER/TOLOWER/ISLOWER/ + ISALPHA instead of islower/isdigit/isupper/tolower/islower/isalpha. + (tic30_operand): Use TOLOWER instead of tolower. + (tic30_find_parallel_insn): Likewise. + (output_invalid): Use ISPRINT instead of isprint. + * config/tc-tic54x.c: Include "safe-ctype.h". + (tic54x_asg, tic54x_eval): Use ISALPHA instead of isalpha. + (lookup_version): Use TOUPPER instead of toupper. + (tic54x_var): Use ISALPHA instead of isalpha. + (tic54x_mlib): Use ISSPACE instead of isspace. + (subsym_iscons): Use TOUPPER instead of toupper. + (get_operands): Use ISSPACE instead of isspace. + (is_type): Use TOUPPER/ISDIGIT instead of toupper/isdigit. + (encode_indirect, encode_operand): Use TOUPPER instead of toupper. + (next_line_shows_parallel): Use ISSPACE instead of isspace. + (subsym_get_arg, subsym_substitute): Use ISDIGIT instead of isdigit. + (tic54x_start_line_hook, md_assemble, tic54x_start_label): Use + ISSPACE instead of isspace. + * config/tc-tic80.c: Include "safe-ctype.h". + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-v850.c: Include "safe-ctype.h" instead of . + (system_register_name): Use ISDIGIT instead of isdigit. + (md_assemble): Use ISSPACE instead of isspace. + * config/tc-vax.c: Include "safe-ctype.h" instead of . + (vax_reg_parse): Use TOLOWER/ISDIGIT instead of + isupper/tolower/isdigit. + (vip_op): Use TOLOWER instead of isupper/tolower. + * config/tc-w65.c: Don't include . + * config/tc-z8k.c: Include "safe-ctype.h" instead of . + (tohex): Use ISDIGIT/ISLOWER instead of isdigit/islower. + (whatreg): Use ISDIGIT instead of isdigit. + * ecoff.c: Include "safe-ctype.h" instead of . + (ecoff_directive_ent, ecoff_stab): Use ISDIGIT instead of isdigit. + * expr.c: Include "safe-ctype.h" instead of . + (integer_constant): Use ISALNUM/TOUPPER instead of + isalnum/islower/toupper. + (operand): Use TOLOWER instead of isupper/tolower. + * gasp.c: Include "safe-ctype.h" instead of . + (sb_strtol, level_0, change_base, doinstr): Use ISDIGIT instead + of isdigit. + (process_assigns, whatcond): Use TOUPPER instead of toupper. + (chartype_init): Use ISALPHA/ISDIGIT instead of isalpha/isdigit. + (main): For gettext, also set the LC_CTYPE locate facet. + * hash.c: Include "safe-ctype.h". + (main): Use TOLOWER instead of isupper/tolower. + * itbl-lex.l: Don't include . + * listing.c: Include "safe-ctype.h" instead of . + (listing_newline): Use ISCNTRL instead of isascii/iscntrl. Don't + omit non-ASCII characters. + (debugging_pseudo): Use ISSPACE instead of isspace. + * macro.c: Include "safe-ctype.h" instead of . + (buffer_and_nest): Use ISALNUM instead of isalnum. + (get_token): Use ISALPHA/ISALNUM instead of isalpha/isalnum. + (define_macro): Use ISUPPER/TOLOWER instead of isupper/tolower. + (macro_expand_body): Use ISALNUM/ISDIGIT/ISUPPER/ISALPHA + instead of isalnum/isdigit/isupper/isalpha. + (check_macro): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead + of isalpha/isalnum/isupper/tolower. + * read.c: Include "safe-ctype.h" instead of . + (read_a_source_file): Use ISUPPER/TOLOWER/ISDIGIT instead of + isupper/tolower/isdigit. + (s_mri_common): Use ISDIGIT instead of isdigit. + (s_mri_sect): Use ISDIGIT/TOUPPER instead of isdigit/toupper. + (s_float_space): Use ISALPHA instead of isalpha. + (ignore_rest_of_line): Use ISPRINT instead of isprint. + (float_cons): Use ISALPHA instead of isalpha. + (next_char_of_string): Use ISDIGIT/ISXDIGIT instead of + isdigit/isxdigit. + * symbols.c: Include "safe-ctype.h" instead of . + (save_symbol_name): Use ISLOWER/TOUPPER instead of + islower/toupper. + (symbol_find_base): Use TOUPPER instead of islower/toupper. + (decode_local_label_name): Use ISDIGIT instead of isdigit. + +2001-09-18 Martin Schwidefsky + + * tc-s390.c (s390_insn): Add code to cope with 6 byte O_constants + in 64 bit mode and make format "e" work. + +2001-09-18 Alan Modra + + * dwarf2dbg.c (dwarf2_directive_file): Avoid signed/unsigned warning. + + * write.c (set_symtab): Update bfd_alloc declaration. Use a temp + var to ensure bfd_alloc arg is the right type. + (write_object_file): Cast args of bfd_seek. Replace bfd_write with + bfd_bwrite. + + * config/obj-coff.c: Replace calls to bfd_write with calls to + bfd_bwrite. Cast args of bfd_seek. + + * config/obj-elf.c (obj_elf_change_section): Avoid signed/unsigned + warning. + + * config/tc-mn10300.c (set_arch_mach): Make param unsigned. + + * config/tc-tic54x.c (tic54x_mlib): Replace bfd_read call with + call to bfd_bread. + +2001-09-15 Hans-Peter Nilsson + + * config/tc-sh.h (sh_force_relocation): Prototype. + (struct fix): Forward declare. + * config/tc-sh.c (type sh_operand_info): Move to top of file. + (cons, s_align_bytes): Remove old-type declarations. + (sh_elf_suffix, parse_reg, dot, parse_exp, parse_at, get_operand, + get_operands, get_specific, insert, build_relax, + insert_loop_bounds, build_Mytes): Prototype. + (little): Make static. Prototype. + (check, tc_Nout_fix_to_chars): Delete unused functions. + +2001-09-14 Eric Christopher + + * config/tc-mips.c (md_parse_option): Remove setting mips_64 via + -mgp32/mgp64. + +2001-09-14 Kevin Lo + + * configure.in: Add arm-openbsd target. + * configure: Regenerate. + +2001-09-14 Thiemo Seufer + + * configure.in: Change machine triplets from mips-*-linux-gnu* to + mips*-*-linux*. + +2001-09-12 Thiemo Seufer + + * config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL. + +2001-09-11 Richard Henderson + + * config/tc-alpha.c (alpha_elf_section_letter): New. + (alpha_elf_section_flags): New. + * config/tc-alpha.h (md_elf_section_letter): New. + (md_elf_section_flags): New. + * config/tc-ia64.c (ia64_elf_section_letter): New. + * config/tc-ia64.h (md_elf_section_letter): New. + +2001-09-11 Jakub Jelinek + + * config/obj-elf.c (obj_elf_parse_section_letters): Use 'M' instead + of 'm', 'S' instead of 's'. Update bad_msg. + * config/tc-ppc.c (ppc_section_letter): Update bad_msg. + * config/tc-i370.c (i370_sectioN_letter): Update bad_msg. + +2001-09-09 Alan Modra + + * expr.c (expr): Move code setting "retval" to the end of the loop, + and rearrange for efficiency. For "PIC code" subtraction, use + "rightseg" rather than recalculating. For "symbol OP symbol" + subtract, set "retval" to absolute_section if symbols in same + section. + * symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an + O_symbol. Simplify a +/- b code. Allow equality and non-equality + comparisons on symbols from any section. Allow other comparison + operators as for subtraction. + (symbol_equated_reloc_p): New predicate function. + * symbols.h (symbol_equated_reloc_p): Declare. + * write.c (relax_segment ): Ensure segment + for expression syms is set correctly. + (adjust_reloc_syms): Use symbol_equated_reloc_p. + (write_relocs): Likewise. + (write_object_file): Likewise. + * config/tc-mips.c (md_estimate_size_before_relax): Likewise. + * config/tc-i386.c (md_assemble ): Don't lose part + of a complex expression when setting up frag_var. + +2001-09-07 Richard Henderson + + * config/tc-alpha.c (alpha_reloc_op_tag): Replace need_seq with + require_seq and allow_seq. Let !literal omit the sequence number. + (tokenize_arguments): Reject sequence numbers of !allow_seq. + +2001-09-08 Jakub Jelinek + + * config/tc-sparc.c (md_apply_fix3): Handle relocs against SEC_MERGE + section symbols the same way as externs. + +2001-09-07 Thiemo Seufer + + * config/tc-mips.c (s_mipsset): Reallow unrestricted use of .set mipsX + pseudo-op. + +2001-09-07 Thiemo Seufer + + * config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL. + (macro_build): Use BFD_RELOC_16_PCREL_S2 only for embedded + PIC, BFD_RELOC_16_PCREL for the rest. + (mips_ip): Likewise. + (md_pcrel_from): return the right offset for the differently shifted + pcrel relocs. + (md_apply_fix): Handle BFD_RELOC_16_PCREL. + +2001-09-05 Richard Henderson + + * config/tc-ia64.c (FUNC_IPLT_RELOC): New. + (pseudo_func): Add @iplt. + (pseudo_opcode): Add data16 and data16.ua. + (md_begin): Set iplt pseudo. + (ia64_cons_fix_new): Handle 16 byte iplt reloc specially. + +2001-09-04 Richard Henderson + + * config/tc-alpha.c (struct alpha_insn): Make sequence scalar long. + (MACRO_LITERAL, MACRO_BASE, MACRO_BYTOFF, MACRO_JSR): Remove. + (alpha_macros): Remove occurrences of same. + (O_lituse_addr, O_gprel): New. + (DUMMY_RELOC_LITUSE_*): New. + (s_alpha_ucons, s_alpha_arch): Prototype. + (alpha_reloc_op): Construct elements via DEF macro. + (ALPHA_RELOC_SEQUENCE_OK): Remove. + (struct alpha_reloc_tag): Rename from alpha_literal_tag; rename + members to not be literal specific. + (next_sequence_num): New. + (md_apply_fix3): Cope with missing GPDISP_LO16. Adjust for + added/removed BFD relocations. + (alpha_force_relocation, alpha_fix_adjustable): Likewise. + (alpha_adjust_symtab_relocs): Handle GPDISP relocs as well. + (tokenize_arguments): Parse ! relocations properly. + (find_macro_match): Delete unused macro argument types. + (assemble_insn): Add reloc parameter; emit that instead of the + default as appropriate. + (get_alpha_reloc_tag): New. Split from ... + (emit_insn): ... here. Allocate a reloc tag for GPDISP. + (assemble_tokens): Don't search macros if user relocation present. + Copy reloc sequence number to insn struct. + (emit_ldgp): Remove user reloc handling. + (load_expression, emit_lda, emit_ldah, emit_ir_load): Likewise. + (emit_loadstore, emit_ldXu, emit_ldil, emit_stX): Likewise. + (emit_sextX, emit_division, emit_jsrjmp, emit_retjcr): Likewise. + * config/tc-alpha.h (tc_adjust_symtab): Always define. + (struct alpha_fix_tag): Name members less literal specific. + +2001-09-04 Jeffrey A Law (law@cygnus.com) + + * tc-h8300.c (tc_gen_reloc): Give an error if we try to take the + address of two symbols in different sections. + +2001-08-31 Eric Christopher + Jason Eckhardt + + * config/tc-mips.c (mips_cpu_info): Add support for mipsisa32, + 5kc, and 20kc. Clean up old entries. + +2001-08-31 J"orn Rennecke + Jeff Law + + * config/tc-h8300.c (build_bytes): For OBJ_ELF, make relocation's + offset match H8 ELF spec. + (md_section_align): Alternate implementation for BFD_ASSEMBLER. + (md_apply_fix): Fix argument and return types for BFD_ASSEMBLER. + + * tc-h8300.c (relocation mappings): Remove. Moved to tc-h8300.h. + (build_bytes): Mark fixups for PCrel branches as signed. For + OBJ_ELF, make sure the reloc's offset points to the first byte + to be modified. + (md_convert_frag): Update definiton based on BFD_ASSEMBLER. + * tc-h8300.h (relocation mappings): Add. + +2001-08-30 J"orn Rennecke + + * tc-h8300.c (tc_crawl_symbol_chain, tc_headers_hook): Don't + define for BFD_ASSEMBLER. + (tc_reloc_mangle): Likewise. + (tc_gen_reloc): New function for BFD_ASSEMBLER. + +2001-08-29 Jeffrey A Law (law@cygnus.com) + + * config/tc-h8300.c (h8300hmode): Record the machine type + if BFD_ASSEMBLER is defined. + (h8300smode, md_begin): Similarly. + +2001-08-29 Joel Sherrill + + * configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change + default from coff to elf. + * configure: Regenerate. + +2001-08-29 J"orn Rennecke + + * tc-h8300.c: If OBJ_ELF, include elf/h8.h, and define + assorted coff relocations to the corresponding elf relocations. + * tc-h8300.h (TARGET_ARCH, TARGET_FORMAT): Define appropriately. + + * configure.in: Add case for h8300-*-elf. + * configure: Regenerate. + +2001-08-29 J"orn Rennecke + + * doc/internals.texi (MD_PCREL_FROM_SECTION): Change + documentation to reflect reality. + +2001-08-27 Thiemo Seufer + + * config/tc-mips.c (load_address): Reflect change to MAX_GPREL_OFFSET. + (macro): Reflect change to MAX_GPREL_OFFSET. + +2001-08-27 Torbjorn Granlund + Staffan Ulfberg + Linus Nordberg + Alan Modra + + * configure.in: Recognise powerpc*le*, not just powerpcle*. + * configure: Regenerate. + * config/tc-ppc.c (PPC_LO, PPC_HI, PPC_HA, PPC_HIGHER, + PPC_HIGHERA, PPC_HIGHEST, PPC_HIGHESTA, SEX16): New macros. + (md_assemble): Use them. + (ppc_machine): Support stub for ELF64 as well as XCOFF. + (md_pseudo_table): Add "llong", "quad". + (md_parse_option): Match default_cpu of powerpc*. + (ppc_arch): Likewise. + (ppc_subseg_align): Only for OBJ_XCOFF. + (ppc_target_format): Return elf64-powerpc strings for 64 bit ELF. + (md_begin): Select PPC_OPCODE_64 for 64 bit. + (ppc_insert_operand): Don't bother testing 'file' before calling + as_bad_where. Use as_bad_where for operand->insert errors. + (mapping): Add ELF64 relocation modifiers. + (ppc_elf_suffix): Replace symbol on BFD_RELOC_PPC64_TOC reloc + expressions with abs_symbol. + (ppc_elf_cons): Correct offset for little endian targets. + (ppc_elf_frob_symbol): New. + (md_assemble): Add support for 64 bit ELF relocs. + (ppc_tc): Ensure 8 byte alignment when 64 bit. + (ppc_is_toc_sym): Only define for OBJ_XCOFF and OBJ_ELF. Match + ".toc" section for 64 bit ELF. + (ppc_fix_adjustable): New. Macro body moved from tc-ppc.h. + (md_apply_fix3): Silence warning with ATTRIBUTE_UNUSED. Only do + the ppc_is_toc_sym check for OBJ_XCOFF and OBJ_ELF. For 64 bit, + use BFD_RELOC_PPC64_TOC16_DS instead of BFD_RELOC_PPC_TOC16. + Expand on comments, error message. Add support for 64 bit relocs, + and use PPC_HI etc. macros. + * config/tc-ppc.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. + (HANDLE_ALIGN): Define to generate nops in code sections rather + than zeros. + (TC_FORCE_RELOCATION): Force for BFD_RELOC_PPC64_TOC. + (ELF_TC_SPECIAL_SECTIONS): Add 64 bit ELF sections. + (tc_fix_adjustable): Move body of macro to tc-ppc.c. + (ppc_fix_adjustable): Declare. + (tc_frob_symbol): Define. + (ppc_elf_frob_symbol): Declare. + +2001-08-26 Andreas Jaeger + + * config/tc-s390.c: Add missing prototypes + (md_gather_operands): Make static. + +2001-08-26 Thiemo Seufer + + * config/tc-mips.h (MAX_GPREL_OFFSET): Change it to the maximum + allowed value, not the word beyond maximum. + * config/tc-mips.c (macro_build_lui): Code cleanup. + (macro): Reflect change to MAX_GPREL_OFFSET. + (mips_ip): Check explicitly against S_EX_NONE. + (my_get_SmallExpression): parse for %gp_rel, not %gprel. + (md_apply_fix): Code cleanup. + +2001-08-24 Andreas Jaeger + + * config/tc-ppc.h: Fix prototype declaration. + +2001-08-23 Jakub Jelinek + + * config/tc-ia64.c (dot_endp): Set function symbol sizes. + * config/obj-elf.c (obj_elf_size): When size is constant, free + and clear symbol_get_obj(sym)->size if any. + +2001-08-21 Thiemo Seufer + + * config/tc-mips.c (md_begin): Warn about incompatibility between + -march=FOO and -mipsN option, continue with default ISA. + +2001-08-21 Thiemo Seufer + + * config/tc-mips.c (md_parse_option): #ifdef the + traditional/non-traditional names as it is done in mips_target_format. + +2001-08-20 Richard Henderson + + * config/tc-alpha.h (MD_APPLY_FIX3): Define. + * config/tc-alpha.c (md_apply_fix3): Rename from md_apply_fix; + use seg parameter instead of now_seg. + +2001-08-18 H.J. Lu + + * config/tc-mips.c (show): Add the missing prototype. + +2001-08-18 Thiemo Seufer + + * config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression() + return values. + (mips_ip): Use the new return values instead of characters. Add + support for %higher and %highest. + (LP): Remove. + (RP): Remove. + (my_getSmallExpression): Make parsing case insensitive and more + reliable. Add support for %higher and %highest. Further support to + parse %gprel and %neg is implemented but currently deactivated. + +2001-08-17 Alan Modra + + * ecoff.c (ecoff_frob_symbol): Remove casts from bfd_get_gp_size. + (ecoff_build_symbols): Likewise. + * read.c (s_lcomm_internal): Fix signed/unsigned warning. + +2001-08-16 Thiemo Seufer + + * config/tc-mips.c (mips_elf_final_processing): Set elf header flags + for n32 ABI if appropriate. + +2001-08-16 Thiemo Seufer + + * config/tc-mips.c (cons_fix_new_mips): Remove. + * config/tc-mips.h (TC_CONS_FIX_NEW): Remove. + (cons_fix_new_mips): Remove. + +2001-08-14 Jeff Johnston + + * expr.c (operand)[LITERAL_PREFIXDOLLAR_HEX]: Treat $L as + a label, not a hex constant. + +2001-08-13 Nick Clifton + + * config/tc-v850.h: Add missing prototypes. + +2001-08-12 Martin Schwidefsky + + * config/tc-s390.c (s390_elf_cons): Correct fixups for PLT + relocations. + +2001-08-12 TAKAI Kousuke + + * config/tc-sparc.c (cons_fix_new_sparc): Move + `sparc_no_align_cons = 0;' to... + (s_uacons): ...here so that sparc_no_align_cons will get + cleared properly. + +2001-08-11 Kazu Hirata + + * config/tc-mips.c: Fix a comment typo. + +2001-08-10 Richard Sandiford + + * config/tc-mips.c (move_register): New function. + (macro_build): Remove OPCODE_IS_MEMBER's gp32 argument. + (mips_ip): Likewise. + (macro2): Use move_register rather than macro_build for moves. + (mips16_macro): Likewise. + (macro): Likewise. Handle M_MOVE. + +2001-08-10 Andreas Jaeger + + * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes + to build warnings. + * configure: Regenerate. + +2001-08-10 Alan Modra + + * as.h (alloca): Don't declare if __GNUC__. Remove an old comment. + Comment indentation of #pragma. + * macro.c (alloca): Likewise. + + * config/tc-ppc.c: Revert 2001-08-08. + +2001-08-09 Alan Modra + + * symbols.c: Add missing prototypes. + * config/e-i386elf.c: Likewise. + * config/e-i386coff.c: Likewise. + * config/e-i386aout.c: Likewise. + * config/obj-coff.c: Likewise. + (def_symbol_in_progress, stack): Move definition. + * config/obj-elf.c: Add missing prototypes. + (obj_elf_change_section): Make static. + (obj_elf_parse_section_letters): Likewise. + (obj_elf_section_word): Likewise. + (obj_elf_section_type): Likewise. + +2001-08-08 Alan Modra + + From 1999-10-25 Torbjorn Granlund + * config/tc-ppc.c (md_apply_fix3): Replace haphazard code for + determining reloc type with code reading operands->reloc field. + +2001-08-08 Alan Modra + + * config/obj-elf.c (elf_copy_symbol_attributes): Make it a global + function, and expand old obj-elf.h OBJ_COPY_SYMBOL_ATTRIBUTES here. + * config/obj-elf.h (elf_copy_symbol_attributes): Declare. + (OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes. + + * output-file.c (output_file_create): Don't try to open a second + time as it's unnecessary. FOPEN_W was undefined too. + +2001-08-07 Thiemo Seufer + + * config/tc-mips.c (macro_build): Replace magic constants by defines. + (mips_ip): Likewise. Typo. + +2001-08-04 Thiemo Seufer + + * config/tc-mips.c (mips_abi_string): Initialize with NULL instead + of 0. + (RELAX_ENCODE): Replace bfd_vma by valueT. + (load_address): Formatting. + (macro): Likewise. Code cleanup. Typo. + (macro2): Formatting. + (md_parse_option): Typo. + (s_mipsset): Reorder cases to look nicer. + (md_estimate_size_before_relax): Formatting. Code cleanup. + (mips_elf_final_processing): Check against NULL instead of 0. + (md_obj_end): Remove ugly `' in message string. + (s_mips_ent): Remove ugly `' in message string. + +2001-07-30 Thiemo Seufer + + * config/tc-mips.c (md_begin): Take -mcpu value into account even when + -mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs + mutually exclusive (if they are different). + (md_parse_option): Warn if an -march/-mtune/-mcpu/-m option is + set more than once. + +2001-08-03 Richard Sandiford + + * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value + from GPREL addends. + +2001-08-02 Richard Sandiford + + * doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32. + * config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables. + (md_long_opts): Add -mfp32 option. + (md_parse_option): Handle it. Set mips_32bit_abi given -mabi=32. + (md_show_usage): Show usage for -mfp32 and -mgp32. + (HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros. + (HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above. + (HAVE_32BIT_ADDRESSES): New macro. + (load_register): Use HAVE_32BIT_GPRS to determine the register width. + (load_address): Use HAVE_32BIT_ADDRESSES to determine the address size. + (s_cprestore, s_cpadd): Likewise. + (macro): Use HAVE_32BIT_GPRS to determine the width of registers + used in branch and M_LI_D macros. Use HAVE_64BIT_FPRS to determine + the width registers used in M_LI_DD macros. Use HAVE_32BIT_ADDRESSES + to determine the width of addresses in load, store and jump macros. + (macro2): Use HAVE_32BIT_GPRS to determine the width of registers + used in set instructions; do not check the address size for them. + Use HAVE_32BIT_ADDRESSES to determine the width of addresses in + unaligned load and store macros. + (mips_ip): Use the new macros to check the width of a register when + processing float constants. Force a constant into memory if it is + destined for an FPR and the FPRs are wider than the GPRs. Warn about + odd FPR numbers if HAVE_32BIT_FPRS. Use HAVE_32BIT_GPRS rather + than mips_gp32 to select synthetic instructions. + (macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select + synthetic instructions. + +2001-08-01 Christian Groessler + + * config/tc-z8k.c (parse_reg): If a string starts with "r", "rl", + "rh", "rr", "rq", or "sp" then don't automatically assume + it's a register name. Check whether there is a number + following. + +2001-08-01 Alan Modra + + * config/tc-i386.c (lex_got): Match lower case relocation tokens. + Don't allocate more space than necessary for the input line copy. + +2001-08-01 Alan Modra + + * read.c: Standardize error/warning messages - don't capitalise, no + final period or newline, don't say "ignored" or "zero assumed" for + as_bad messages. In some cases, change the wording to that used + elsewhere for similar messages. + * app.c: Likewise. + * as.c: Likewise. + * atof-generic.c: Likewise. + * cgen.c: Likewise. + * cond.c: Likewise. + * depend.c: Likewise. + * dwarf2dbg.c: Likewise. + * ecoff.c: Likewise. + * expr.c: Likewise. + * frags.c: Likewise. + * input-file.c: Likewise. + * input-scrub.c: Likewise. + * listing.c: Likewise. + * output-file.c: Likewise. + * stabs.c: Likewise. + * subsegs.c: Likewise. + * symbols.c: Likewise. + * write.c: Likewise. + * ecoff.c (ecoff_directive_end): Test for missing name by + comparing input line pointers rather than reading string. + (ecoff_directive_ent): Likewise. + * read.c (s_set): Likewise. + (s_align): Report a warning rather than an error for + alignment too large. + (s_comm): Check for missing symbol name. + (s_lcomm_internal): Likewise. + (s_lsym): Likewise. + (s_globl): Use is_end_of_line instead of looking for '\n'. + (s_lcomm_internal): Likewise. + (ignore_rest_of_line): Report a warning rather than an error. + +2001-07-31 Geoffrey Keating + + * config/tc-ppc.c (ppc_elf_validate_fix): It's OK to have + any kind of relocation against a not-loaded section. + +2001-07-30 Alan Modra + + * config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type + to include '@' in symbol names when parsing versioned symbols + rather than calling get_symbol_end multiple times. + * config/tc-i370.c (register_name): Format fixes. Don't call + get_symbol_end after parsing number. + * config/tc-mn10200.c (data_register_name): Format fixes. Hoist + code out of conditional. + (address_register_name): Likewise. + (other_register_name): Likewise. + * config/tc-mn10300.c (r_register_name): Likewise. + (xr_register_name): Likewise. + (data_register_name): Likewise. + (address_register_name): Likewise. + (other_register_name): Likewise. + * config/tc-ppc.c (register_name): Likewise. + * config/tc-s390.c (register_name): Likewise. + +2001-07-27 Stephane Carrez + + * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr + and bra relax: update fragP->fr_fix after the fixup. + +2001-07-27 Tracy Kuhrt + + * read.c (s_set): Check for missing symbol name. + +2001-07-26 Alan Modra + + * write.c (relax_segment ): Account for fr_fix. + +2001-07-25 H.J. Lu + + * config/tc-mips.c (md_estimate_size_before_relax): Make sure + we treat weak like extern only for ELF. + (mips_fix_adjustable): Make sure we don't adjust extern/weak + symbols only for ELF. + +2001-07-25 Chris Demetriou + + * config/tc-mips.c: Fix spelling error in comment. + +2001-07-25 Dave Brolley + + * app.c (LEX_IS_PARALLEL_SEPARATOR): New macro. + (IS_PARALLEL_SEPARATOR): New macro. + (do_scrub_begin): Set up characters in tc_parallel_separator_chars + as LEX_IS_PARALLEL_SEPARATOR, if it is defined. + (do_scrub_chars): Handle LEX_PARALLEL_SEPARATOR chars like + LEX_LINE_SEPARATOR except that we go to state 1 (as if the label has + been seen). + +2001-07-24 Alan Modra + + * Makefile.am (DEP_FLAGS): Define, add -DOBJ_MAYBE_ELF. + (DEP1, DEPTC, DEPOBJ, DEP2): Use it. + Update dependencies with "make dep-am". + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2001-07-23 Kazu Hirata + + * config/tc-alpha.h: Fix formatting. + * config/tc-arc.c: Likewise. + * config/tc-d10v.h: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-ia64.h: Likewise. + * config/tc-m32r.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-ns32k.c: Likewise. + * config/tc-pdp11.c: Likewise. + * config/tc-pj.h: Likewise. + * config/tc-s390.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-sparc.h: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-w65.h: Likewise. + +2001-07-23 Alan Modra + + * symbols.c (S_GET_VALUE): Don't treat O_constant and local + symbols specially. Always resolve, adding fr_address to value. + * write.c (write_object_file): Don't add fr_address to sym values. + (relax_frag): Likewise. + (relax_segment): Likewise. + * config/obj-ieee.c (do_symbols): Likewise. + * config/tc-cris.c (md_convert_frag): Likewise. + * config/tc-fr30.c (md_convert_frag): Likewise. + * config/tc-i386.c (md_convert_frag): Likewise. + * config/tc-m32r.c (md_convert_frag): Likewise. + * config/tc-m68hc11.c (md_convert_frag): Likewise. + * config/tc-mcore.c (md_convert_frag): Likewise. + * config/tc-mips.c (mips16_extended_frag): Likewise. + * config/tc-ns32k.c (md_convert_frag): Likewise. + * config/tc-m68k.c (md_convert_frag_1): Likewise. + (BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR, + DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement. + (md_relax_table): Remove first four entries. Format. + (md_estimate_size_before_relax): Remove old_fix. Don't bother + setting fr_var. Simplify byte branch checks. + +2001-07-23 Alan Modra + + * config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Remove + "isbranch" param as all calls have it set. + (pa_parse_neg_cmpsub_cmpltr): Likewise. + (pa_parse_nonneg_add_cmpltr): Likewise. Remember result of + strcasecmp in "nullify" var. + (pa_parse_neg_add_cmpltr): Likewise. + (pa_ip): Don't "save_s" unnecessarily. Update calls to above + functions. Don't print wrong conditions in error messages. + +2001-07-23 Andreas Jaeger + + * config/tc-s390.c (s390_force_relocation): Removed. + + * config/tc-s390.h: Remove double declaration of + TC_FORCE_RELOCATION. + +2001-07-22 H.J. Lu + + * config/tc-mips.c (s_mips_end): Remove unused variables. + (s_mips_frame): Add ATTRIBUTE_UNUSED. + +2001-07-17 Andreas Schwab + + * config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and + .loc. + (md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting + insn. + * config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + +2001-07-17 matthew green + + * config/tc-i386.c (comment_chars): Don't use '/' as comment start if + TE_NetBSD. + (line_comment_chars): Set to '/' if TE_NetBSD. + +2001-07-14 matthew green + + * configure.in (i386-*-netbsdelf*): New target. + * configure: Regenerate. + +2001-07-10 Mark Elbrecht + + * config/obj-coff.c (coff_frob_symbol): Don't merge if the storage + class of the non-debug symbol is C_NULL. + +2001-07-10 Anders Norlander + + * doc/as.texinfo (Incbin): Fix grammatical errors. + +2001-07-10 Nick Clifton + + * depend.c: Use FOPEN_.. macros in calls to fopen(). + * input-file.c: As above. + * itbl-ops.c: As above. + * listing.c: As above. + * output-file.c: As above. + * read.c: As above. + +2001-07-08 Anders Norlander + + * read.c (s_incbin): New .incbin function. + * read.c (potable): Add "incbin" pseudo-op. + * read.h: Add s_incbin prototype. + * doc/as.texinfo (incbin): Document .incbin pseudo-op. + * NEWS: Mention new feature. + +2001-07-07 Nick Clifton + + * ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is + DEBUG_UNSPECIFIED. + +2001-07-06 John Healy + + * cgen.c (gas_cgen_save_fixups): Modified to allow more than one + set of fixups to be stored. + (gas_cgen_restore_fixups): Modified to allow the fixup chain to be + restored to be chosen from any that are saved. + (gas_cgen_swap_fixups): Modified to allow the current set of + fixups to be swapped with any other set that has been saved. + (gas_cgen_initialize_saved_fixups_array): New routine. + * cgen.h: Modifed prototypes for gas_cgen_save_fixups, + gas_cgen_restore_fixups, and gas_cgen_swap_fixups. Added definitions + or MAX_SAVED_FIXUP_CHAINS. + * config/tc-m32r.c (assemble_two_insns): Changed calls to fixup + store, swap and restore fuctions to reflect the new interface. + +2001-07-06 Nick Clifton + + * config/tc-m68k.c (md_estimate_size_before_relax): Catch and + ignore empty, ineffectual alignment frags when deciding if a + branch can be short. + +2001-07-05 Steve Ellcey + + * config/tc-ia64.c (special_section): Add SPECIAL_SECTION_INIT_ARRAY + and SPECIAL_SECTION_FINI_ARRAY. + (special_section_name): Add .init_array and .fini_array. + (md_pseudo_table): Add init_array and fini_array. + (md): Add pointer_size and pointer_size_shift fields. + (setup_unwind_header): New static function. + (output_unw_records): Modify to use setup_unwind_header. + (generate_unwind_image, dot_endp): Modify to use md.pointer_size and + md.pointer_size_shift. + (md_begin): Initialize md.pointer_size and md.pointer_size_shift. + +2001-07-05 Ben Elliston + + * README (Supported platforms): m88k no longer suffers bitrot. + + * config/tc-m88k.c (md_pseudo_table): Remove redundant "global". + +2001-07-05 Alan Modra + + * struc-symbol.h (struct local_symbol): Rename lsy_offset to + lsy_value. Correct typos in comments. + * symbols.c (local_symbol_make): Update for name change. + (local_symbol_convert): Likewise. + (colon): Likewise. + (S_GET_VALUE): Likewise. + (S_SET_VALUE): Likewise. + (print_symbol_value_1): Likewise. + (resolve_symbol_value): Likewise. Don't divide local sym values + by OCTETS_PER_BYTE twice. + +2001-07-04 Jim Wilson + + * config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte. + + * config/tc-ia64.c (is_conditional_branch): Rewrite to exclude mod + sched branches. + +2001-07-05 Ben Elliston + + * read.c (s_fill): Correct spelling error in comments. + + * doc/c-m88k.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-m88k.texi. + * doc/Makefile.in: Regenerate. + * doc/all.texi: Set M880X0. + * doc/as.texinfo: Hook in m88k-dependent documentation. + +2001-07-04 Eric Christopher + + * doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu. + + * config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261, + and rm5721 as valid cpu strings. + (md_show_usage): Add rm5200, rm5231, rm5261, rm5721. + +2001-07-04 Richard Sandiford + + * config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero + if it's expected to be non-zero. + +2001-07-03 Nick Clifton + + * config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with + fscan->fx_frag. + + * write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1. + (write_object_file): Set finalize_syms to + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is + called. + + * doc/internals.texi: Document + TC_FINALIZE_SYMS_BEFORE_SIZE_SEG. + +2001-07-02 Alan Modra + + * config/tc-ppc.c: Formatting fixes. + +2001-07-01 Ben Elliston + + * config/tc-m88k.c: Back out warning fixes from 2001-06-24, as + they cause some subtle breakage. Will fix them again later. + +2001-06-28 Nick Clifton + + * config/obj-coff.c (obj_coff_ln): Treat a .ln directive + outside of a function as a .appline directive. + +2001-06-28 Eric Christopher + H.J. Lu + + * config/tc-mips.c (mips_arch): New. Use mips_arch instead + of mips_cpu for the ISA selection. + (md_longopts): Add OPTION_MARCH and OPTION_MTUNE. + (md_parse_option): Handle OPTION_MARCH and OPTION_MTUNE. + (mips_tune): New. Use mips_tune for scheduling and optimization + issues. + (append_insn): Use mips_tune and mips_arch. + (macro_build): Ditto. + (mips_ip): Ditto. + (md_begin): Handle mips_arch, mips_tune and mips_cpu. For + backwards compatability mips_cpu generates arch and tune. + (md_show_usage): Document new behavior. + + * doc/c-mips.texi (MIPS Opts): Document -march and -mtune. + Deprecate -mcpu. + + * NEWS: Update. + +2001-06-27 Nick Clifton + + * write.c (write_object_file): Do not set finalize_syms until + after the segments have been sized. Some backends may still + need to access the syms's frags in order to adjust relaxed + frags. + + * config/tc-arm.c (do_ldst): Use MVN to build simple inverted + constants. + +2001-06-27 Alan Modra + + * write.c (fixup_segment ): Don't + subtract MD_PCREL_FROM_SECTION for 68k. + (fixup_segment ): Only fudge + by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel. + +2001-06-27 Tracy A. Kuhrt + + * write.c (fixup_segment ): If + pcrel, subtract MD_PCREL_FROM_SECTION value. + +2001-06-24 Ben Elliston + + * stabs.c (generate_asm_file): Make local variable `len' a size_t. + +2001-06-24 Jakub Jelinek + + * config/tc-alpha.c (tc_gen_reloc): Handle relocs against SEC_MERGE + section symbols the same way as externs. + +2001-06-24 Ben Elliston + + * config/tc-m88k.c (md_number_to_imm): Remove; unused since 1993. + (emit_relocations): Ditto. + (s_bss): Ditto. + (md_begin): Reformat comments to conform to the GNU standards. + (md_assemble): Ditto. + + * config/tc-m88k.c (get_reg): Adjust type of `reg_prefix' to char. + (md_parse_option): Mark parameters as unused. + (md_show_usage): Ditto. + (calcop): Adjust type of `reg_prefix' to char. + (get_reg): Ditto. + (getval): Adjust type of local `c' to char. + (md_create_short_jump): Mark from_addr, to_addr params as unused. + (md_create_long_jump): Ditto. + (md_estimate_size_before_relax): Mark parameters as unused. + + * config/tc-m88k.c (md_pseudo_table): Properly terminate the table + to allay a possible compiler warning. + +2001-06-22 Nick Clifton + + * doc/internals.texi (CPU backend): Document md_atof. + +2001-06-22 Matthew Wilcox + + * config/tc-hppa.c (pre_defined_registers): Add %mrp (millicode + return pointer) alias for %r2 or %r31, depending on 32 or 64 bit + architecture. + +2001-06-21 Philip Blundell + + * config/tc-arm.c (cplong_flag): Rename to long_flag. All uses + updated. + (insns): Remove entry for adrl. Add long_flag for adr. + (do_adr): Handle `l' suffix. + (do_adrl): Delete. + +2001-06-21 Alan Modra + + * config/tc-hppa.c (CHECK_FIELD_WHERE): Define. + (md_apply_fix): Use it here. Replace printf with equivalent + as_bad_where. + (tc_gen_reloc): Use as_bad_where instead of as_bad. + (md_apply_fix): Here too. + * config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad. + * config/tc-m68k.c (tc_gen_reloc): Likewise. + (md_convert_frag_1): Likewise. + +2000-06-20 Tom Rix + + * config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes. + +2001-06-18 H.J. Lu + + * doc/Makefile.am (info): Depend on $(MANS). + (as.1): Remove the prefix `$(srcdir)/'. + * doc/Makefile.in: Regenerated. + + * as.1: Removed. + +2001-06-18 Philip Blundell + + * config/tc-arm.c (do_msr): Remove restriction on usage of + immediate operands. + +2001-06-19 Alan Modra + + * dwarf2dbg.c (dwarf2_finish): Output file info even when no + line info. + +2001-06-13 Philip Blundell + + * config/tc-arm.c (thumb_shift): Improve wording of error message. + (do_t_arit): Likewise. + +2001-06-13 Nick Clifton + + * config/tc-sh.c (md_pseudo_table): Only intercept the .file and + .loc pseudos if the dfwarf2 functions are available. + (md_assemble): Only call dwarf2_emit_insn if it is available. + + * expr.c: Fix typo in comment. + +2001-06-12 Nick Clifton + + * doc/as.texinfo (Infix Ops): Document that comparison and + combiner operators can be used as infix operators. + +2001-06-12 Peter Jakubek + + * config/tc-m68k.c (parse_mri_control_operand): Fix handling + of AND/OR. + (swap_mri_condition): Add HS (alias fo CC) and LO (alias for CS). + (reverse_mri_condition): Likewise. + (swap_mri_condition): Issue warning for conditions that can not be + swapped. + (build_mri_control_operand): Fix order of operands (swapped). + (build_mri_control_operand): Allow upper case extension in structured + control directives. + (s_mri_else): Likewise. + (s_mri_next): Likewise. + (s_mri_for): Likewise. + (s_mri_if): Fix handling comment ('*') in mri mode. + (s_mri_while): Likewise. + * macro.c (macro_expand): Allow macro invocation with empty + extension. + +2001-06-12 Nick Clifton + + * config/tc-arm.c: Fix test for overlow of literal pool. + +2001-06-11 H.J. Lu + + * NEWS: Updated for the new -n option for the MIPS assembler. + + * config/tc-mips.c (md_show_usage): Add -n. + + * doc/as.texinfo: Document the new -n option. + * doc/c-mips.texi: Likewise. + * doc/as.1: Regenerated. + +2001-06-10 Alan Modra + + * config/obj-coff.c (obj_coff_section): Formatting fix. + + * config/tc-i386.c (md_assemble): Accept branch hints as ",pt" and + ",pn". + +2001-06-08 H.J. Lu + + * config/tc-mips.c (warn_nops): New variable. Set to 0 to + disable warning about all NOPS that the assembler generates. + (macro): Warn NOPS generated only if warn_nops is not 0. + (md_shortopts): Add `n'. + (md_parse_option): Set warn_nops to 1 for `n'. + +2001-06-08 H.J. Lu + + * config/tc-mips.c (mips_ip): Properly handle illegal operands. + +2001-06-08 H.J. Lu + + * config/tc-mips.c (md_apply_fix): Don't adjust common + extern/weak symbols for ELF. + (md_estimate_size_before_relax): Treat weak like extern for + ELF. + (mips_fix_adjustable): Don't adjust extern/weak symbols for + ELF. + +2001-06-08 Alan Modra + + * Makefile.am: 'som' is not wrongly spelled 'some'. + * Makefile.in: Regenerate. + + * config/tc-mips.c (mips16_mark_labels): Reduce number of calls to + S_GET_VALUE by using a temp. + (append_insn): Likewise, and for S_SET_VALUE too. + (mips_emit_delays): Likewise. + (my_getExpression): Likewise. + (md_apply_fix): Likewise. Use "valueT" rather than "long" for "value". + (mips16_extended_frag): Remove code concerned with avoiding + locking in a frag address now that symbols are not finalized until + relaxation is complete. Cater for first relaxation pass having + bogus addresses. Use relax_marker to reliably determine whether a + symbol frag has been reached on the current pass. + +2001-06-07 H.J. Lu + + * configure.in: Move "mips-*-linux-gnu*" before "mips-*-gnu*". + * configure: Regenerate. + +2001-06-07 H.J. Lu + + * configure.in: Use MIPS_STABS_ELF for Linux/mips and remove + ecoff emulation. + * configure: Regenerate. + +2001-06-07 H.J. Lu + + * config/tc-mips.c (mips_pseudo_table): Add "extern" if + MIPS_STABS_ELF is defined. + +2001-06-06 Nick Clifton + + * as.c (show_usage): Remove L from listing options. It is not a + generic option. + +2001-06-06 Christian Groessler + + * config/tc-z8k.c: Removed many warnings by removing unused + variables and tagging unused parameters as such. + (md_begin): Fixed a typo (","instead of ";"). + (struct ctrl_table): Add parentheses to initialize array + correctly. + (struct flag_table): Likewise. + (struct intr_table): Likewise. + (struct table): Likewise. + (check_operand): "#if 0"'ed since it doesn't seem to be used. + +2001-06-06 Peter Jakubek + + * config/tc-m68k.c (md_show_usage): Add all supported ColdFire + options to list (e.g. m5206e, m5307, m5407). + +2001-06-06 Martin Schwidefsky + + * config/tc-s390.h (TC_FORCE_RELOCATION): Always emit relocations + BFD_RELOC_VTABLE_INHERIT and BFD_RELOC_VTABLE_ENTRY. + +2001-06-06 Alan Modra + + * config/tc-i386.c (md_assemble): Handle Pentium4 branch hints. + : Remove dead code. + +2001-06-06 Tracy Kuhrt + + * as.c (parse_args): Correct option name "listing-lhs-width2". + +2001-06-05 Nick Clifton + + * symbols.c (S_SET_EXTERNAL): Do not override a section symbol's + status. + +2001-05-30 Richard Henderson + + * read.c (emit_leb128_expr): Call md_cons_align. + +2001-05-28 Jeff Sturm + + * config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16, + BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64. + (tc_gen_reloc): Likewise. + (sparc_cons_align): Don't clear sparc_no_align_cons. + (cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for + BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set. + +2001-05-27 Alan Modra + + * write.c (relax_segment ): Check the section of a + symbol to determine whether it is absolute rather than comparing + its frag against zero_address_frag as listings play tricks with + frags. + + * config/tc-m68k.c (md_assemble): Ensure variable part of frag is + allocated in the same chunk as the fixed part. + +2001-05-26 Alan Modra + + * write.c (relax_segment ): Calculate growth using + addresses before stretch. Prevent repeated error messages. + From Peter Jakubek + Use as_bad_where and as_warn_where to pinpoint errors. + +2001-05-25 Alan Modra + + * symbols.c (resolve_symbol_value): Always set segment, even when + not finalizing symbol value. + + * config/obj-ieee.c (write_object_file): Set finalize_syms. + * config/obj-coff.c (write_object_file): Likewise. + * (size_section): Remove rs_space assert as fr_symbol is no longer + removed. + (fill_section): Likewise. + + * configure.in: Replace linuxoldld with linux*oldld. + * configure: Regenerate. + + From 2.11 branch 2001-03-30 Richard Henderson + * config/tc-i386.c (md_convert_frag): Don't die on local symbols + that have been finalized. + + * symbols.c (resolve_symbol_value): Clear sy_resolving before + taking exit_dont_set_value. + + * write.c (relax_segment ): Don't zap fr_symbol when + relaxing. + +2000-05-24 Tom Rix + + * config/obj-coff.c (add_lineno): xcoff allows negative line + numbers + * config/tc-ppc.c (ppc_stabx): fix generated symbol + +2001-05-24 Alan Modra + + * write.c (write_object_file): Set finalize_syms = 1 before + size_seg is called. + +2001-05-23 Thiemo Seufer + + * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit + architecture, remove erraneous ISA_MIPS32. + (md_show_usage): Add MIPS r12k support. + (mips_cpu_info_table): Add MIPS r12k support. + +2001-05-22 Alan Modra + + * config/tc-arc.c (md_assemble): Use is_end_of_line instead of + testing for NULs. + + * symbols.c (resolve_symbol_value): Remove "finalize" param, + instead use finalize_syms directly. Don't treat expressions + specially with regard to finalize_syms. Update calls to self. + (resolve_local_symbol): Update call to resolve_symbol_value. + (S_GET_VALUE): Likewise. Return resolve_symbol_value if + !finalize_syms. + * symbols.h (resolve_symbol_value): Update prototype. + * config/obj-aout.c (obj_crawl_symbol_chain): Update call + to resolve_symbol_value. + * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-coff.c (do_relocs_for): Likewise. + (yank_symbols): Likewise. + (fixup_segment): Likewise. + * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. + * config/tc-mips.c (md_convert_frag): Likewise. + * config/tc-ppc.c (ppc_frob_symbol): Likewise. + (ppc_fix_adjustable): Likewise. + * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. + (dwarf2dbg_convert_frag): Likewise. + * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. + (eh_frame_convert_frag): Likewise. + * expr.c (make_expr_symbol): Likewise. + * write.c (adjust_reloc_syms): Likewise. + (write_object_file): Likewise. + (relax_segment): Likewise. + (fixup_segment): Likewise. + (finalize_syms): Init to zero, and update comment. + (write_object_file): Set finalize_syms to 1 rather than 2. + * doc/internals.texi (sy_value): Mention finalize_syms. + (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called. + + * config/tc-m68k.c (relaxable_symbol): Only treat external symbols + as relaxable if embedded system, make weak syms non-relaxable. + Move definition.. + (tc_m68k_fix_adjustable): ..so it can be used here. + (md_apply_fix_2): Sign extend without conditional. + + * config/tc-v850.c: Update copyright. + +2001-05-16 Jeff Johnston + + * cgen.c (gas_cgen_tc_gen_reloc): Changed error message when + howto entry is not found. + +2001-05-15 Alexandre Oliva + + * config/tc-mn10300.c (mn10300_force_relocation): Don't + optimize differences between symbols in code sections to + constants. + (mn10300_fix_adjustable): Don't adjust to section+offset + relocations pointing at symbols in code sections. + +2001-05-16 Alan Modra + + * config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param + for 8 byte insns. + * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before + opcodes are output rather than after. Delete insn_size. + * config/tc-v850.c (md_assemble): Similarly, but delete + total_insn_size. + +2001-05-14 Richard Henderson + + * ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment + last change. + +2001-05-14 Richard Henderson + + * ehopt.c (get_cie_info): Rename from eh_frame_code_alignment; + also collect whether to expect an FDE augmentation. + (check_eh_frame): Rewrite as a state machine. Track where in + an FDE we are located, skip any augmentation. + (eh_frame_estimate_size_before_relax): Get code alignment from + the fragment subtype. + (eh_frame_relax_frag, eh_frame_convert_frag): Likewise. + * read.c (emit_leb128_expr): Call check_eh_frame. + +2001-05-14 Alexandre Oliva + + * config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info + before a relaxable insns. + +2001-05-13 Alexandre Oliva + + * config/tc-mn10300.c (tc_gen_reloc): Don't reject differences + between symbols if the base symbol is in the current section; + emit a PC-relative relocation instead. + +2001-05-12 Peter Targett + + * config/tc-arc.c: Update copyright and tidy source comments. + (md_pseudo_table): Add directive .cpu back as an alias for + .option. Add .file and .line for dwarf2 support. + (arc_mach_type): Make bfd_mach_arc_6 default. + (md_longopts): Add entry 'pre-v6' representing old command line + option when assembling for 'arc5' core versions. + (md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new + default behaviour. + (arc_code_symbol): Make symbol value for @h30 fixup expression + equal to O_constant. + (md_assemble): Call dwarf2_emit_insn. + Include "dwarf2dbg2.h". Formatting fixes throughout file. + * config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + * doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default. + +2001-05-11 Jakub Jelinek + + * config/tc-ia64.c (special_linkonce_name): New. + (make_unw_section): Map .gnu.linkonce.t.FOO text section into + .gnu.linkonce.ia64unw{,i}.FOO. + (ia64_elf_section_type): Handle .gnu.linkonce.ia64unw{,i}.FOO. + (dot_endp): Add comment about it. + +2001-05-11 Nick Clifton + + * config/tc-arm.c (arm_handle_align): When truncating an aligned + block, ensure that the low order bits of the alignment are + preserved. + +2001-05-10 Alan Modra + + * config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of + symbol_next. + + * config/tc-fr30.c (md_estimate_size_before_relax): Return size of + current variable part of frag. + * config/tc-m32r.c (md_estimate_size_before_relax): Likewise. + * config/tc-openrisc.c (md_estimate_size_before_relax): Likewise. + * config/tc-m68hc11.c (RELAX_STATE): Define. + (RELAX_LENGTH): Define. + (md_estimate_size_before_relax): Handle non-relaxable cases + separately from relaxable cases for clarity, and return correct + size for multi-pass relaxation. + * config/tc-tahoe.c (RELAX_LENGTH): Correct. + (md_estimate_size_before_relax): As for tc-m68hc11.c. + (md_convert_frag): Remove "length_code". + * config/tc-vax.c (RELAX_STATE): Define. + (RELAX_LENGTH): Define. + (md_relax_table): Add missing entry. + (md_estimate_size_before_relax): As for tc-m68hc11.c. + (md_convert_frag): Remove "length_code". + * config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and + don't bother setting fr_var. Return correct size for multi-pass + relaxation. + * config/tc-v850.c (md_estimate_size_before_relax): Rewrite. + (md_convert_frag): Don't bother clearing fr_var. + (md_pseudo_table): Correct initialization. + * config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var. + (md_estimate_size_before_relax): No need to set fr_var. + * config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var. + (md_estimate_size_before_relax): No need to set fr_var. + +2001-05-09 Richard Henderson + + * config/tc-ia64.c (generate_unwind_image): Align the fragment + beginning a function's unwind info block. + +2001-05-09 Alexandre Oliva + + * config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs. + +2001-05-08 Andreas Schwab + + * config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to + fx_pcrel_adjust explicitly sign extend when reading it. + +2001-05-08 Alan Modra + + * config/tc-m68k.c (md_estimate_size_before_relax): Set fr_var + from md_relax_table, and combine some switch cases. + +2001-05-06 Alexandre Oliva + + * config/tc-mn10300.c (md_assemble): Subtract operand->shift + from offset in non-pcrel operands too. + +2001-05-06 Nick Clifton + + * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define. + * config/tc-arm.c (arm_handle_align): Do not insert more than + MAX_MEM_FOR_RS_ALIGN_CODE bytes. + (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE. + +2001-05-03 Thiemo Seufer + + * Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h. + Run "make dep-am". + * Makefile.in: Regenerate. + * configure.in: Remove duplicate mips-*-ecoff* entry. + * configure: Regenerate. + + * config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry. + (n_names): Cast away type mismatch. + (ecoff_sec_sym_ok_for_reloc): Add unused attribute. + (obj_ecoff_frob_symbol): Likewise. + * ecoff.c: (add_file): Add unused attribute. + (ecoff_directive_begin): Likewise. + (ecoff_directive_bend): Likewise. + (ecoff_directive_def): Likewise. + (ecoff_directive_dim): Likewise. + (ecoff_directive_scl): Likewise. + (ecoff_directive_size): Likewise. + (ecoff_directive_type): Likewise. + (ecoff_directive_tag): Likewise. + (ecoff_directive_val): Likewise. + (ecoff_directive_endef): Likewise. + (ecoff_directive_end): Likewise. + (ecoff_directive_ent): Likewise. + (ecoff_directive_extern): Likewise. + (ecoff_directive_file): Likewise. + (ecoff_directive_fmask): Likewise. + (ecoff_directive_frame): Likewise. + (ecoff_directive_mask): Likewise. + (ecoff_directive_loc): Likewise. + (mark_stabs): Likewise. + (ecoff_stab): Likewise. + (ecoff_frob_symbol): Cast away type mismatch. + (ecoff_padding_adjust): Likewise. + (ecoff_build_symbols): Likewise. + (ecoff_build_procs): Likewise. + (ecoff_build_aux): Likewise. + (ecoff_build_strings): Likewise. + (ecoff_build_fdr): Likewise. + (ecoff_build_debug): Likewise. + * itbl-ops.c (itbl_assemble): Variable initialization. + +2001-05-03 Alan Modra + + * config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF + expressions rather than triggering an assert. + +2001-05-02 Johan Rydberg + + * config/tc-openrisc.c: New file. + * config/tc-openrisc.h: Likewise. + + * Makefile.am: Add OpenRISC target. + * Makefile.in: Regenerated. + + * configure.in (openrisc-*-*): Add target. + * configure: Regenerated. + +2001-05-02 Nick Clifton + + * config/tc-arm.c (arm_frag_align_code): Change error message to + more explanatory version. + +2001-04-29 Keith M Wesolowski + + * config/tc-mips.c (md_parse_option): Also accept + elf64-tradbigmips and elf64-tradlittlemips for OPTION_64. + +2001-04-27 David Mosberger + + * config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p() + argument passing order: predicate goes last, not first. + +2001-04-27 Sean McNeil + + * configure.in: Add arm-vxworks. + * configure: Regenerate. + +2001-04-26 Nick Clifton + + * config/tc-arm.c (arm_handle_align): New Function: Generate + no-op filled alignment frags. + (arm_frag_align_code): New Function: Create a code alignment frag. + (arm_init_frag): New Function: Initialse the target dependent + parts of a frag. + + * config/tc-arm.h (TC_FRAG_TYPE): Define. + (TC_FRAG_INIT): Define. + (HANDLE_ALIGN): Define. + (md_do_align): Define. + +2001-04-25 Nick Clifton + + * config/obj-coff.c (do_linenos_for): Check to see if the filename + symbol has been initialised before extracting its symbol index. + +2001-04-24 H.J. Lu + + * configure: Regenerated with the right version of autoconf. + +2001-04-24 Christian Groessler + + * config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now + generate R_CALLR and R_REL16 relocations + +2000-04-20 Jason Eckhardt + + * config/tc-d10v.h (tc_frob_label): Update the symbol's frag + since frag_now can change after d10v_cleanup is called. + +2001-04-16 David O'Brien + + * configure.in: Add the em type for FreeBSD targets. + * configure: Regenerate. + +2001-04-14 Alexandre Oliva + + * struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE. + * symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT. + + * config/tc-mn10300.c (md_assemble): Simplify offset adjustment of + pc-relative relocations not placed at the end of the instruction. + +2001-04-13 Jim Wilson + + * tc-ia64.c (is_conditional_branch): Return true for br, brl, and br. + excluding br.i. + +2001-04-13 Jakub Jelinek + + * config/obj-elf.c (obj_elf_change_section): Add entsize argument, + handle SHF_MERGE and SHF_STRINGS. + (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. + (obj_elf_section): Allow additional argument specifying entity size. + * write.c (adjust_reloc_syms): Keep relocations against local symbols + in SEC_MERGE sections. + +2001-04-12 Jason Merrill + + * dwarf2dbg.c (process_entries): Don't optimize redundant line notes. + +2001-04-12 Alexandre Oliva + + * expr.c (operand): Pass &c to md_parse_name(). + * config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust. + +2001-04-07 Steven J. Hill + + * config/tc-mips.c: Support ELF64 for traditional MIPS targets. + + * Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h. + * Makefile.in: Regenerated. + + * configure.in: Use traditional MIPS targets for Linux/MIPS. + * configure: Regenerated. + +2001-04-06 Alexandre Oliva + + * config/tc-mn10300.c (xr_registers): Added `pc'. + +2001-04-05 Alan Modra + + * configure.in: Add h8500-*-coff and h8500-*-rtems targets. + * configure: Regenerate. + + * config/tc-h8500.c (md_estimate_size_before_relax): Add missing + cases, and always return size based on current fr_subtype. + (md_begin): Move initialization of md_relax_table.. + (md_relax_table): ..to static initializer. Set rlx_length for + UNDEF_WORD_DISP cases. + * config/tc-w65.c (md_estimate_size_before_relax): Likewise. + (md_begin): Likewise. + (md_relax_table): Likewise. + * config/tc-mcore.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + Set rlx_backward and rlx_forward to zero for unused states. + * config/tc-sh.c (md_estimate_size_before_relax): Likewise. + (md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases. + (UNCOND12, UNCOND32): Remove duplicate defines. + +2001-04-04 Hans-Peter Nilsson + + * config/tc-cris.c (md_estimate_size_before_relax) : Don't emit + 32-bit branch, just set fragP->fr_subtype. Set fragP->fr_var. + : Always set fragP->fr_var using md_cris_relax_table. + Add cases to cover all relax states. + (cris_insn_first_word_frag): New. + (md_assemble): Call cris_insn_first_word_frag to get the first + frag in an insn, not frag_more. Don't call dwarf2_emit_insn at + end. Drop variable insn_size. + (gen_bdap): Call cris_insn_first_word_frag, not frag_more. + (cris_sym_leading_underscore): Wrap first as_bad parameter in _(). + (cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto. + + * write.c (write_object_file): Reset broken word state before + calling relax_seg. + +2001-03-31 Alan Modra + + * listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT + for one line if not already enabled. + * cond.c (s_elseif): Correct conditional assembly listing. + (s_else): Likewise. + + * cond.c (s_endif): Correct handling of "if .. elseif .." trees. + Don't abort on NULL current_cframe. + +2001-03-30 Alan Modra + + * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. + (dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value. + * config/obj-aout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-coff.c (do_relocs_for): Likewise. + (yank_symbols): Likewise. + (fixup_segment): Likewise. + * config/tc-ppc.c (ppc_frob_symbol): Likewise. + (ppc_fix_adjustable): Likewise. + * config/tc-mips.c (md_convert_frag): Likewise. + * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. + * ehopt.c (eh_frame_convert_frag): Likewise. + * expr.c (make_expr_symbol): Likewise. + + * frags.h (struct frag): Add last_fr_address. Reorder fields for + better packing. + * symbols.c (resolve_symbol_value): Don't fix expression values + until relaxation is complete. + (resolve_local_symbol): Pass `finalize_syms' to resolve_symbol_value. + (S_GET_VALUE): Likewise, and return unresolved expression value. + * write.c (finalize_syms): New. + (relax_and_size_seg): Split into.. + (relax_seg): New function, returns 1 if anything changed.. + (size_seg): And the remainder of relax_and_size_seg. + (fixup_segment): Arrange for final resolution of sym values. + (adjust_reloc_syms): Likewise. + (write_object_file): Likewise, and repeatedly call relax_seg until + nothing more changes. + (relax_segment): Return 1 if anything changed. Use correct types + for rs_org `target' and `after'. + * write.h (finalize_syms): Declare. + (relax_segment): Update prototype. + + * config/tc-sh.c (md_estimate_size_before_relax): Add extra + do-nothing cases to switch to avoid abort on a second relaxation + pass, and tidy code a little. + * config/tc-cris.c (md_estimate_size_before_relax): Likewise. + * config/tc-h8500.c (md_estimate_size_before_relax): Likewise. + * config/tc-w65.c (md_estimate_size_before_relax): Likewise. + * config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement. + (md_relax_table): Remove first four unused entries. Increment + rlx_length by one throughout table, and update comments to suit. + (md_estimate_size_before_relax): Return size of current variable + part of frag to reflect reality when relaxing more than once. + * config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout. + (COND32, UNCD32): Rename to DISP32 throughout. + (UNDEF_WORD_DISP): Renumber to 3. + (md_estimate_size_before_relax): Add extra do-nothing cases. + * config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite. + * config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite. + * config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to + handle word and dword branches. + +2001-03-29 Hans-Peter Nilsson + + * config/tc-cris.h (tc_fix_adjustable): Allow only + BFD_RELOC_CRIS_32_GOTREL of the PIC relocs. + * config/tc-cris.c (cris_get_pic_suffix): Correct reloc type in + example in comment to valid type. + +2001-03-28 H.J. Lu + + * read.c (equals): Set to local for COFF only if it hasn't been + defined before. + +2001-03-28 Alan Modra + + * config/tc-hppa.c (DEFAULT_LEVEL): Define. + (md_begin): Use it when setting default architecture. + +2001-03-27 Nick Papadonis + + * read.c (equals): (for COFF) default symbols to being local. + +2001-03-27 Hans-Peter Nilsson + + * configure.in (cris-*-*): Change default emulation to criself. + (cris-*-*aout*): New rule. + * configure: Regenerate. + +2001-03-26 Martin Schwidefsky + + * config/tc-s390.c (tc_s390_fix_adjustable): Add test for + BFD_RELOC_390_GOTENT. + * config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Add test for + BFD_RELOC_390_GOTENT. + +2001-03-26 Nick Clifton + + * config/tc-s390.h (TC_FORCE_RELOCATION): Define. + * config/tc-s390.c (s390_force_relocation): New function: Force + relocations for VTINHERIT relocs. + +2001-03-23 Stephane Carrez + + * doc/as.texinfo: Put @c man begin to generate the as man page. + When generating man, define all the variables. Re-organize some + options to obtain better indentation of man page. + * doc/Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable. + (as.1): Build from as.texinfo. + * doc/Makefile.in: Regenerate.Index: binutils/Makefile.am + +2001-03-25 Alan Modra + + * config/tc-i386.c (i386_scale): Accept an absolute expression for + scale factor, and return the end of the expression. + (i386_operand): Modify for above. + +2001-03-23 Nick Clifton + + * doc/as.texinfo: Document --listing-XXX command line switches. + Explain why listings behave differently when -pipe is used. + +2001-03-23 Richard Sandiford + + * write.c (fix_new_exp): Print an error if passed a register. + +2001-03-23 Hans-Peter Nilsson + + * config/tc-cris.c: Tweak attribution. Fix typos. PIC support. + (PIC_SUFFIX_CHAR): New macro. + (cris_get_pic_suffix, cris_get_pic_reloc_size): New functions. + (pic): New variable. + (md_longopts): New option --pic. + (OPTION_PIC): Define. + (md_estimate_size_before_relax): Tweak longish comment. + (md_create_long_jump): Make the long jumps generate ADD.D offset,PC. + (md_assemble): Handle a PIC relocation on prefix and normal + instruction operands. + : Handle + "complex" operand expressions. Call frag_more outside + gen_cond_branch_32 parameter list. + (cris_process_instruction): Handle PIC relocs on parsed + operand expressions. Validize PIC reloc sizes. + (get_autoinc_prefix_or_indir_op): Handle PIC suffix. + (gen_bdap): Handle "complex" operand expressions. + (gen_cond_branch_32): Use as_warn_where, not as_warn. Use + ADD.D offset,PC as jump instruction if generating PIC. Generate + error instead of crashing on complex expressions. + (cris_number_to_imm): Add segT parameter. All callers changed. + Use segT parameter, not now_seg, for segment of fixup. Handle + PCREL relocations but check that they are fully resolved. + (md_parse_option): Handle OPTION_PIC. + (tc_gen_reloc): Handle PIC relocs. + (md_show_usage): Update for --pic. + (md_apply_fix3): Renamed from md_apply_fix. + (md_pcrel_from): Accept emitting PCREL relocs when ELF. + (md_cris_force_relocation): Force relocation for PIC relocs. + + * config/tc-cris.h: Tweak attribution. + (MD_APPLY_FIX3): Define. + (IS_CRIS_PIC_RELOC): New macro. + (TC_RELOC_RTSYM_LOC_FIXUP): Define. + (tc_fix_adjustable): Don't adjust a globally visible symbol when + generating ELF. + (tc_frob_symbol): Avoid emitting undefined symbols. + +2001-03-20 Alan Modra + + * frags.h (struct frag): Add relax_marker. + * write.c (is_dnrange): Delete. + (relax_frag): Use correct types for `aim', `target', `address'. + Delete `offset', `was_address'. Test `relax_marker' instead of + using fragile (and slow) address test. + (relax_segment): Init and flip `relax_marker'. + +2001-03-19 Alan Modra + + * config/tc-i386.c (md_assemble ): Correct + used register name. + +2001-03-18 Stephane Carrez + + * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply + with 'Motorola specification for assembly language input standard'. + +2001-03-17 Richard Henderson + + * dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove. + (dwarf2_directive_loc): Don't use them. + (dwarf2_directive_file): Reject duplicate file definitions. + (get_filenum): Zero allocated memory. + (out_file_list): Complain about missing file definitions. + +2001-03-17 Alan Modra + + * read.c (do_org): Handle complex expressions. + * cgen.c (gas_cgen_finish_insn): Likewise. + +2001-03-15 David Mosberger + + * config/tc-ia64.c (md): New member keep_pending_output. + (ia64_flush_pending_output): Flush only if md.keep_pending_output + is not set. + (dot_xdata): Turn on md.keep_pending_output for the duration of + this function. + (dot_xfloat_cons): Ditto. + (dot_xstringer): Ditto. + (dot_xdata_ua): Ditto. + (dot_xfloat_cons_ua): Ditto. + +2001-03-15 Jim Wilson + + * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local + label support. + +2001-03-15 Alexandre Oliva + + * config/tc-sh.c (parse_reg): Match capital MACH and MACL. + +2001-03-15 DJ Delorie + + * stabs.c (s_stab_generic): Don't corrupt the notes obstack by + blindly freeing string if it isn't at the top of the obstack. + +2001-03-13 Alan Modra + + * config/tc-i386.c (RELOC_ENUM): Define. Use throughout file. + (NUM_FLAG_CODE): Define. + (lex_got): New function. + (got_reloc): New global var. + (x86_cons_fix_new): New function. + (x86_cons): New function. + (i386_immediate): Use lex_got here, replacing inline code. Change + "ignoring junk.." error message to "junk.." + (i386_displacement): Likewise. + * config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define. + (x86_cons): Declare. + (TC_CONS_FIX_NEW): Define. + (x86_cons_fix_new): Declare. + +2001-03-12 Nick Clifton + + * config/tc-arm.c (md_begin): Always set machine type based on + cpu_variant. + +2001-03-07 Alan Modra + + * config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc. + (md_assemble) : Use correct field of i.op[] + union. + : Use correct i.disp_reloc[]. + : Likewise. + +2001-03-06 Nick Clifton + + * config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in + BLX(1) instruction. + +2001-03-06 Igor Shevlyakov + + * config/tc-m68k.c : Add 5407 to archs[] table. + (HAVE_LONG_BRANCH): Add mcf5407. + (select_control_regs): Recognize 5407. + +2001-03-02 Dave Brolley + + * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather + than m32r_do_align. + +2001-03-02 Richard Sandiford + + * config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro. + (gen_to_words): Print warnings if NaNs are found and the target CPU + does not support them. Allow largest exponent to be used in normal + numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true. + +2001-02-28 Andreas Jaeger , Bo Thorsen + + * config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed + anymore since we use bfd_elf_generic_reloc now. + (md_apply_fix3): Only apply hack for partial_inplace if not using RELA. + +2001-02-27 Alan Modra + + * configure.in (BFD_VERSION): New. + (AM_INIT_AUTOMAKE): Use $BFD_VERSION. + * configure: Regenerate. + * Makefile.am: Run "make dep-am" + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + +2001-02-26 Mark Elbrecht + + * config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set + SEC_NEVER_LOAD when the 'n' flag is used. + Add SEC_NEVER_LOAD to matchflags. + +2001-02-24 Stephane Carrez + + * symbols.c (decode_local_label_name): Initialize message_format + only when an error is reported (perf pb due to I18N). + +2001-02-23 H.J. Lu + + * dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if + BFD_ASSEMBLER is not defined. + +2001-02-23 Richard Sandiford + + * config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as + done if it's against a symbol. + +2001-02-22 Timothy Wall + + * config/tc-ia64.c (ia64_target_format): Return ia64-aix-specific + target formats if applicable. + * config/te-ia64aix.h: New. Configuration for AIX5 on IA-64. + * Makefile.am (TARG_ENV_HFILES): Added config/te-ia64aix.h. + * Makefile.in: Regenerated. + * configure.in: Added configuration for ia64-*-aix*. + * configure: Regenerated. + +2001-02-21 David Mosberger + + * config/tc-ia64.c (enum operand_match_result): New type. + (operand_match): Change return type to operand_match_result. + Fix all returns appropriately, adding support for returning the + out-of-range result. + (parse_operands): New locals result, error_pos, out_of_range_pos, + curr_out_of_range_pos. Rewrite operand matching loop to give better + error messages. + +2001-02-21 David Mosberger + + * config/tc-ia64.c (struct unwind): Add member "prologue_count". + (dot_proc): Clear unwind.prologue_count to zero. + (dot_prologue): Increment unwind.prologue_count. + (dot_restore): If second operand is omitted, use + unwind.prologue_count -1 for "ecount" (# of additional regions to + pop). Decrement unwind.prologue_count by number of regions + popped. + +2001-02-21 Nick Clifton + + * doc/as.texinfo (Section): Note that some flags to the COFF + version of .section remove attributes rather than setting them. + +2001-02-20 Kazu Hirata + + * config/tc-pdp11.c: Fix formatting. + * config/tc-pdp11.h: Likewise. + +2001-02-20 Bo Thorsen + + * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT + entry. + +2001-02-18 David O'Brien + + * configure.in (cpu_type, arch): Add a generic FreeBSD specification as + all FreeBSD platforms should look the same at this level. + * configure: Rebuilt. + * config/tc-i386.c: Add support for old FreeBSD a.out hosts. + +2001-02-18 lars brinkhoff + + * Makefile.am: Add PDP-11 target. + * configure.in: Likewise. + * config/tc-pdp11.c: New file. + * config/tc-pdp11.h: New file. + * doc/Makefile.am: Add PDP-11 documentation. + * doc/all.texi: Likewise. + * doc/as.texinfo: Likewise. + * doc/c-pdp11.texi: New file. + +2001-02-16 matthew green + + * cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64. + +2001-02-13 Jim Wilson + + * config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED + reloc instead of a 0 reloc. + (md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it + as done. + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise. + +2001-02-13 Ian Lance Taylor + + * write.c (is_dnrange): Stop as soon as the address becomes + larger. + (relax_frag): Add segment parameter. Only call symbol_get_frag + once. Only call is_dnrange if the symbol is in the same segment, + and the symbol address is larger. + (relax_segment): Pass segment to md_relax_frag and relax_frag. + * write.h (relax_frag): Update declaration. + * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass + it to relax_frag. + * config/tc-m32r.c (m32r_relax_frag): Likewise. + * config/tc-m32r.h (md_relax_frag): Add segment parameter. + (m32r_relax_frag): Update declaration. + * config/tc-mips.h (md_relax_frag): Add segment parameter. + * config/tc-tic54x.h (md_relax_frag): Likewise. + * doc/internals.texi (CPU backend): Update documentation for + md_relax_frag. + +2001-02-13 Alan Modra + + * doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb. + Mention effect of < 386 architectures on jump promotion. + (i386-Jumps): xref above. Don't assume long disp is 32 bits. + + * config/tc-i386.c (no_cond_jump_promotion): New. + (set_cpu_arch): Parse "jumps" arch modifier. + (insn_size): Modify usage comment. + (ENCODE_RELAX_STATE): Reformat and protect macro arg. + (SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE. + (TYPE_FROM_RELAX_STATE): New define. + (UNCOND_JUMP, COND_JUMP): Renumber. + (md_relax_table): Reorder to suit. + (COND_JUMP86): New define. + (md_relax_table): Handle COND_JUMP86 cases. Add a few comments. + (md_assemble): Create frag var for jumps of max size, encode relax + state for COND_JUMP86. + (md_estimate_size_before_relax): Handle COND_JUMP86 cases, and + leave conditional jumps small if no_cond_jump_promotion. + (md_convert_frag): Likewise. + + * expr.c (operator): Don't bump input_line_pointer for two char + operators. Instead return operator size via new param num_chars. + (expr): Use above to parse multi-char operators correctly. + +2001-02-12 Jan Hubicka + + * config/tc-i386.c (i386_displacement): Fix handling of + BFD_RELOC_X86_64_GOTPCREL. + (i386_validate_fix): Likewise. + +2001-02-12 Philip Blundell + + * config/tc-arm.c (do_ldst): Improve warnings for unpredictable + ldrt/strt instructions. + +2001-02-11 Maciej W. Rozycki + + * config/tc-mips.c (macro): For M_LA_AB emit a + BFD_RELOC_MIPS_CALL16 relocation or a + BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of + BFD_RELOC_MIPS_GOT16 and + BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for + loading the jump register when generating SVR4_PIC code. + +2001-02-10 Chris Demetriou + + * configure.in: Make 'mipself' and 'mipsecoff' emulations + map to MIPS-specific files, as they used to do before the + change on 2000-05-21. + * configure: Regerate. + +2001-02-10 Chris Demetriou + + * config/tc-mips.c (md_parse_option): Don't try to compile + ELF-only option code if not ELF. + +2001-02-08 David Mosberger + + * config/tc-ia64.h (md_elf_section_type): New macro. + (ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info + (they're now handled via ia64_elf_section_type. + + * config/tc-ia64.c (unwind): New members saved_text_seg, + saved_text_subseg, and force_unwind_entry. + (optimize_unw_records): New function to optimize away unnecessary + unwind directives. + (ia64_elf_section_type): New function. + (output_unw_records): Generate unwind info only if the size is + non-zero or if it's forced for some other reason (e.g., + handlerdata or a personality routine). + (generate_unwind_image): Don't switch back to previous + section---stay inside the unwind info section instead so that + handlerdata that may follow goes into the right place. + (dot_handlerdata): Force generation of unwind entry and save the + current active text segment before generating unwind image. + (dot_unwentry): Force generation of unwind entry. + (dot_personality): Ditto. + (dot_endp): Generate unwind table entry only if there is + some unwind info or the unwind entry was forced. + + * config/tc-ia64.c (make_unw_section_name): New macro to form + unwind section name. + (generate_unwind_image): Add "text_name" argument. Use it to + form unwind section name. + (dot_handlerdata): Determine current segment (section) name and + pass it to generate_unwind_image(). + (dot_endp): Determine current segment (section) name and use + it to determine the appropriate unwind section name. + (ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to + n, fill, and max arguments. + +2001-02-09 Schwidefsky + + * Makefile.am: Add linux target for S/390. + * configure.in: Likewise. + * config/tc-s390.c: New file. + * config/tc-s390.h: New file. + +2001-02-09 Alexandre Oliva + + * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for + 2byte, 4byte and 8byte. + +2001-02-08 Alan Modra + + * config/tc-hppa.c (pa_build_unwind_subspace): Don't call + md_number_to_chars with size > sizeof (valueT). + +2001-02-06 H.J. Lu + + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if + there is no relocation. + +2001-02-06 H.J. Lu + + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined. + + * config/tc-ia64.c (md_parse_option): Only accept the valid + ia64 options on "-axxx". + +2001-02-05 Jim Wilson + + * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of + aborting for invalid operands. + +2001-02-06 Alan Modra + + * config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather + than via pointer. Update all callers. + (UNWIND_LOW32): Define. + (UNWIND_HIGH32): Define. + (pa_build_unwind_subspace): Use the above macros instead of dumping + bitfields directly. Call frag_more once rather than multiple times. + (md_assemble): Use UNWIND_LOW32. + (pa_entry): Likewise + (pa_procend): Likewise. + (process_exit): Use UNWIND_HIGH32. + +2001-02-04 Stephane Carrez + + * config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header + function to select the header according to the cpu. + (md_after_pass_hook, md_do_align): Remove. + (md_cleanup, m68hc11_cleanup): Remove. + (md_pcrel_from_section): Declare. + * config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size. + (build_jump_insn, build_insn): Likewise. + (m68hc11_listing_header): New function. + (m68hc11_cleanup): Remove. + +2001-02-02 Stephane Carrez + + * config/tc-m68hc11.c (relaxable_symbol): Relax externally visible + symbols because there is no support for shared libraries and these + symbols can't be overridden (unless they are weak). + +2001-02-01 Momchil Velikov + + * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations + for the compilation unit with a zero byte. + +2001-01-30 Alan Modra + + * config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute + destinations. Correct range check for 17 and 22 bit branches. + +2001-01-25 Nick Clifton + + * config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is + still set. Issue an error message instead. + (md_estimate_size_before_relax): Delete unused variable + 'buffer_address'. Fixup parentheses around if statement. + +2001-01-23 Kazu Hirata + + * as.c: Fix formatting. + * ehopt.c: Likewise. + * messages.c: Likewise. + * stabs.c: Likewise. + * symbols.c: Likewise. + +2001-01-23 Ben Elliston + + * config/tc-m32r.c (m32r_handle_align): Declare type of fragp. + +2001-01-22 Kazu Hirata + + * config/tc-alpha.c: Fix formatting. + +2001-01-19 Kazu Hirata + + * config/tc-alpha.c: Fix formatting. + +2001-01-18 Kazu Hirata + + * config/tc-alpha.c: Fix formatting. + +2001-01-18 Nick Clifton + + * config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and + "da" flags. + (stm_flags): Remove redundant bit from "ed" and "da" flags. + +2001-01-18 Alexandre Oliva + + * configure.in (cpu_type, arch): Match i386 too. + * configure: Rebuilt. + +2001-01-16 Kazu Hirata + + * config/tc-i386.c: Fix formatting. + +2001-01-16 Alan Modra + + * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32 + relocs for .PARISC.unwind section. + + * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind + depending on section flags, not just for .text. + +2001-01-15 Jim Wilson + + * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives + not immediately followed by an instruction. + +2001-01-15 Kazu Hirata + + * config/tc-m68hc11.c: Fix formatting. + +2001-01-15 Nick Clifton + + * symbols.c (colon): Change 'already defined symbol' from a + fatal error to an ordinary error. There is no reason why this + error should be fatal. + + * message.c (as_fatal): Delete output file, if one has been + created. + +2001-01-14 Alan Modra + + * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants. + +2001-01-14 Kazu Hirata + + * config/tc-alpha.c: Fix formatting. + * config/tc-arc.c: Likewise. + * config/tc-arc.h: Likewise. + * config/tc-d10v.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + + * config/tc-arc.c: Fix formatting. + + * config/tc-arc.c: Fix formatting. + +2001-01-14 Alan Modra + + * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for + both 32 and 64 bit ELF. + + * config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand + and don't bother storing `m' for "ce" completer. Tidy handling of + 'J' and 'K' operands to suit. Handle '<' and '>' operands. + +2001-01-14 Jan Hubicka + + * config/tc-i386.h (TARGET_MACH): New macro. + (i386_mach): Declare. + * config/tc-i386.c (i386_mach): New function. + +2001-01-13 Philip Blundell + + * doc/as.texinfo: Fix spelling and cross-references. + + * doc/c-arm.texi: Fix typos. Say that `;' is a line separator + character for all systems, not just GNU/Linux. Make it explicit + that `-k' doesn't affect code generation, just ELF flags. + +2001-01-13 Jan Hubicka + + * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary + instructions. + +2001-01-12 Frank Ch. Eigler + + * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn. + +2001-01-12 Nick Clifton + + * as.c (print_args): Update copyright date to 2001. + +2001-01-12 Peter Targett + + * doc/c-arc.texi: New file. + Some sections to be expanded. + +2001-01-12 Alan Modra + + * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF. + (md_parse_option): Always accept "--32". + +2001-01-11 Peter Targett + + * as.h (TC_ARC): Ensure struc-symbol.h included. + * as.c (dwarf2dbg.h): Include to remove implicit declaration + warnings. + * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define. + (TARGET_SYMBOL_FIELDS) added. + + * doc/Makefile.am (CPU_DOCS): Added c-arc.texi. + * doc/c-arc.texi: New file. + Some sections to be expanded. + * doc/as.texinfo: Update command-line options. + Removed outdated text for ARC dependant features, instead include + text from above file. + + * config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag. + (TARGET_SYMBOL_FIELDS): Alias to previous definition. + (targ-cpu.h) header. + * config/tc-arc.h: + * config/tc-arc.c: New updated configuration for + ARC, including selection of core variants, and extensibility of + instructions, registers etc. through directives. + + * config/tc-arc.c (arc_extinst): Minor corrections for + error messages. + (arc_common) Likewise. Make alignment argument optional for local + symbols also, with default of zero. + +2001-01-11 Stephane Carrez + + * config/tc-m68hc11.c (md_estimate_size_before_relax): Fix + STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset). + (build_indexed_byte): Don't relax indexed byte, use 16-bit offset + and fix_new_exp() instead. + (md_convert_frag): For indexed post byte use the symbol value + rather than the displacement. + (md_relax_table): Fix indexed offset relax. + +2001-01-11 Stephane Carrez + + * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't + relax weak symbols. + (relaxable_symbol): New function. + +2001-01-11 Andreas Jaeger + + * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's + not used anywhere. + +2001-01-10 Nick Clifton + + * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. + * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF + +2001-01-10 Nick Clifton + + * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic + character used to dollar local symbols. + (LOCAL_LABEL_CHAR): New constant - the magic character used to + local label symbols. + (dollar_label_name): Use DOLLAR_LABEL_CHAR. + (fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX, + if defined. + Use LOCAL_LABEL_CHAR. + (decode_local_label_name): Skip LOCAL_LABEL_PREFIX. + Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. + (S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR. + +2001-01-08 Bo Thorsen + + * config/tc-i386.c (i386_immediate, i386_displacement): + GOTPCREL check fix. + +2001-01-07 Ian Lance Taylor + + * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted + in last change. + +2001-01-07 Philip Blundell + + * doc/as.texinfo (Bug Reporting): Update email address for + reports. + * README: Likewise. + +2001-01-06 Jan Hubicka + + * configure.in: Define DEFAULT_ARCH for i386. + * config/tc-i386.c (md_assemble): Return after the error message; + move testing for 64bit operands to proper place. + +2001-01-06 Jan Hubicka , Andreas Jaeger + + * doc/as.texinfo: Document '#' as comment character for i386 and + x86_64. Add AMD x86-64 into menu of machine dependent information. + + * doc/c-i386.texi: Document x86_64 extensions. + +2001-01-05 Jan Hubicka + + * config/tc-i386.c (md_assemble): Handle third byte of the opcode as prefix. + +2001-01-04 Jan Hubicka + + * config/tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry. + * NEWS: Add note about Pentium4 support. + +2001-01-04 Jan Hubicka + + * config/tc-i387.c (pi, pte, pt): Update. + (type_names): Add new types. + +2001-01-03 Jan Hubicka + + * config/tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow, + CpuUnknown): Renumber + (CpuP4, CpuSSE2): New. + (CpuUnknownFlags): Add CpuP4 and CpuSSE2 + +2001-01-03 Philip Blundell + + * config/tc-alpha.c (alpha_force_relocation): Handle vtable + relocs. + (alpha_fix_adjustable): Likewise. + (md_apply_fix): Likewise. + +2000-12-31 H.J. Lu + + * listing.c (listing_message): Allocate string only if it is + used. + + * configure: Rebuild. + +2000-12-31 Hans-Peter Nilsson + + * doc/internals.texi (Relaxing with a table) : + Point out caveats with generating fixups for the opcode in a frag. + +2000-12-30 Jan Hubicka + + * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* + * NEWS: Add x86_64. + +2000-12-29 H.J. Lu + + * listing.c (calc_hex): Print the variable part only if the + fragment type is rs_fill. + +2000-12-29 Hans-Peter Nilsson + + * doc/internals.texi (tc_conditional_pseudoop, + TC_LINKRELAX_FIXUP): Fix typos. + +2000-12-28 Richard Henderson + + * write.c (subsegs_finish): Fix thinko last change -- don't + "optimize" the alignment == 0 case. + +2000-12-28 Richard Henderson + + * as.h (rs_align_test): New. + * frags.c (NOP_OPCODE): Move default from read.c. + (MAX_MEM_FOR_RS_ALIGN_CODE): New default. + (frag_align_code): New. + * frags.h (frag_align_code): Declare. + * read.c (NOP_OPCODE): Remove. + (do_align): Use frag_align_code. + * write.c (NOP_OPCODE): Remove. + (get_recorded_alignment): New. + (cvt_frag_to_fill): Handle rs_align_test. + (relax_segment): Likewise. + (subsegs_finish): Align last subseg in section to the + section alignment. Use frag_align_code. + * write.h (get_recorded_alignment): Declare. + * config/obj-coff.c (size_section): Handle rs_align_test. + (fill_section, fixup_mdeps): Likewise. + (write_object_file): Use frag_align_code. + + * config/tc-alpha.c (alpha_align): Use frag_align_code. + (alpha_handle_align): New. + * config/tc-alpha.h (HANDLE_ALIGN): New. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-i386.h (md_do_align): Use frag_align_code. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. + (ia64_handle_align): New. + * config/tc-ia64.h (HANDLE_ALIGN): New. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-m32r.c (m32r_do_align): Remove. + (m32r_handle_align): New. + (fill_insn): Use frag_align_code. + * config/tc-m32r.h (md_do_align): Remove. + (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. + * config/tc-m88k.c, config/tc-m88k.h: Similarly. + * config/tc-mips.c, config/tc-mips.h: Similarly. + + * config/tc-sh.c (sh_cons_align): Use rs_align_test. + (sh_handle_align): Likewise. Handle rs_align_code. + (sh_do_align): Remove. + * config/tc-sh.h (md_do_align): Remove. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + + * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. + (sparc_handle_align): Likewise. Handle rs_align_code. + * config/tc-sparc.h (md_do_align): Remove. + (MAX_MEM_FOR_RS_ALIGN_CODE): New. + +2000-12-22 DJ Delorie + + * config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg + when we assemble the first half of a pair. + +2000-12-22 H.J. Lu + + * config/tc-i386.c (reloc): Update the macro for non-bfd + assembler. + (BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler. + +2000-12-22 H.J. Lu + + * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER. + +2000-12-20 Jan Hubicka + + * config/tc-i386.h (i386_target_format): Define even for ELFs. + (QWORD_MNEM_SUFFIX): New macro. + (CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags): + New macros + (CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber. + (IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix, + ImmExt): Renumber. + (Size64, No_qSuf, NoRex64, Rex64): New macros. + (Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros. + (Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32, + InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc, + SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem): + Renumber. + (Reg, WordReg): Add Reg64. + (Imm): Add Imm32S and Imm64. + (EncImm): New. + (Disp): Add Disp64 and Disp32S. + (AnyMem): Add Disp32S. + (RegRex, RegRex64): New macros. + (rex_byte): New type. + * config/tc-i386.c (set_16bit_code_flag): Kill. + (fits_in_unsigned_long, fits_in_signed_long): New functions. + (reloc): New parameter "signed"; support x86_64. + (set_code_flag): New. + (DEFAULT_ARCH): New macro; default to "i386". + (default_arch): New static variable. + (struct _i386_insn): New fields Operand_PCrel; rex. + (flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT" + (flag_code): New enum and static variable. + (use_rela_relocations): New static variable. + (flag_code_names): New static variable. + (cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64. + (cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to + K6 and Athlon. + (i386_align_code): Return plain "nop" for x86_64. + (mode_from_disp_size): Support Disp32S. + (smallest_imm_type): Support Imm32S and Imm64. + (offset_in_range): Support size of 8. + (set_cpu_arch): Do not clobber to Cpu64/CpuNo64. + (md_pseudo_table): Add "code64"; use set_code_flat. + (md_begin): Emit sane error message on hash failure. + (tc_i386_fix_adjustable): Support x86_64 relocations. + (md_assemble): Support QWORD_MNEM_SUFFIX, REX registers, + instructions supported on particular arch just partially, + output of 64bit immediates, handling of Imm32S and Disp32S type. + (i386_immedaite): Support x86_64 relocations; support 64bit constants. + (i386_displacement): Likewise. + (i386_index_check): Cleanup; support 64bit addresses. + (md_apply_fix3): Support x86_64 relocation and rela. + (md_longopts): Add "32" and "64". + (md_parse_option): Add OPTION_32 and OPTION_64. + (i386_target_format): Call even for ELFs; choose between + elf64-x86-64 and elf32-i386. + (i386_validate_fix): Refuse GOTOFF in 64bit mode. + (tc_gen_reloc): Support rela relocations and x86_64. + (intel_e09_1): Support QWORD. + +2000-12-15 Diego Novillo + + * config/tc-i386.c (intel_e09_1): Only flag as a memory operand if + it's not an offset expression. + (intel_e10_1): Ditto. Also, if the operand is an offset expression, + keep the braces '[' and ']' in the output string. + (intel_e11): Ditto. Also remove comparison intel_parser.op_modifier + != FLAT. There is no such op_modifier. + +2000-12-14 Michael Sokolov + + * dwarf2dbg.c: If we don't have , try including + if we have it. + +2000-12-13 Kazu Hirata + + * as.h: Fix formatting. + * cgen.h: Likewise. + * dwarf2dbg.c: Likewise. + * input-scrub.c: Likewise. + * read.h: Likewise. + +2000-12-13 Mark Elbrecht + + * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes. + configure: Regenerate. + +2000-12-13 Michael Sokolov + + * dwarf2dbg.c: #include only if it exists. + +2000-12-13 Rodney Brown + + * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo. + (md_apply_fix): Here too. + +2000-12-12 Jim Wilson + + * config/tc-ia64.h (ia64_init): Add prototype. + +2000-12-12 H.J. Lu + + * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined. + + * read.h (outputting_stabs_line_debug): Change it to int. + * stabs.c (outputting_stabs_line_debug): Likewise. + +2000-12-12 Geoffrey Keating + + * config/obj-bout.c (obj_crawl_symbol_chain): Don't take + the address of a function result. + +2000-12-12 Franz Sirl + + * config/tc-ppc.c (md_pseudo_table): Add .file and .loc. + (md_assemble): Call dwarf2_emit_insn. + (shlib): Fix typo SHILB -> SHLIB. + (md_parse_option): Likewise. + (ppc_elf_validate_fix): Likewise: + * config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + +2000-12-12 Nick Clifton + + * cgen.h: Fix formatting. + * input-scrub.c: Fix formatting. + * macro.c: Fix formatting. + * config/tc-mips.c: Fix formatting. + * doc/c-mips.texi: Fix formatting. + +2000-12-11 Jan hubicka + + * config/tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel + mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX + references. + (intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse + otherwise. + * config/tc-i386.h (DWORD_MNEM_SUFFIX): Kill. + (No_dSuf): Kill. + + * i386.h (*_Suf): Remove No_dSuf. + (d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP) + Remove. + (i386_optab): Remove 'd' in the suffixes. + +2000-12-06 Mark Elbrecht + + * config/tc-i386.c (T_SHORT): Undefine before defining. + +2000-12-05 Kazu Hirata + + * config/tc-mips.c: Fix formatting. + +2000-12-04 Matthew Hiller + + * config/tc-d10v.c (flag_allow_gstabs_packing): New variable. + (md_longopts): New options --gstabs-packing, --no-gstabs-packing. + (md_show_usage): Ditto. + (md_parse_option): Ditto. + (d10v_cleanup): Writes pending instruction only if + ! outputting_stabs_line_debug || ! flag_allow_gstabs_packing. + Fix compile time warning messages. + + * doc/c-d10v.texi: Documents new options. + +2000-12-04 Matthew Hiller + + * stabs.c (outputting_stabs_line_debug): New variable. + (stabs_generate_asm_lineno): Set outputting_stabs_line_debug at + function entry and unset at function exit. + + * read.h (outputting_stabs_line_debug): New extern declaration. + + * as.c: Include dwarf2dbg.h for definition of dwarf2_finish. + + * dwarf2dbg.c: Fix compile time warning messages. + +2000-12-03 Kazu Hirata + + * config/tc-a29k.c: Fix formatting. + * config/tc-alpha.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-cris.c: Likewise. + * config/tc-hppa.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-i860.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-pj.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + +2000-12-01 Chris Demetriou + + * config/tc-mips.c (mips_ip): When calculating offsets, + don't accept as constant the difference between the + addresses of symbols in two different sections. + + * config/tc-mips.c (macro_build): Add new 'U' and 'J' operand + specifiers. + (validate_mips_insn): Likewise. Also, update 'B' operand + specifier to use OP_*_CODE20 constants and delete 'm' operand + specifier. + (mips_ip): Remove 'm' operand specifier, add 'U' and 'J' + operand specifiers. Change warning generated by 'B' operand + specifier to reflect its new multi-purpose usage. + + * config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than + -1, and update comment. + (file_mips_isa): Likewise. + (mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment. + (ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use + ISA_* constants rather than hard-coded numbers. + (mips_cpu_info): New structure. + (mips_cpu_info_table): New table describing CPU and ISA names + and numbers. + (mips_cpu_info_from_name, mips_cpu_info_from_isa, + mips_cpu_info_from_cpu): New functions. + (mips_isa_to_str): New function to get string for ISA name. + (mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and + return const char *. + (md_begin): Redo CPU and ISA selection logic, using + mips_cpu_info_from_*. Convert to use ISA_* constants rather + than hard-coded numbers. + (append_insn, mips_emit_delays, macro, macro2): Convert to use + ISA_* constants rather than hard-coded numbers. + (mips_ip): Convert to use mips_isa_to_str to get ISA name. + (md_longopts): Delete OPTION_NO_MIPS32. + (md_parse_option): Convert to use ISA_* constants rather than + hard-coded numbers. Make OPTIONS_MIPS32 case treat MIPS32 + as an ISA. Delete OPTION_NO_MIPS32 case. Convert OPTION_MCPU + to use strcasecmp to recognize "default" and to use + mips_cpu_info_from_name to get CPU numbers from argument. + (md_show_usage): Move -mips32 so it's with the rest of the ISA + flags. Change 4Kc, 4Kp and 4Km CPU entries to just be + mips32-4k. + (s_mipsset): Accept ISA value 32. + * doc/as.texinfo: Clean up MIPS options summary slightly, + remove -no-mips32. Add note about -mips4 and -mips32 + specifying those ISA levels. Delete -mips32 and -no-mips32 + cpu flag descriptions. + * doc/c-mips.texi: Add -mips32 to list of ISA switches. Clean + up the supported CPU switch list, and replace 4Kc, 4Km, and + 4Kp entries with a single mips32-4k entry. Note that you can + use ".set mips32". + + * config/tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and + ISA_MIPS64. + (md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for + -mips5 and -mips64. + (md_parse_option): Add cases for OPTION_MIPS5 and + OPTION_MIPS64. + (md_show_usage): Mention -mips5 and -mips64 arguments. + (s_mipsset): Add cases for MIPS5 and MIPS64. + (mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs + and pseudo-CPUs. + * doc/as.texinfo: Mention -mips5 and -mips64 options + and their meanings. + * doc/c-mips.texi: Likewise. Also update introduction + and ".set" usage information. + + * config/tc-mips.c (md_show_usage): Add "sb1" to the + CPU list. + (mips_cpu_info_table): Add SB-1 entries. + * doc/c-mips.texi: Add "sb1" to the list of CPUs + known to the -mcpu option. + + * doc/as.texinfo: Correct description of MIPS -mcpu + option, by copying some of the text from doc/c-mips.texi. + +2000-12-01 Joel Sherrill + + * configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*): + New targets. + (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets. + (sparc*-*-rtems*): Switched from a.out to ELF. + * configure: Regenerate. + * config.in: Regenerate. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * po/gas.pot: Regenerate. + +2000-11-30 Philip Blundell + + * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists, + even in non BFD_ASSEMBLER case. + +2000-11-30 Diego Novillo + + * config/tc-i386.c (md_assemble): Swap i.disp_relocs when using intel + syntax. + +2000-11-29 Richard Henderson + + * dwarf2dbg.c: Rewrite from scratch. Queue all debugging output + until dwarf2_finish; use relaxation to get cross-fragment offsets; + thread multiple subsegments properly; handle multiple code + sections properly; emit proper compilation unit info for assembler + generated debugging. + + * as.h (enum _relax_state): Add rs_dwarf2dbg. + * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. + (dwarf2dbg_estimate_size_before_relax): Declare. + (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. + * write.c: Include dwarf2dbg.h. + (cvt_frag_to_fill): Handle rs_dwarf2dbg. + (relax_segment): Likewise. + +2000-11-28 Hans-Peter Nilsson + + * config/tc-sh.c (md_convert_frag) : Use as_bad_where instead of as_bad. Tweak error message + accordingly. Stabilize frag by updating fix part and resetting + variant part. + : Ditto. + (sh_elf_cons): Cast *input_line_pointer to unsigned char when + indexing is_end_of_line[]. + (md_assemble): Initialize size to 0. + (md_section_align): Mark parameter seg as unused. + (parse_reg): Parse names case-insensitively. + +2000-11-28 Kazu Hirata + + * config/obj-aout.h: Fix formatting. + * config/obj-bout.h: Likewise. + * config/obj-coff.c: Likewise. + * config/obj-coff.h: Likewise. + * config/obj-elf.h: Likewise. + * config/obj-som.h: Likewise. + * config/obj-vms.c: Likewise. + * config/obj-vms.h: Likewise. + * config/tc-h8300.h: Likewise. + * config/tc-ns32k.h: Likewise. + * config/tc-sparc.h: Likewise. + * config/tc-tic54x.h: Likewise. + * config/tc-z8k.h: Likewise. + +2000-11-28 Nick Clifton + + * doc/as.1 (COPYING): Mention that the GNU Free Documentation + License is present in the sources, but not the output, and + also available from the GNU website. + (GNU Free Documentation License): Comment out this section. + +2000-11-28 Hans-Peter Nilsson + + * Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff + targets. Remove i860 from valid a.out targets. + * Makefile.in: Regenerate. + + * config/tc-cris.c: Include dwarf2dbg.h. + (md_pseudo_table): Add .file and .loc. + (md_assemble): Call dwarf2_emit_insn if generating ELF. + (s_cris_file, s_cris_loc): New. + * config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-11-28 Alan Modra + + * expr.c (STANDARD_MUL_PRECEDENCE): Correct value. + (MRI_MUL_PRECEDENCE): Likewise. + (op_rank): Fix a comment typo. + +2000-11-26 Stephane Carrez + + * config/tc-m68hc11.c (build_indexed_byte): Print the offset in + the error message. + (get_operand): Fix analysis for movw/movb instructions. + +2000-11-24 Nick Clifton + + * configure.in (xscale-elf): Add target. + (xscale-coff): Add target. + * configure: Regenerate. + + * config/tc-arm.c (ARM_EXT_V5E): New ARM architecture + extenstion. + (ARM_EXT_XSCALE): New ARM architecture extension. + (ARM_LONGMUL): Rename to ARM_EXT_LONGMUL. + (ARM_HALFWORD): Rename to ARM_EXT_HALFWORD. + (ARM_THUMB): Rename to ARM_EXT_THUMB. + (ARM_ARCH_V4): Remove processor from architecture. + (ARM_ARCH_3M): New architecutre definition. + (ARM_ARCH_V5TE): New architecutre definition. + (ARM_ARCH_XSCALE): New architecutre definition. + (CPU_DEFAULT): Allow to be defaulted to XScale. + (atpcs): New boolean variable. + (ldr_flags): Support 'd' flag for double word loads. + (str_flags): Support 'd' flag for double word stored. + (do_mia): New function. + (do_mar): New function. + (do_mra): New function. + (do_pld): New function. + (do_ldrd): New function. + (do_blx): New function. + (do_bkpt): New function. + (do_clz): New function. + (do_lstc2): New function. + (do_cdp2): New function. + (do_t_blx): New function. + (do_t_bkpt): New function. + (do_smla): New function. + (do_smlal): New function. + (do_smul): New function. + (do_qadd): New function. + (do_co_reg2c): New function. + (LONGEST_INSN): Redefine to 7. + + * doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs + command line switches. + +2000-11-22 Jim Wilson + + * config/tc-ia64.c (pseudo_func): Add missing initializers. + (struct rsrc): Make line unsigned. + (gr_values): Add missing initializer. + (SLOT_NUM_NOT_SET): Add unsigned cast. + (ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix, + dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save, + dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata, + dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf, + dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state, + dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body, + dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln, + dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource, + md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align): + Add ATTRIBUTE_UNUSED to unused parameters. + (convert_expr_to_ab_reg): Add parens. + (convert_expr_to_xy_reg): Add parens. Comment out >= REG_GR test. + (dot_prologue): Initialize grsave when declared. + (md_pseudo_table): Add missing initializers. + (operand_match): Add casts to bfd_vma. + (emit_one_bundle): Delete unused local prev. Make required_template + unsigned. + (specify_resource): Cast i to unsigned. + (note_register_values): Use fprintf_vma. + (print_dependency): Likewise. + +2000-11-21 Jim Wilson + + * config/tc-ia64.c (generate_unwind_image): Call record_alignment + for unwind info section. + (dot_endp): Likewise for unwind section. + + * config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to + fix_new_exp. + +2000-11-21 Jakub Jelinek + + * config/tc-sparc.c (md_pseudo_table): Add .file and .loc. + (output_insn): Call dwarf2_emit_insn. + * config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + +2000-11-17 Richard Henderson + + * ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all + callers. Don't switch segments. Expect CIE == -1 in .debug_frame. + (check_eh_frame): Handle .eh_frame and .debug_frame concurrently. + +2000-11-17 Nick Clifton + + * config/tc-arm.c (md_pseudo_table): Add support for .line and + .file pseudo ops. + +2000-11-17 Richard Henderson + + * config/tc-i386.c (md_pseudo_table): Add .file and .loc. + +2000-11-17 Richard Henderson + + * dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number. + * config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for + tri-state definition of alpha_flag_mdebug. + * config/tc-alpha.c (alpha_flag_mdebug): Init to -1. + (s_alpha_file): Store first .file directive. + (s_alpha_stab): New. + (md_pseudo_table): Add stabs and stabn. + +2000-11-17 Richard Henderson + + * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn. + +2000-11-17 Richard Henderson + + * as.c (debug_type): Init to DEBUG_UNSPECIFIED. + (main): Call dwarf2_finish. + * as.h (debug_type): Clarify documentation of the meaning + of this variable. + * dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1. + (print_stats): Fix parenthesis problem. + (now_subseg_size): New. + (dwarf2_finish): Use it. If DEBUG_DWARF2, emit bits for .debug_info. + (dwarf2_directive_file): Don't set debug_type. + (dwarf2_where): Honor DEBUG_DWARF2 first. + (dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno; + do nothing if not emitting dwarf2 debug info, or no work. + * dwarf2dbg.h (dwarf2_emit_insn): Update. + * ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED. + (ecoff_new_file): Likewise. + * read.c (generate_lineno_debug): Kill ecoff hackery. Update + commentary wrt dwarf2. + + * config/tc-alpha.c (alpha_adjust_symtab_relocs): Add + ATTRIBUTE_UNUSED as needed. + (emit_insn): Call dwarf2_emit_insn. + (s_alpha_file): New. + (s_alpha_loc): New. + (s_alpha_coff_wrapper): Don't handle them. + (md_pseudo_table): Update for .file and .loc. + * config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New. + + * config/tc-arm.c (output_inst): Update for dwarf2_emit_insn; + don't protect with debug_type. + * config/tc-hppa.c (md_assemble): Likewise. + * config/tc-m68hc11.c (m68hc11_new_insn): Likewise. + * config/tc-mn10300.c (md_assemble): Likewise. + * config/tc-sh.c (md_assemble): Likewise. + * config/tc-v850.c (md_assemble): Likewise. + + * config/tc-arm.c (arm_end_of_source): Remove. + * config/tc-hppa.c (pa_end_of_source): Remove. + * config/tc-m68hc11.c (m68hc11_end_of_source): Remove. + * config/tc-mn10300.c (mn10300_finalize): Remove. + * config/tc-sh.c (sh_finalize): Remove. + * config/tc-v850.c (sh_finalize): Remove. + + * config/tc-arm.h (md_end): Remove. + * config/tc-hppa.h (md_end): Remove. + (DWARF2_LINE_MIN_INSN_LENGTH): New. + * config/tc-m68hc11.h (md_end): Remove. + * config/tc-mn10300.h (md_end): Remove. + * config/tc-sh.h (md_end): Remove. + * config/tc-v850.h (md_end): Remove. + + * config/tc-ia64.c (emit_one_bundle): Don't protect + dwarf2 bits with debug_type. + (md_assemble): Likewise. + (ia64_end_of_source): Don't call dwarf2_finish. + +2000-11-16 Jim Wilson + + * config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno + >= 128 instead of > 128. Abort if predicate regno is >= 64 instead of + > 16. + +2000-11-16 H.J. Lu + + * config/obj-elf.c (obj_elf_symver): Don't check the missing + version name. + +2000-11-15 Kazu Hirata + + * config/tc-tic30.c: Fix formatting. + * config/tc-tic80.c: Likewise. + * config/tc-v850.c: Likewise. + * config/tc-vax.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + +2000-11-14 DJ Delorie + + * config/tc-v850.c: Support dwarf2. + * config/tc-v850.h: Ditto. + + * config/tc-v850.c (cons_fix_new_v850): Don't rely on + parse_cons_expression_v850 to initialize hold_cons_reloc. + +2000-11-15 Bernd Schmidt + + * config/tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX. + (errata_nops_necessary_p): New function. + (emit_one_bundle): Call it. Update the GROUP_IDX field in struct + md. + +2000-11-14 Jim Wilson + + * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then + return little endian bfd formats. + +2000-11-14 Kazu Hirata + + * config/aout_gnu.h: Fix formatting. + * config/atof-vax.c: Likewise. + * config/m68k-parse.h: Likewise. + * config/m88k-opcode.h: Likewise. + * config/obj-elf.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-cris.c: Likewise. + * config/tc-i386.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/te-386bsd.h: Likewise. + * config/te-hppa.h: Likewise. + * config/te-nbsd.h: Likewise. + * config/te-ppcnw.h: Likewise. + * config/te-sparcaout.h: Likewise. + * config/te-tmips.h: Likewise. + * config/vax-inst.h: Likewise. + * config/vms-conf.h: Likewise. + +2000-11-14 Jakub Jelinek + + * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits. + +2000-11-13 H.J. Lu + + * config/obj-elf.c (elf_frob_symbol): Support + ".symver name,name2@@@nodename". + (elf_frob_file_before_adjust): Likewise. + + * doc/as.texinfo: Updated for ".symver name,name2@@@nodename" + and ".symver name,name2@@@nodename". + Fix a typo. + +2000-11-12 H.J. Lu (hjl@gnu.org) + + * config/obj-elf.c (obj_elf_symver): Check missing version + name. + +2000-11-12 H.J. Lu (hjl@gnu.org) + + * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT + instead of bfd_vma for non-bfd assemblers. + +2000-11-09 Kazu Hirata + + * itbl-ops.c: Fix comment typos. + +2000-11-08 Jim Wilson + + * config/tc-ia64.c (struct unw_rec_list): Add slot_frag field. + (struct unwind): Add next_slot_frag field. + (slot_index): New parameters slot_frag and first_frag. Add code + to add in frag sizes when different. Add comments. + (fixup_unw_records): New locals first_frag and last_frag. Pass new + arguments to slot_index. + (emit_one_bundle): Set slot_frag field. Set next_slot_number after + loop end. Set next_slot_frag field. + +2000-11-07 H.J. Lu + + * doc/as.texinfo (.symver): Updated for versioned symbol + reference. + + * obj.h (format_ops): Add the frob_file_before_adjust field. + + * config/obj-aout.c (aout_format_ops): Set the + frob_file_before_adjust field to 0. + * config/obj-coff.c (coff_format_ops): Likewise. + * config/obj-ecoff.c (ecoff_format_ops): Likewise. + + * config/obj-elf.c (obj_elf_symver): Allow duplicated version + name. + (elf_frob_file_before_adjust): New function to remove unneeded + versioned symbols from the symbol table. + (elf_format_ops): Set the frob_file_before_adjust field to + elf_frob_file_before_adjust. + + * config/obj-elf.h (obj_frob_file_before_adjust): Defined if + not defined. + + * config/obj-multi.h (obj_frob_file_before_adjust): Defined. + +2000-11-07 Peter Targett + + * config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and + BIG_ENDIAN macros. + * config/tc-arc.c: Use S_IS_LOCAL to test local symbols. + Fix compile time warning messages. + +2000-11-07 Nick Clifton + + * stabs.c (generate_asm_file): Increase length of xmalloc'ed + buffer in order to avoid buffer overflows. + +2000-11-06 Steve Ellcey + + * config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage): + Change M to m for -milp32 or -mlp64 to match gcc. + (dot_endp): Use bytes_per_address instead of 8. + (emit_one_bundle): Use number_to_chars_littleendian instead of + md_number_to_chars. + (fix_insn): Likewise. + (ia64_init): New function. + (ia64_target_format): New function. + (md_begin): Set endianness, arch, and machine as appropriate. + * config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars): + Make these macros depend on TE_HPUX macro. + (TARGET_FORMAT): Define. + (HOST_SPECIAL_INIT): Define. + * config/te-hpux.h: New file. + * configure.in: Add "ia64-*-hpux*" target to configure. + * configure: Regenerate. + +2000-11-06 Kazu Hirata + + * as.c: Fix formatting. + * dwarf2dbg.c: Likewise. + * input-file.c: Likewise. + * input-file.h: Likewise. + * input-scrub.c: Likewise. + * itbl-ops.c: Likewise. + * listing.c: Likewise. + * macro.h: Likewise. + * messages.c: Likewise. + * read.c: Likewise. + * subsegs.c: Likewise. + * subsegs.h: Likewise. + * write.c: Likewise. + +2000-11-06 Nick Clifton + + * doc/as.texinfo: Add GNU Free Documentation License. + * doc/gasp.texi: Add GNU Free Documentation License. + * doc/as.1: Add GNU Free Documentation License. + +2000-11-05 Nick Clifton + + * config/tc-arm.c: Add include of "dwarf2dbg.h" + +2000-11-02 Per Lundberg + + * configure.in: Recognise i[3456]86-chaosdev-storm-chaos. + * configure: Regenerate. + +2000-11-01 Nick Clifton + + * read.c (original_case_string): New global variable. + (read_a_source_file): Copy opcode string into + original_case_string if clobbering the case of the opcode. + * read.h: Export the definition of original_case_string. + * config/tc-arm.c (md_assembler): When parsing a .req + directive use the original opcode string, not the case + clobbered version. + +2000-11-02 Nick Clifton + + * config/tc-mn10300.c (debug_line): Remove this static + variable. + (md_assemble): Call dwarf2_generate_asm_lineno instead of + dwarf2_where and dwarf2_gen_line_info. + +2000-11-02 Theo Honohan + + * config/tc-arm.c (do_msr): Improve error message. + +2000-10-31 Eric Christopher + + * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved + or pc-relative, else use fx_offset. + +2000-10-31 Jim Wilson + + * config/tc-ia64.c (struct md): New field tag_fixups. + (ia64_flush_insns): Handle tag_fixups. Error if dangling + qualifying predicate. + (emit_one_bundle): Delete spurious multiplication by one. Handle + tag_fixups. + (ia64_start_line): Error if dangling qualifying predicate. + (defining_tag): New static variable. + (ia64_unrecognized_line, case '['): Parse tags. + (ia64_frob_label): Create tag_fixups. + (md_assemble): Reset md.qp.X_op after using it. + +2000-10-31 Kaz Kojima + + * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094. + +2000-10-31 Bernd Schmidt + + * config/tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2. + +2000-10-30 Kazu Hirata + + * expr.c: Fix formatting. + * flonum-copy.c: Likewise. + * flonum.h: Likewise. + * gasp.c: Likewise. + * hash.c: Likewise. + +2000-10-30 Hans-Peter Nilsson + + * as.h (OPTION_MD_BASE): Bump to 190. + * as.c (parse_args) : Add comment about the need to + check OPTION_MD_BASE in as.h. + + * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL + for weak symbols. + +2000-10-27 Nick Clifton + + * configure.in (emulations): Add m68hc12. + * configure: Regenerate. + * po/gas.pot: Regenerate. + +2000-10-27 Aldy Hernandez + + * config/tc-arm.c (psrs): Remove lowercase versions of spsr* and + cpsr*. + (arm_psr_parse): Handle lowercase CPSR and SPSR. + +2000-10-25 Nick Clifton + + * dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate + a DWARF2 line number information sequence. + + *dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno. + + * read.c (generate_lineno_debug): Update comment describing why + DWARF2 line number debug information is not generated + automatically by this function. + + * doc/as.texinfo: Note that --gdwarf2 only works on some targets, + not all. + + * config/tc-arm.h (md_end): Define. + (DWARF2_LINE_MIN_INSN_LENGTH): Define. + + * config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno + if generating DWARF2 line numbers. + (arm_end_of_source): New function. Call dwarf2_finish if + necessary. + + * config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno. + * config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno. + * config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno. + +2000-10-25 Diego Novillo + + * config/tc-i386.c: Fix prototype declarations for functions taking no + arguments. + +2000-10-24 Diego Novillo + + * config/tc-i386.c (i386_operand_modifier): Remove. + (build_displacement_string): Remove. + (i386_parse_seg): Remove. + (i386_intel_memory_operand): Remove. + (i386_intel_operand): Re-write using recursive descent parser based + on MASM documentation. + (struct intel_parser_s): New structure. + (intel_parser): New static variable. + (struct intel_token): New structure. + (cur_token, prev_token): New static variables. + (T_NIL): Define. + (T_CONST): Define. + (T_REG): Define. + (T_BYTE): Define. + (T_WORD): Define. + (T_DWORD): Define. + (T_QWORD): Define. + (T_XWORD): Define. + (T_SHORT): Define. + (T_OFFSET): Define. + (T_PTR): Define. + (T_ID): Define. + (intel_match_token): New function. + (intel_get_token): New function. + (intel_putback_token): New function. + (intel_expr): New function. + (intel_e05): New function. + (intel_e05_1): New function. + (intel_e06): New function. + (intel_e06_1): New function. + (intel_e09): New function. + (intel_e09_1): New function. + (intel_e10): New function. + (intel_e10_1): New function. + (intel_e11): New function. + +2000-10-20 Jakub Jelinek + + * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p + instructions to loose any special insn->architecture mask. + + * config/tc-sparc.c (v9a_asr_table): Add v9b ASRs. + (sparc_md_end, sparc_arch_types, sparc_arch, + sparc_elf_final_processing): Handle v8plusb and v9b architectures. + (sparc_ip): Handle siam mode operands. Support v9b ASRs (and + request v9b architecture if they are used). + +2000-10-18 Michael Sokolov + + * config/tc-m68k.c: Fix the previous misapplied patch. + +2000-10-18 Michael Sokolov + + * config/tc-m68k.h (RELAX_RELOC_*): New definitions for both + BFD_ASSEMBLER and !BFD_ASSEMBLER. + * config/tc-m68k.c (md_convert_frag_1): Use them instead of + BFD_RELOC_*. + +2000-10-17 Kazu Hirata + + * debug.c: Fix formatting. + * depend.c: Likewise. + * dwarf2dbg.c: Likewise. + * dwarf2dbg.h: Likewise. + * ecoff.c: Likewise. + * expr.c: Likewise. + * expr.h: Likewise. + * flonum-konst.c: Likewise. + * frags.h: Likewise. + +2000-10-17 Chandrakala Chavva + + * as.c: New option OPTION_TARGET_HELP. Prints all target specific + options. + * doc/as.texinfo: Added notes about this new option. + +2000-10-16 Hans-Peter Nilsson + + * config/tc-sh.c (JREG): Remove. + (md_convert_frag): Remove #if 0:d code using JREG. + +2000-10-15 Diego Novillo + + * config/tc-i386.c (i386_operand_modifier): Only match + modifiers SHORT and FLAT if they are followed by a space. + (parse_register): When `allow_naked_reg' is set, do not confuse + identifiers that start with a register name with a register. + +2000-10-12 Kazu Hirata + + * app.c: Fix formatting. + * as.c: Likewise. + * as.h: Likewise. + * bit_fix.h: Likewise. + * cgen.c: Likewise. + * cgen.h: Likewise. + * cond.c: Likewise. + +2000-10-11 Alan Modra + + * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change. + +2000-10-07 Alan Modra + + * config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert. + Re-arrange function a little and improve error message. + + * write.c (write_relocs): Fix a comment. + + * config/obj-elf.c (elf_frob_symbol): Make section syms global on + link-once sections. + +2000-10-05 Jim Wilson + + * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr. + +2000-10-05 Alan Modra + + * config/tc-i386.c: Delete some useless comments, reformat others. + + * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover + non-global syms in linkonce sections. + +2000-10-04 Ralf Baechle + + * config/tc-ia64.c (operand_match): Don't use // style comments. + * config/tc-i370.c: Likewise. + +2000-09-29 Hans-Peter Nilsson + + Changes to handle varying register prefix and user symbol prefix. + * config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX, + SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE, + SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New. + (s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix, + cris_sym_leading_underscore, cris_sym_no_leading_underscore): New. + (demand_register_prefix): New variable. + (md_pseudo_table): New pseudo ".syntax". + (md_longopts): New options --no-underscore and --underscore. + (cris_target_format): Return elf32-us-cris or elf32-cris depending + on symbols_have_leading_underscore. + (get_gen_reg): Accept or require REGISTER_PREFIX_CHAR. + (get_spec_reg): Ditto. + (cris_number_to_imm) : Remove FIXME. + Fix formatting. + (md_parse_option) : Deprecate; add reference to + --help. + : New. + (md_show_usage): Be brief and reformat to match continuation of + --help. + * po/gas.pot: Regenerate. + +2000-09-28 Alan Modra + + * config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't + force relocs for 12 bit branches. + (md_apply_fix): Similarly, adjust logic here. + +2000-09-28 Alan Modra + + * config/tc-hppa.c (md_apply_fix): Add fmt assertion. Don't + adjust for external and weak syms as we will use a reloc. Allow + for +8 offset when calculating limits of branches. + (hppa_fix_adjustable): Undo 2000-09-23 change. + (hppa_force_relocation): Likewise. Add fx_addsy assertion. + Correct distance calculation. + (tc_gen_reloc): Print the file name and line number if we can't + handle a fixup. + + From John David Anglin + * config/tc-hppa.c (nonzero_dibits): Define. + (arg_reloc_stub_needed): Check each arg and return value + separately for zero case. + (pa_align): Declare argument `bytes'. + +2000-09-25 Kazu Hirata + + * config/tc-cris.c: Fix formatting. + * config/tc-d10v.h: Likewise. + * config/tc-d30v.c: Likewise. + * config/tc-d30v.h: Likewise. + * config/tc-fr30.c: Likewise. + * config/tc-fr30.h: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-m68k.h: Likewise. + * config/tc-pj.h: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-ppc.h: Likewise. + * config/tc-sh.c: Likewise. + * config/tc-sh.h: Likewise. + * config/tc-sparc.c: Likewise. + * config/tc-v850.h: Likewise. + * config/tc-vax.h: Likewise. + * config/tc-w65.h: Likewise. + * config/tc-z8k.h: Likewise. + +2000-09-23 Alan Modra + + * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak + checks only for ELF. + (hppa_force_relocation): Likewise. + +2000-09-22 Jim Wilson + + * config/tc-ia64.c (dv_sem): Add "stop". + (specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now. + (specify_resource, case IA64_RS_PRr): New for regs 16 to 62. + (specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to + match above. + (mark_resources): Check IA64_RS_PRr. + +2000-09-22 Michael Sokolov + + * config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1, + md_estimate_size_before_relax): Redesign and clean up the + relaxation mechanism. + +2000-09-21 Kazu Hirata + + * config/tc-ns32k.c: Fix formatting. + * config/tc-ns32k.h: Likewise. + +2000-09-20 Kazu Hirata + + * config/tc-m32r.c: Fix formatting. + * config/tc-m32r.h: Likewise. + * config/tc-m68851.h: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68hc11.h: Likewise. + * config/tc-m88k.c: Likewise. + * config/tc-mcore.c: Likewise. + * config/tc-mcore.h: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-mips.h: Likewise. + * config/tc-mn10200.h: Likewise. + * config/tc-mn10300.h: Likewise. + * config/tc-tahoe.c: Likewise. + * config/tc-tahoe.h: Likewise. + +2000-09-19 Michael Sokolov + + * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci. + Likewise in relaxation description comments. + +2000-09-18 Alan Modra + + * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow + subtraction of two syms without emitting a relocation. + + From David Huggins-Daines + * config/tc-hppa.c (hppa_force_relocation): Force relocations for + global or weak symbols. + +2000-09-15 Kazu Hirata + + * config/tc-h8300.h: Fix formatting. + * config/tc-h8500.c: Likewise. + * config/tc-h8500.h: Likewise. + * config/tc-hppa.h: Likewise. + * config/tc-i370.h: Likewise. + * config/tc-i386.h: Likewise. + * config/tc-i860.c: Likewise. + * config/tc-i860.h: Likewise. + * config/tc-i960.h: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-ia64.h: Likewise. + +2000-09-14 Kazu Hirata + + * config/tc-a29k.c: Fix formatting. + * config/tc-alpha.c: Likewise. + * config/tc-arc.c: Likewise. + * config/tc-arc.h: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-arm.h: Likewise. + * config/tc-avr.c: Likewise. + * config/tc-avr.h: Likewise. + * config/tc-tic30.c: Likewise. + * config/tc-tic30.h: Likewise. + * config/tc-tic54x.c: Likewise. + * config/tc-tic54x.h: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-tic80.h: Likewise. + +2000-09-14 Timothy Wall + + * config/tc-ia64.c (specify_resource): For PR%/PR63, note types of + parallel comparisons for later use. + (struct rsrc): Add parallel comparison type. + (resources_match): Skip special cases of PR usage (non-conflicting + parallel compares). + +2000-09-13 Kazu Hirata + + * config/obj-ecoff.c: Fix formatting. + * config/obj-elf.c: Likewise. + * config/obj-elf.h: Likewise. + * config/obj-evax.h: Likewise. + * config/obj-generic.h: Likewise. + * config/obj-hp300.c: Likewise. + * config/obj-hp300.h: Likewise. + * config/obj-ieee.h: Likewise. + * config/obj-vms.c: Likewise. + * config/obj-vms.h: Likewise. + +2000-09-13 Anders Norlander + + * config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors. + (md_parse_option): Ditto. + (md_longopts): Add -mips32 option. + (md_show_usage): Document new options. + (mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32. + (mips_ip): Assemble mfc0 with a sub-selection code. + (validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20). + (mips_cpu_to_str): New function. + (mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value. + Use CPU_* defines instead of hardcoded numbers. + + * doc/as.texinfo: Document new options. + * doc/c-mips.texi: Ditto. + +2000-09-12 Kazu Hirata + + * as.h: Fix formatting. + * asintl.h: Likewise. + * bit_fix.h: Likewise. + * config/obj-aout.c: Likewise. + * config/obj-aout.h: Likewise. + * config/obj-bout.c: Likewise. + * config/obj-bout.h: Likewise. + * config/obj-coff.c: Likewise. + * config/obj-coff.h: Likewise. + * dwarf2dbg.h: Likewise. + * expr.h: Likewise. + * flonum.h: Likewise. + * frags.h: Likewise. + * itbl-ops.h: Likewise. + * macro.h: Likewise. + * read.h: Likewise. + * sb.h: Likewise. + * struc-symbol.h: Likewise. + * subsegs.h: Likewise. + * symbols.h: Likewise. + * tc.h: Likewise. + * write.h: Likewise. + +2000-09-11 Kazu Hirata + + * bignum-copy.c: Fix formatting. + * config/tc-i370.c: Likewise. + * config/tc-i960.c: Likewise. + * config/tc-m68k.c: Likewise. + * ehopt.c: Likewise. + * flonum-copy.c: Likewise. + * flonum-konst.c: Likewise. + * flonum-mult.c: Likewise. + * literal.c: Likewise. + * read.c: Likewise. + * sb.c: Likewise. + * stabs.c: Likewise. + * subsegs.c: Likewise. + +2000-09-09 Philip Blundell + + * configure.in (arm*-*-uclinux*): New target. + * configure: Regenerate. + +2000-09-09 Kazu Hirata + + * input-file.c: Fix formatting. + * itbl-ops.c: Likewise. + * messages.c: Likewise. + +2000-09-08 Philip Blundell + + * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when + offset is negative. + +2000-09-07 H.J. Lu + + * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM. + * configure: Rebuild. + +2000-09-07 Kazu Hirata + + * atof-generic.c: Fix formatting. + * config/tc-mips.c: Likewise. + * config/tc-vax.c: Likewise. + * input-scrub.c: Likewise. + +2000-09-07 Alexandre Oliva + + * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets. + * configure.in (sh-*-linux*): Added. + * configure: Rebuilt. + +2000-09-06 Kazu Hirata + + * config/tc-hppa.c: Fix formatting. + + * ecoff.c: Fix formatting. + +2000-09-06 Alexandre Oliva + + * configure: Rebuilt with new libtool.m4. + +2000-09-05 Kazu Hirata + + * cgen.c: Fix formatting. + * config/tc-ia64.c: Likewise. + +2000-09-05 Nick Clifton + + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * configure: Regenerate. + * po/gas.pot: Regenerate. + +2000-09-05 Hans-Peter Nilsson + + * config/tc-cris.c: Correct comment typos. + +2000-09-05 Eric Christopher + + * config/tc-mn10300.c: Cleanup. + (md_pcrel_from): Enable. + +2000-09-05 Alan Modra + + * expr.c (operand): Fix a comment typo. + * write.c (write_relocs): Fix a signed/unsigned warning. + + * config/tc-hppa.c (fudge_reg_expressions): New + (hppa_force_reg_syms_absolute): New. + (pa_equ): Allow reg_section expressions. + * config/tc-hppa.c (md_optimize_expr): Define. + (hppa_force_reg_syms_absolute): Prototype. + + * config/tc-hppa.c (pa_11_fp_reg_struct): Delete. + (pa_parse_number): Pass in arg to select fp reg parsing. + Return 1 to indicate format checks pass. If strict, then only + accept a register or register symbol. Return value in... + (pa_number): New static for pa_parse_number. + (FP_REG_BASE): Define. + (FP_REG_RSEL): Define. + (pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as + appropriate. White space changes. + (need_pa11_opcode): Don't bother passing any params, get them from + globals instead. + (pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode. + Remove extraneous check in case 'Q'. + (pa_equ): Modify call to pa_parse_number to do strict parsing. If + reg, set section of resulting symbol to reg_section. + (pa_parse_space_stmt): Modify call to pa_parse_number. + (pa_space): Likewise. + + * config/tc-hppa.c: (md_apply_fix): Handle vtable relocs. + (hppa_force_relocation): Handle vtable relocs. + (pa_vtable_entry): New. + (pa_vtable_inherit): New. + (md_pseudo_table): Add entries for vtable pseudos. + (hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT + and R_PARISC_GNU_VTENTRY relocs. Reject reduction of relocs + against weak syms. + (tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code. + (pa_type_args): Don't call symbol_get_bfdsym multiple times. + Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a + millicode import. + * config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to + specify a symbol type. + + * config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF + dependent things together. + (md_elf_symbol_type): Define. + + * config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo + symbol. + * config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too. + + * config/obj-elf.h (obj_elf_vtable_inherit): Declare. + (obj_elf_vtable_entry): Declare. + + * config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix * + and export function. + (obj_elf_vtable_entry): Similarly. + (elf_pseudo_table): Fix the damage with a cast. + +2000-09-03 Richard Henderson + + * config/tc-ia64.c (emit_one_bundle): Stop collecting insns + for template selection when a label is needed. + +2000-09-02 Kazu Hirata + + * config/tc-ia64.c: Fix formatting. + +2000-09-02 Nick Clifton + + * configure.in: Increase version number to 2.10.91. + * configure: Regenerate. + * aclocal.m4: Regenerate. + * config.in: Regenerate. + * po/gas.pot: Regenerate. + * Makefile.in: Regenerate. + +2000-09-01 Alexandre Oliva + + * config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define. + * config/tc-sh.c (md_apply_fix): Map 32-bit relocations that + become PC-relative to BFD_RELOC_32_PCREL. Reject 16- or 8-bit + similar relocs. + (sh_obj_adjustable): Return 1 for PC-relative offsets used in + branches. + +2000-09-01 Niibe Yutaka , Kaz Kojima , Alexandre Oliva + + * config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME, + TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define. + * config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions. + [OBJ_ELF] (md_pseudo_table) : Use them. + (GOT_symbol): New variable. + (md_undefined_symbol): Set it. + +2000-09-01 Richard Henderson + + * config/tc-ia64.c (match): Don't inline. + (extra_goodness): New. + (md_begin): Prefer nop.f and nop.b for best_template. + +2000-08-31 Kazu Hirata + + * as.c: Fix formatting. + * cond.c: Likewise. + * frags.c: Likewise. + * macro.c: Likewise. + +2000-08-31 Eric Christopher + + * config/tc-mn10300.c: Cleanup and fix warnings. + (md_pseudo_table): Add initializers. + (md_show_usage): Cleanup. + (md_parse_option): Fix warnings. + (md_undefined_symbol): Fix warnings. + (md_conver_frag): Fix warnings. + (tc_gen_reloc): Fix warnings. + (md_apply_fix3): Fix warnings. + (check_operand): Fix warnings. + +2000-08-31 Alexandre Oliva + + * acinclude.m4: Include libtool and gettext macros from the + top level. + * aclocal.m4, configure: Rebuilt. + +2000-08-30 Mark Hatle + + * config/tc-ppc.c (md_parse_option): Recognize -m405. + +2000-08-31 Kazu Hirata + + * listing.c: Fix formatting. + +2000-08-29 Kazu Hirata + + * app.c: Fix a comment typo. Fix formatting. + +2000-08-25 J. David Anglin + + * config/tc-vax.c (md_convert_frag): Correctly calculate the pc relative + offset of the target destination for jmp instructions. + (md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments. + +2000-08-24 Hans-Peter Nilsson + + * NEWS: Mention support for CRIS. + +2000-08-24 Denis Chertykov + + * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros. + Sets `.lcomm' alignment to zero. + +2000-08-23 Alexandre Oliva + + * config/tc-i386.h (OBJ_MAYBE_ELF, OBJ_MAYBE_COFF, + TC_FIX_ADJUSTABLE): Define. + +2000-08-23 Jim Wilson + + * config/tc-ia64.c (output_unw_records): Set U & E flags only if + unwind.personality_routine is set. + +2000-08-23 H.J. Lu + + * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate. + +2000-08-23 Alexandre Oliva + + * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target + environment is pe. + +2000-08-22 H.J. Lu + + * config.in (STRICTCOFF): New for strict COFF. + + * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*, + i386-*-go32* and i386-go32-rtems*. + * configure: Rebuilt. + + * config/obj-coff.c (obj_coff_endef): Follow the historical + behavior if STRICTCOFF is not defined. + + * doc/internals.texi: Document STRICTCOFF. + +2000-08-22 Alexandre Oliva + + * write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined. + (fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. + * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. + (TC_FIX_ADJUSTABLE): Define. + * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. + (TC_FIX_ADJUSTABLE): Define. + * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: + Likewise. + +2000-08-22 Eric Christopher + + * config/tc-mn10300.c: (md_apply_fix): New function. + (mn10300_force_relocation): New function. + (mn10300_fix_adjustable): New function. + + * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. + (TC_HANDLES_FX_DONE): Define. + (obj_fix_adjustable): Define. + (MD_APPLY_FIX3): Define. + (TC_LINKRELAX_FIXUP): Define. + + * write.c: (TC_LINKRELAX_FIXUP): Define if not + previously defined. + (fixup_segment): Use TC_LINKRELAX_FIXUP. + + * doc/internals.texi: Document TC_LINKRELAX_FIXUP. + +2000-08-21 Jason Eckhardt + + * config/tc-i860.c (md_apply_fix3): Do not insert the immediate + if the fixup resulted in a relocation. + +2000-08-18 Nick Clifton + + * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn. + Make reference to first element of shift_names explicit. + +2000-08-18 Alexandre Oliva + + * write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use + obj_fix_adjustable() and tc_fix_adjustable() to tell whether to + add a symbol's address. Removed all target-specific #ifdefs that + used to accomplished the same. + * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. + +2000-08-17 Kazu Hirata + + * dwarf2dbg.c: Fix formatting. + +2000-08-17 Nick Clifton + + * config/tc-arm.c (decode_shift): Allow illegal shifts by zero + to be recoded as logical shift lefts by zero. + +2000-08-16 Jim Wilson + + * config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle + postincrement modified registers. Handle IA64_OPND_R3_2 addl + source registers. + (note_register_values): Handle IA64_OPND_R3_2 operands. + +2000-08-16 Jason Eckhardt + + * config/tc-i860.c (md_operand): Silly typo fixed. + +2000-08-16 Nick Clifton + + * config/tc-arm.c (struct asm_shift): Delete. + (shift[]): Delete. + (enum asm_shift_index): New. + (struct asm_shift_properties): New. + (struct asm_shift_name): New. + (shift_properties[]); New. + (shift_names[]); New. + + (decode_shift): Use new structures. + Issue a warning is "ROR #0" is used. + Issue a warning if "ASR #0" or "LSR #0" is used. + + (md_begin): Initialise arm_shift_hsh table from new + asm_shift_name array. + +2000-08-16 Jakub Jelinek + + * config/tc-sparc.c: Kill all warnings. + (md_parse_option): Set -32/-64 for -xarch=, allow all -A archs + in -xarch= as well. + (md_show_usage): Update usage text. + +2000-08-16 Nick Clifton + + * config/tc-arm.c (do_bx): Warn about "bx px" not being very + useful. + +2000-08-15 Will Cohen + + * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined. + + * config/tc-sh.c (md_assemble): Changed so debug_type + test performed for ppi_assemble + * config/tc-sh.c: Included dwarf2dbg.h. + (debug_line): Defined. + (md_assemble): Generates dwarf2 line info. + (sh_finalize): New function. Finalize dwarf2 info. + (assemble_ppi): Returns size of code generated. + (build_Mytes): Returns size of code generated. + (md_pseudo_table): Added "file" and "loc" psuedo ops. + * config/tc-sh.h (md_end): Defined. + (sh_finalize): Declared. + +2000-08-15 Alexandre Oliva + + * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use + md_number_to_chars. + +2000-08-14 Nick Clifton + + * config/tc-arm.c (do_bx): Allow "bx pc". + +2000-08-14 Jim Wilson + + * config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic. + (md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC. + (md_begin): Change assignment to md.flag to OR in the new bit. + +2000-08-14 Mark Elbrecht + + * config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug + flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE, + C_MOU, and C_EOS. + +2000-08-14 Jason Eckhardt + + * NEWS: Mention i860 support. + +2000-08-14 Jeffrey A Law (law@cygnus.com) + + * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define. + +2000-08-14 Andreas Schwab + + * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo. + +2000-08-11 Andreas Schwab + + * doc/c-i860.texi (Opcodes for i860): Remove braces from @item + argument. + +2000-08-11 Kazu Hirata + + * expr.c: Fix formatting. + * config/obj-bout.c: Likewise. + +2000-08-10 Jason Eckhardt + + * doc/c-i860.texi: Flesh out the i860 section more. + +2000-08-10 Kazu Hirata + + * symbols.c: Fix formatting. + * expr.c: Likewise. + +2000-08-09 Diego Novillo + + * config/tc-i386.c (md_assemble): Skip suffix check if the opcode + modifier has the IgnoreSize bit set. + +2000-08-09 Alan Modra + + From Rodney Brown + * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0) + * configure: Regenerate. + +2000-08-09 Kazu Hirata + + * hash.c: Fix formatting. + * gasp.c: Likewise. + +2000-08-08 Jason Eckhardt + + * config/tc-i860.h: Rework completely for BFD_ASSEMBLER. + (i860_fix_info): New enum. + (MD_APPLY_FIX3): Define. + (WORKING_DOT_WORD): Define. + (TC_HANDLES_FX_DONE): Define. + (DIFF_EXPR_OK): Define. + (LISTING_HEADER): Define. + (TARGET_FORMAT): Select target format based on endian flag. + (TARGET_BYTES_BIG_ENDIAN): Default to little endian. + (target_big_endian): Add external declaration. + + * config/tc-i860.c: All existing code reworked completely. Other + new code shown below. + (SYNTAX_SVR4): Define. + (target_warn_expand): New variable. + (md_shortopts): Declare and define (-Qy, -Qn, and -V options). + (md_longopts): Declare and define with new options (-EL, -EB, + and -mwarn-expand). + (md_show_usage): New function. + (md_operand): New function. + (obtain_reloc_for_imm16): New function. + (md_apply_fix3): New function. + (tc_gen_reloc): New function. + +2000-08-08 Stephane Carrez + + * config/tc-m68hc11.c (build_jump_insn): Make sure the + 2 bytes of the jump address are in the same frag. + (find): Accept 68hc12 register indirect modes. + + * NEWS: Mention 68HC11 & 68HC12 support. + +2000-08-07 Richard Henderson + + * config/tc-ia64.c (unwind): Add prologue_mask member. + (dot_vframe): Elide psp_gr record if it overlaps prologue_gr. + (dot_save): Likewise for pfs_gr, rp_gr, and preds_gr. + (dot_body): Clear unwind.prologue_mask. + (dot_prologue): Set it. Accept a register second argument. + +2000-08-07 Kazu Hirata + + * config/atof-ieee.c: Fix formatting. + * config/atof-tahoe.c: Likewise. + +2000-08-06 Nick Clifton + + * config/tc-sparc.c (md_begin): Fix typo in recent formatting + work. + + * doc/as.texinfo (Pseudo Ops): Update to include descriptions + of .popsection, .previous, .pushsection, .subsection, + .version, .vtable_entry, .vtable_inherit and .weak. + +2000-08-05 Kazu Hirata + + * config/tc-cris.c: Fix formatting. + * config/tc-i386.c: Likewise. + * config/tc-sparc.c (sparc_ip): Simplify the code. + +2000-08-04 Kazu Hirata + + * config/tc-cris.c: Rearrange code for readability. + * config/tc-d10v.c: Fix formatting. + * config/tc-m32r.c: Likewise. + * config/tc-sparc.c: Likewise. + +2000-08-02 Jim Wilson + + * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode + before ia64_find_opcode. + (md_assemble): Likewise. + +2000-08-01 Nick Clifton + + * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag. + Undo some formatting fixes. + +2000-08-01 Kazu Hirata + + * config/obj-som.c: Fix formatting. + * config/obj-ieee.c: Likewise. + * config/tc-arm.c: Likewise. + * config/tc-v850.c: Likewise. + +2000-08-01 Nick Clifton + + * doc/c-m68k.texi (section M680x0 Options): Turn into a table + index by command line option. + +2000-08-01 Michael Sokolov + + * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description. + (@node M68K-Branch): Rewrite to match the reality. + +2000-07-31 Jason Eckhardt + + * doc/c-i860.texi: New file. + * doc/Makefile.am (CPU_DOCS): Add c-i860.texi. + * doc/Makefile.in: Regenerate. + * doc/all.texi: Add I860 as relevant architecture. + * doc/as.texinfo: Include i860 dependent file c-i860.texi. + +2000-07-31 Kazu Hirata + + * config/tc-d30v.c: Fix formatting. + +2000-07-31 Michael Sokolov + + * config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option. + (md_convert_frag_1, md_estimate_size_before_relax): When making DBcc + long emit a long branch if available instead of an absolute jump, never + emit absolute jumps for anything with --pcrel. + + * doc/c-m68k.texi: Document new command line option. + +2000-07-29 Marek Michalkiewicz + + * config/tc-avr.c: Use PARAMS macro in function declarations. + Don't declare md_pcrel_from_section (already in tc-avr.h). + (avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros. + (avr_operand): Don't set (unsigned) op_mask to -1. + +2000-07-28 Jason Eckhardt + + * configure.in: Add bits for i860-stardent-{sysv4, elf}*. + * configure: Regenerated. + * config/obj-elf.c (obj_elf_type): Recognize a fifth type + of operand to the .type directive (.e.g, "type"). + +2000-07-28 Alan Modra + + * as.h (warn_comment, found_comment, found_comment_file): Declare. + * app.c (do_scrub_chars): Record where first comment found. + * read.c (read_a_source_file): Init found_comment on entry, and + notify whether comments found on exit. + * config/tc-hppa.c (md_shortopts): Add "c". + (md_longopts): Add warn-comment. + (md_parse_option): Handle it. + (md_show_usage): Show available options. + * config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX + +2000-07-27 Andrew Cagney + + * config/tc-mn10300.c (md_convert_frag): Fix printfs. + (tc_gen_reloc): Add cast when assigning bfd_abs_symbol to + sym_ptr_ptr + (md_estimate_size_before_relax): Don't fall off end of function. + +2000-07-27 Kazu Hirata + + * config/tc-avr.c: Fix formatting. + * config/tc-ns32k.c: Likewise. + +2000-07-27 Alan Modra + + * config/tc-d10v.c (find_opcode): Remove extraneous `='. + +2000-07-27 Kazu Hirata + + * config/tc-d10v.c: Fix formatting. + * config/tc-z8k.c: Likewise. + * config/tc-sparc.c: Likewise. + +2000-07-26 Dave Brolley + + * cgen.c (queue_fixup): Declare opinfo. + (gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED. + (gas_cgen_md_operand): Ditto. + (gas_cgen_md_apply_fix3): Ditto. + +2000-07-24 Mark Elbrecht + + * config/obj-coff.c (obj_frob_symbol): Don't merge + labels. Don't merge if the symbol isn't constant. Return + immediately if a symbol is merged. + +2000-07-22 Alan Modra + + * frags.c (frag_align): Correct absolute section alignment. + +2000-07-20 DJ Delorie + + * config/obj-coff.c (obj_frob_symbol): revert previous change, + it breaks linking against DLLs. + +2000-07-20 Hans-Peter Nilsson + + * configure.in: Add CRIS support. + * configure: Regenerate. + * Makefile.am: (CPU_TYPES): Add cris. + (CPU_OBJ_VALID) [aout]: Add cris. + (MULTI_CPU_TYPES): Add cris. + (MULTI_CPU_OBJ_VALID) [aout]: Add cris. + [coff]: Only i386 and mips are valid. + (TARGET_CPU_CFILES): Add config/tc-cris.c. + (TARGET_CPU_HFILES): Add config/tc-cris.h. + (MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c. + Regenerate dependencies. + * Makefile.in: Regenerate. + * aclocal.m4: Regenerate. + * as.c: Declare crisaout, criself. + * config/tc-cris.h, config/tc-cris.c: New. + * config/e-criself.c, config/e-crisaout.c: New. + * po/POTFILES.in, po/gas.pot: Regenerate. + +2000-07-20 Kazu Hirata + + * read.c: Fix formatting. + * write.c: Fix formatting. + +2000-07-19 H.J. Lu + + * sb.c: Include if exists for abort (). + +2000-07-19 Alan Modra + + * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment. + (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM. + (pa_type_args): Same here. + +2000-07-17 Mark Elbrecht + + * config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't + merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if + the storage class is already set. + +2000-07-17 Kazu Hirata + + * config/tc-m68hc11.c: Fix formatting. + * config/tc-mn10200.c: Likewise. + * config/tc-mn10300.c: Likewise. + * config/tc-pj.c: Likewise. + * config/tc-tic80.c: Likewise. + * config/tc-w65.c: Likewise. + +2000-07-17 Frank Ch. Eigler + + * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN + is defined. + +2000-07-15 Ian Lance Taylor + + * doc/c-mips.texi (MIPS Opts): Remove erroneous space after + @code. + +2000-07-15 Alan Modra + + * config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for + ELF as are used for SOM (except the 32-bit reloc one) to decide + whether a symbol can be reduced to a section symbol. Expand on + the comment for symbols involved in LR% and RR% expressions. + +2000-07-14 Nick Clifton + + * config/tc-mips.c (mips_disable_float_construction): New + static variable. Set to true if doubles should not be + constructed by loading two single width fp registers with + halves of the value. + (mips_ip): Test mips_disable_float_construction. + (md_longopts): Add command line switches --construct-floats + and --no-construct-floats. + (md_parse_option): Parse new command line options. + (md_show_usage): Describe new command line options. + + * doc/c-mips.texi: Document new command line options. + +2000-07-13 Koundinya K + + * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP* + * configure: Regenerate. + +2000-07-13 Hans-Peter Nilsson + + * configure.in (DEFAULT_EMULATION setting): Revert part of + 2000-07-01 change that set te_multi=multi unless set to tmips. + * configure: Regenerate. + +2000-07-12 Mark Elbrecht + + * config/obj-coff.c (coff_frob_section): Add padding to the last + section when aligning it increases its size. + +2000-07-11 Kazu Hirata + + * config/tc-tic54x.c: Fix formatting. + +2000-07-10 Kazu Hirata + + * config/tc-h8500.c: Fix formatting. + * config/tc-tic54x.c: Fix formatting. + +2000-07-10 Alan Modra + + * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel + displacements correctly. + + * read.h (s_abort): Add ATTRIBUTE_NORETURN. + +2000-07-10 Ryan Bradetich + + * hash.c (hash_insert): Add cast to obstruct_alloc to fix + warning. + (hash_jam): Ditto. + +2000-07-09 Alan Modra + + From David Huggins-Daines + * config/te-hppalinux64.h: Add a new emulation. + * configure.in (emulations): Add configure bits to support the + 64-bit Linux/parisc target. + * configure: Regenerate. + + * config/tc-hppa.c (md_parse_option): Support `-V' for ELF. + (md_shortopts): Add `V' for ELF. + + * config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except + when SOM or ELF_ARG_RELOC are defined. + (pa_type_args): Only set symbol_arg_reloc_info when SOM or + ELF_ARG_RELOC are defined. + (pa_stringer_aux): Don't pa_check_current_space_and_subspace here.. + (pa_stringer): ..Do it here instead. Fix comment typos. + (hppa_force_relocation): Cast enums to int before comparing with + ints. + + From Ryan Bradetich + * config/tc-hppa.c: Removed unneeded libbfd.h to fix macro + redifinition warning. + (md_apply_fix): Added cast from enum to int for fixP->fx_r_type. + (hppa_force_relocation): ditto + (md_apply_fix): Added cast to buf to fix warnings. + + * config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa, + cons_fix_new_hppa, hppa_force_relocation): Prototype. + + * config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF. + (R_N0SEL, R_N1SEL): Define only for OBJ_SOM. + (tc_gen_reloc): Make `code' a reloc_type and `codes' a + reloc_type** to avoid warnings in switch. + (md_apply_fix): Make insn, val signed. Zap buf_wd and read insn a + little earlier instead. + + * config/tc-hppa.c (symbol_arg_reloc_info): Define for both som + and elf. + (pa_type_args): Use symbol_arg_reloc_info. + (struct pa_it): Make arg_reloc unsigned int. + (struct hppa_fix_struct): Likewise for fx_arg_reloc. + (pa_text, pa_data, pa_comm): Don't compile for TE_LINUX. + (pa_code): Delete. pa_text duplicates this function. + (md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX. + (fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned + int. + (cons_fix_new_hppa): Actually change selector to e_fsel when + warning about assuming so. + (tc_gen_reloc): More example elf arg reloc code. + (md_apply_fix): Use arg_reloc_stub_needed for elf too. + (hppa_force_relocation): Likewise. + + * config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include + files. + (pa_end_of_source): Prototype. + (hppa_fix_adjustable): Prototype. + (LABELS_WITHOUT_COLONS): Move it.. + * config/te-hppa.h: To here. + + * config/te-hppa64.h: New file. + + * config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc + type. + (md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt. Handle + format -10, -16, 16 relocs. + (hppa_elf_mark_end_of_function): Test for null + last_call_info->start_symbol + + * config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to + CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE. Don't pass opcode to + re_assesmble_* functions. Delete extraneous statements. Fix + typos in comments. + (md_apply_fix): Compare against 1048575 in case 21. Don't pass + insn to re_assemble_*. + +2000-07-08 Ulf Carlsson + + * doc/internals.texi (Expressions): Fix typo. + +2000-07-08 Kazu Hirata + + * config/tc-sh.c: Fix formatting. + * config/tc-tic54x.c: Fix formatting. + * depend.c: Fix formatting. + * flonum-konst.c: Likewise. + * flonum-mult.c: Likewise. + +2000-07-07 Kazu Hirata + + * config/tc-sh.c: Fix comments. + * config/obj-vms.c: Fix comments. + * config/tc-a29k.c: Likewise. + * config/tc-alpha.c: Likewise. + * config/tc-h8300.c: Likewise. + * config/tc-h8500.c: Likewise. + * config/tc-i370.c: Likewise. + * config/tc-ia64.c: Likewise. + * config/tc-m68hc11.c: Likewise. + * config/tc-m68k.c: Likewise. + * config/tc-mips.c: Likewise. + * config/tc-ns32k.c: Likewise. + * config/tc-ppc.c: Likewise. + * config/tc-z8k.c: Likewise. + +2000-07-06 Mark Elbrecht + + * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New. + Default to '(SEC_LOAD | SEC_DATA)'. + (obj_coff_section) [BFD_ASSEMBLER]: Use it. + + * doc/internals.texi (CPU Backend): Describe + TC_COFF_SECTION_DEFAULT_ATTRIBUTES. + +2000-06-06 Andrew Cagney + + * as.c (parse_args): NULL terminate the long option list. + +2000-06-04 Andrew Cagney + + * config/tc-d30v.h: Include "write.h" for fixS. + (d30v_start_line, md_pcrel_from_section): Add function prototypes. + +2000-07-05 Nick Clifton + + * config/tc-d30v.c (write_2_short): Further changes to warning + messages produced when combining EITHER_BUT_PREFER_MU attributed + opcodes. + +2000-07-05 DJ Delorie + + * MAINTAINERS: new + +2000-07-04 Alexandre Oliva + + * config/tc-arm.c (psrs): Accept combinations of flags. + +2000-07-03 Marek Michalkiewicz + + * config/tc-avr.c: Change _ () to _() around all strings marked + for translation (exception from the usual coding style). + (avr_opt): New struct variable, how the new switches are set. + (OPTION_MMCU): Define as 'm' and actually use. + (md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap. + (show_mcu_list): New function, display the list of known MCUs. + (md_show_usage): Document the new switches. Call show_mcu_list. + (avr_set_arch): Change 'm' to OPTION_MMCU. + (md_parse_option): Call show_mcu_list if unknown MCU specified. + Handle the new switches. + (avr_operands): Disable warnings for undefined combinations of + operands if -mall-opcodes. Disable warnings for skipping two-word + instructions if enhanced core or -mno-skip-bug. + (avr_operand): Accept all addressing modes on avr1 if -mall-opcodes. + (md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap. + (md_assemble): Accept opcodes not supported by MCU if -mall-opcodes. + (avr_ldi_expression): Warn about implicit lo8(). + * config/tc-avr.h (md_pcrel_from_section): Add prototype. + +2000-07-01 Koundinya K + + * configure.in: Add entry for mips-*-sysv4*MP* + * configure: Rebuild + * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or + elf32-tradlittlemips for traditional mips targets. + * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the + test for Link Once sections as in adjust_reloc_syms. + * config/te-tmips.h: New file for traditional mips targets. Define + TE_TMIPS. + +2000-06-29 Mark Elbrecht + + * config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the + flags argument is not present, don't change an existing section's + section's attributes. If the flags argument is present, warn if the + attributes don't match the section's current attributes. When + long section names are supported, set SEC_LINK_ONCE and + SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section. + +2000-06-29 Hans-Peter Nilsson + + * config/obj-aout.c (obj_aout_type): Do not ignore for undefined + symbols; create them. + +2000-06-29 Mark Elbrecht + + * write.c (set_segment_vma): New: Set vma and lma for a segment. + (write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it. + +2000-06-27 Aldy Hernandez + + * config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of + expressions. Ignore the problem when handling 16 bit signed + immediates, because the assembler will take care of the relocation + later. + +2000-06-27 Nick Clifton + + * config/tc-d30v.c (write_2_short): Do not allow opcodes with + the EITHER_BUT_PREFER_MU attribute to be combined into a reverse + sequential order, and emit warning messages if the input source + code contains constructs like that, or parallel constructs + containing such opcodes. + +2000-06-26 Marek Michalkiewicz + + * config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4. + Add more MCU types for avr4 and avr5. Replace at94k{10,20,40} + with just at94k. Change AVR_ISA_85xx back to AVR_ISA_2xxx. + (md_show_usage): Update usage message. + (md_parse_option): Allow redefinition of MCU type within the + same avr[1-5] bfd machine type. Show both old and new MCU type + in the error message. + (md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set. + Simplify 8K wrap code. + +2000-06-25 Kazu Hirata + + * config/obj-aout.c: Remove all uses of DEFUN. + * config/obj-ieee.c: Likewise. + * config/tc-sh.c: Fix comment typos. + * config/tc-tahoe.c: Likewise. + * config/tc-vax.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + * config/tc-h8300.c (build_bytes): Assemble ldmac correctly. + +2000-06-24 DJ Delorie + + * config/tc-i386.c (md_estimate_size_before_relax): Revert + more changes from Sept 1999 + (tc_i386_fix_adjustable): ditto + (md_apply_fix3): ditto + +2000-06-24 Frank Ch. Eigler + + * cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf. + (gas_cgen_parse_operand): Set it around expression() call. + (gas_cgen_md_operand): Test for it before longjmp(). + +2000-06-24 Kazu Hirata + + * config/tc-h8500.c: Remove all uses of DEFUN. + * config/tc-sh.c: Likewise. + * config/tc-w65.c: Likewise. + * config/tc-z8k.c: Likewise. + + * config/tc-h8500.c: Fix typos in comments. + +2000-06-23 Frank Ch. Eigler + + * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX + is defined. + +2000-06-23 matthew green + + * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is + defined. Fix error message for `[' grouping. + +2000-06-22 Kazu Hirata + + * config/tc-h8300.c: Fix formatting and comment typos. + +2000-06-22 Timothy Wall + + * config/tc-ia64.c (note_register_values): Move premature QP + notation clearing into the appropriate place. + +2000-06-22 Alan Modra + + * dep-in.sed: Escape literal `.'s on patterns. Trim off `../' + first before anything else. Add bin-bugs.h, emul.h and progress.h + Sort list of files as for $(OBJS) in Makefile.am. + + * Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we + find one. Remake dependencies. + ($(OBJS)): Add bin-bugs.h, emul.h, and progress.h Sort the list. + * Makefile.in: Regenerate. + * doc/Makefile.in: Regenerate. + + * config/tc-i386.c (i386_displacement): Don't assume a constant + displacement is necessarily 16 bits when in 16 bit code mode. + (md_assemble): Instead size the displacement here after we know + for sure that a .code16gcc operand hasn't automatically added + operand size prefixes. + +2000-06-21 H.J. Lu + + * Makefile.am: Rebuild dependency. + * Makefile.in: Rebuild. + +2000-06-21 Kazu Hirata + + * config/tc-h8300.c (parse_reg): Make the function static. + (parse_exp): Likewise. + +2000-06-20 DJ Delorie + + * config/tc-i386.c (tc_i386_fix_adjustable): Revert change from + Sept 1999; RVA relocs need to be treated more like DIR32 relocs + for cygwin import libraries to work properly. + +2000-06-20 H.J. Lu + + * Makefile.am: Rebuild dependency. + * Makefile.in: Rebuild. + * configure: Likewise. + * doc/Makefile.in: Likewise. + +2000-06-20 Timothy Wall + + * doc/internals.texi (CPU backend): Add @itemx for + TC_START_LABEL_WITHOUT_COLON. + * doc/c-tic54x.texi: New. + * doc/as.texinfo: Add tic54x features and include primary tic54x + documentation file. + * doc/all.texi: Add C54X. + * doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi. + * doc/Makefile.in: Regenerate. + * configure.in: Add tic54x and define LIBM for tic54x. + * configure: Regenrate. + * config/tc-tic54x.[ch]: New. + * config/obj-coff.h: Add tic54x. + * Makefile.am: (CPU_TYPES): Add tic54x. + (TARGET_CPU_CFILES): Add 'tc-tic54x.c'. + (TARGET_CPU_HFILES): Add 'tc-tic54x.h'. + (as_new_LDADD): Add $(LIBM). + * Makefile.in: Regenerate. + +2000-06-18 Stephane Carrez + + * doc/Makefile.am (CPU_DOCS): Added 68hc11 file. + * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port. + * doc/as.texinfo: Likewise. + + * configure, Makefile.in: Regenerate. + * configure.in (emulations): Recognize m6811 and m6812. + * Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES): + Added files for 68hc11 and 68hc12 assembler. + * config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12. + * config/tc-m68hc11.h: Header definition for that assembler. + +2000-06-18 Nick Clifton + + * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte + instead of OCTETS_PER_BYTE. + + * config/tc-v850.c: Fix compile time warnings. + * config/tc-ppc.c: Fix compile time warnings. + +2000-06-18 H.J. Lu + + * configure.in: Don't emulate i386-pc-pe-coff with i386coff. + * configure: Rebuild. + +2000-06-17 Mark Elbrecht + + * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER + to BFD_ASSEMBLER. + +2000-06-16 Nick Clifton + + * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230, + RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants. + + * doc/c-mips.texi: Document newly accepted cpu variants. + +2000-06-15 Ulf Carlsson + + * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES. + +2000-06-13 Ulf Carlsson + + * macro.c (getstring): Make it possible to escape the quote + character. + +2000-06-13 Catherine Moore + + * config/tc-hppa.c (pa_export): Weak symbols can be global. + +2000-06-13 H.J. Lu + + * configure: Regenerate. + +2000-06-09 Alan Modra + + * app.c (do_scrub_begin): Don't default lex[';'] as a line + separator. + * doc/internals.texi (line_separator_chars): Semicolon is no + longer a default. Mention null and newline as defaults. + + * read.c (is_end_of_line): Remove ifdef TC_HPPA. + + * config/tc-i386.h (line_separator_chars): Explicitly mention `;' + * config/tc-i860.h (line_separator_chars): Likewise. + * config/tc-h8300.c (line_separator_chars): Likewise. + * config/tc-i960.c (line_separator_chars): Likewise. + * config/tc-m68k.c (line_separator_chars): Likewise. + * config/tc-mips.c (line_separator_chars): Likewise. + * config/tc-ns32k.c (line_separator_chars): Likewise. + * config/tc-sparc.c (line_separator_chars): Likewise. + * config/tc-vax.c (line_separator_chars): Likewise. + + * config/tc-h8300.c (comment_chars): Use string initialiser. + * config/tc-i960.c (line_comment_chars): Likewise. + * config/tc-z8k.c (comment_chars, line_comment_chars, + line_separator_chars): Likewise. + + * config/tc-arm.c (line_separator_chars): Always use `;', not just + for TE_LINUX. + +2000-06-08 Nick Clifton + + * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value + for size 1 fixes. + +2000-06-08 David O'Brien + + * configure.in (VERSION): Update to show this is the CVS mainline. + +2000-06-08 Matthew Jacob + + * config/tc-alpha.c (md_undefined_symbol): Properly understand that + $at is the integer register $r28, vs. both $r28 and the floating + point register $f28. + +2000-06-08 James E. Wilson + + * config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns. + (dot_endp): Don't call ia64_flush_insns. + (emit_one_bundle): Don't delete prologue/body records from + unwind_record list in first loop. Rewrite second loop to account for + this. + +2000-06-07 David Mosberger + + * config/tc-ia64.c: Add missing prototypes. + (generate_unwind_image): Cast argument to output_unw_records call. + +2000-06-07 Denis Chertykov + + * config/tc-avr.c (avr_operand): fix the formatting of the comment. + +2000-06-07 Denis Chertykov + + * config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h + (REGISTER_P): likewise. + (avr_opcodes): uses include/opcode/avr.h + (avr_operand): enable ld r,Z or st r,Z for at90s1200. + +2000-06-04 Alan Modra + + * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing + initializers too. + +2000-06-03 H.J. Lu + + * read.c (is_end_of_line): Put back `;'. + +2000-06-03 Alan Modra + + * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf. + +2000-06-01 Alan Modra + + * expr.c (operand): Test is_end_of_line outside switch to catch + line separator chars that are also operators. + (operator): Return O_illegal for line separator chars. + + * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;' + entry (or `!' entry for TC_HPPA). + + * config/tc-arm.c (my_get_float_expression): Cast to unsigned char + before indexing is_end_of_line. Remove redundant check for '\0'. + (fp_op2): Likewise. + * config/tc-h8500.c (md_assemble): Likewise. + * config/tc-mcore.c (md_assemble): Likewise. + * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. + (md_atof): Likewise + + * config/tc-m88k.c (s_bss): Cast to unsigned char before indexing + is_end_of_line. + * config/tc-mcore.c (mcore_cons): Likewise. + (mcore_float_cons): Likewise. + (mcore_stringer): Likewise. + * config/tc-tic30.c (tic30_find_parallel_insn): Likewise. + +2000-06-01 Scott Bambrough + + * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly. + +2000-05-29 Nick Clifton + + * config/tc-sh.c: Fix compile time warning messages. + + * config/tc-mips.c: Fix compile time warning messages. + +2000-05-29 Philip Blundell + + * doc/as.texinfo: Update copyright dates. + (Local Labels): Delete misplaced mention of ARM. + * NEWS: Mention ARM ELF support. + +2000-05-27 Alexandre Oliva + + * config/tc-mn10300.c (md_assemble): Copy size to real_size before + it is modified, and use the real_size to compute the frag address + for dwarf2 line info. + +2000-05-27 Alan Modra + + * Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed + line-matching scheme to cope with automake moving variables around. + ($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@ + * Makefile.in: Regenerate. + +2000-05-26 Jakub Jelinek + + * config/tc-sparc.c (sparc_relax): New. + (md_longopts): Add -relax and -no-relax options. + (md_parse_options, md_show_usage): Likewise. + (md_apply_fix3): Optimize tail call into branch always if possible. + +2000-05-04 Donald Lindsay + + * config/tc-d10v.c (write_2_short, parallel_ok, md_assemble, + d10v_cleanup) implement Mitsubishi's newly explained branch-packing + rules, with warning when a GAS statement specifies a packing that + will result in an instruction being squashed. + Added typdef packing_type and enumerals, changed various integer + literals to use the enumerals. + +2000-05-24 David Mosberger + + * config/tc-ia64.c (dot_restorereg_p): New function. + (md_pseudo_table): Add restorereg.p. + (output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1. + (output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2. + + * config/tc-ia64.h (unw_record_type): Add unwabi. + (unw_r_record): Rename member MASK to GRMASK. Add sub-structure + called MASK with members for imask, and the masks produced by + fr_mem, gr_mem, br_mem, and frgr_mem. + (unw_p_record): Add members ABI and CONTEXT. + (unw_x_record): Add member AB. + * config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT + as pseudo-register for use during unwind info generation. + (AR_PFS, AR_LC): New macros. + (enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers + whose names start with an at sign (as in "@priunat"). + (pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat" + register. + (unwind_list, unwind_tail, current_unwind_entry, proc_start, + proc_end, unwind_info, personality_routine): Consolidate into + "unwind" structure to reduce offset-table use. Add member + NEXT_SLOT_NUMBER to track the slot number for the next instruction + to be emitted. + (output_R1_format, output_R3_format, output_P3_format, + output_P6_format): Initialize R with zero to reduce compiler warnings. + (output_P7_format): Ditto. Add `default' branch to switch + statement to reduce compiler warnings. + (output_P8_format, output_B1_format, output_B4_format): Ditto. + (output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE. + (format_ab_reg): Rename from format_a_b_reg. Merge A and B args + into single argument. + (output_X1_format, output_X3_format): Initialize R with zero to reduce + compiler warnings. Merge A and B args into single argument. + (output_X2_format, output_X4_format): Remove unused variable R. Merge + A and B args into single argument. + (free_record): Removed (wasn't used). + (free_list_records): Also free imasks in prologue records. + (output_prologue, output_prologue_gr): Initialize mask bits to zero. + (output_spill_mask): Remove. + (output_unwabi): New function. + (output_epilogue, output_label_state, output_copy_state): Call + alloc_record. + (output_spill_psprel, output_spill_sprel, output_spill_psprel_p, + output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB + argument. + (process_one_record): New locals FR_MASK and GR_MASK. Ignore + gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them + as part of handling the prologue records. Emit region's imask if + we have one. Handle unwabi, epilogue, label_state, copy_state, + spill_psprel, spill_sprel, spill_reg, spill_psprel_p, + spill_sprel_p, and spill_reg_p records. + (set_imask, count_bits, slot_index): New function. + (fixup_unw_records): Fix region size computation. Handle + epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p, + spill_sprel_p, and spill_psprel_p records. Merge mask bits of + frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and + set_imask accordingly. Update imask for gr_gr, and br_gr records. + (convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function. + (dot_save): Use manifest constants for applicaton registers. + Handle REG_PR and REG_PRIUNAT. + (dot_restore): Don't just ignore it. + (dot_restorereg): New function.. + (generate_unwind_image): Ensure unwind info is a multiple of eight + bytes, not just four bytes. + (dot_handlerdata, dot_unwentry): Demand empty rest of line. + (dot_altrp): Don't just ignore it. + (dot_savemem): New function. Replaces dot_savesp() and + dot_savepsp(). Use manifest constants for applicaton registers. + Handle REG_PR and REG_PRIUNAT. + (dot_savef): Simplify. + (dot_saveb): Support generation of br_gr. + (dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p, + dot_label_state, dot_copy_state): New function. + (dot_unwabi): Don't just ignore it. + (md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp, + spillreg.p, spillsp.p, spillpsp, label_state, copy_state, + unwabi, vframesp, and vframepsp. Fix typo alprp->altrp. + (emit_one_bundle): Set slot number for prologue/body records + *before* emitting the first insn. + (emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER. + (md_begin): Declare "psp" pseudo-register. + (md_operand): Handle PSEUDO_FUNC_REG. Fix printing of error message + so we don't get segfault. + (output_psp_sprel): Output sp/psp relative offsets as 4-byte word + counts as required per SW Conventions manual + (output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel, + output_preds_psprel, output_preds_sprel, output_spill_base, + output_unat_psprel, output_unat_sprel, output_lc_psprel, + output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel, + output_priunat_psprel, output_priunat_sprel, output_bsp_psprel, + output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel, + output_rnat_psprel, output_rnat_sprel, output_spill_psprel, + output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto. + (dot_vframe): Implement. + (dot_vframesp, dot_vframepsp): New function. + +2000-05-23 Hans-Peter Nilsson + + * configure.in (i386-*-freebsd a.out entry): Quote properly. + * configure: Regenerate. + +2000-05-23 Alan Modra + + * config/tc-i386.c (md_assemble): Pass jump reloc in fr_var... + (md_estimate_size_before_relax): so we can use it here instead of + old kludges. Localise vars to blocks. Comment. + + * frags.c (frag_new): Update fr_var comments. + * frags.h (struct frag): Ditto. + +2000-05-22 Richard Henderson + + * config/tc-ia64.c (FUNC_PC_RELATIVE): New. + (pseudo_func): Add pcrel. + (operand_match): Handle IA64_OPND_TGT64. + (build_insn): Likewise. + (md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE]. + (ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE. + (fix_insn): Handle all three 64-bit relocation types. + +2000-05-22 Hans-Peter Nilsson + + * obj.h (struct format_ops): New members begin, app_file, + s_set_other, s_set_desc, s_get_type, s_set_type, + separate_stab_sections, init_stab_section. + + * config/obj-multi.h: Update GPL notice to v2. + (obj_begin): New. + (obj_app_file): New. + (S_SET_SIZE): Test s_set_size for NULL before calling. + (S_SET_ALIGN): Similar for s_set_align. + (S_SET_OTHER): New. + (S_SET_DESC): New. + (S_GET_TYPE): New. + (S_SET_TYPE): New. + (SEPARATE_STAB_SECTIONS): New. + (INIT_STAB_SECTION): New. + (EMIT_SECTION_SYMBOLS): New. + (AOUT_STABS) [OBJ_MAYBE_AOUT]: Define. + + * config/obj-elf.h: Update GPL notice to v2. + Mention that this file is included from obj-multi.h. + (obj_begin): Wrap definition in ifndef. + (elf_file_symbol): Constify declaration. + (obj_app_file): Ditto. + (SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB): + Wrap in ifndef SEPARATE_STAB_SECTIONS. + + * config/obj-elf.c (elf_s_set_other): New. + (elf_file_symbol): Constify argument. + (elf_separate_stab_sections): New. + (elf_init_stab_section): New. + (elf_format_ops): Add new members. Remove comma at end. + + * config/obj-ecoff.c (ecoff_separate_stab_sections): New. + (ecoff_format_ops): Add new fields. Remove comma at end. + Mention inconsistency for emit_section_symbols. + + * config/obj-coff.h (c_dot_file_symbol): Constify declaration. + + * config/obj-coff.c (c_dot_file_symbol): Constify argument. + (coff_separate_stab_sections): New. + (coff_format_ops): Add new members. + + * config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New. + (obj_aout_s_set_other): New. + (obj_aout_s_set_desc): New. + (obj_aout_s_get_type): New. + (obj_aout_s_set_type): New. + (obj_aout_separate_stab_sections): New. + (aout_format_ops): New members added. Use obj_aout_process_stab, + not 0. Use obj_aout_sec_sym_ok_for_reloc, not 0. + (obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as + appropriate. + (obj_aout_line, obj_aout_weak, obj_aout_type): Ditto. + +2000-05-22 Alan Modra + + * config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment + for OBJ_MAYBE_ELF too. Use S_IS_EXTERNAL instead of S_IS_EXTERN. + (md_estimate_size_before_relax): Ensure jumps to weak and + externally visible symbols are relocatable. + +2000-05-20 Hans-Peter Nilsson + + * stabs.c (aout_process_stab): Make global. + (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate. + * read.h (aout_process_stab): Declare. + + * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]: + Generalize to *aout, *coff *elf. + * configure: Regenerated. + + * doc/internals.texi (Object format backend): Say + SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined. + + * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h. + * Makefile.in: Regenerated. + +2000-05-19 Catherine Moore + + * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined. + +2000-05-18 Alan Modra + + * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of + instruction to reflect change in re_assemble_*. + +2000-05-18 Jeffrey A Law (law@cygnus.com) + + * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then + build PA64 ELF tools. + * configure: Rebuilt. + +2000-05-17 Alan Modra + + * Makefile.am: Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-05-15 Nick Clifton + + * config/tc-arm.c (struct asm_psr): Add boolean field + distinguishing between CSPR and SPSR. Rename 'number' field + to 'field'. + (psrs): Rearrange contents to match new asm_psr structure. + (arm_psr_parse): Move next to psr_required_here. Make it + return an asm_psr structure. + (psr_required_here): Use asm_psr structure returned by + arm_psr_parse. + (do_msr): Reorganise to allow psr_required_here to be called + only once. + (md_undefined_name): Mark 'name' parameter as unused, since + the COFF target does not use it. + +2000-05-14 David O'Brien + + * config/te-386bsd.h: Clean up comments to adhere to the GNU coding + standards. + * config/te-aux.h: Likewise. + * config/te-dpx2.h: Likewise. + * config/te-go32.h: Likewise. + * config/te-hp300.h: Likewise. + * config/te-hppa.h: Likewise. + * config/te-i386aix.h: Likewise. + * config/te-ic960.h: Likewise. + * config/te-interix.h: Likewise. + * config/te-nbsd532.h: Likewise. + * config/te-pc532mach.h: Likewise. + * config/te-ppcnw.h: Likewise. + * config/te-psos.h: Likewise. + * config/te-sparcaout.h: Likewise. + * config/te-sun3.h: Likewise. + * config/te-sysv32.h: Likewise. + +2000-05-14 Alan Modra + + * config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16 + bits. Instead explicitly mask and sign extend. Do the 8 bit mask + and sign extend without an if statement. + (build_bytes): Likewise. + +2000-05-14 Kazu Hirata + + * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no + X_add_symbol L_32 case. + +2000-05-14 David O'Brien + + * config/te-freebsd.h: New file. + +2000-05-13 Alan Modra + + * asintl.h (gettext, dgettext, dcgettext, textdomain, + bindtextdomain): Replace defines with those from intl/libgettext.h + to quieten gcc warnings. + + * NEWS: Mention x86 .arch and -q. + + * config/tc-i386.c (quiet_warnings): New. + (md_assemble): Use quiet_warnings. + (md_parse_option): Set quiet_warnings from -q. + (md_show_usage): Mention -q, delete -m. + (flag_do_long_jump): Delete. + (md_parse_option): Remove -m. + (md_show_usage): Remove -m. + (md_create_long_jump): Remove useless flag_do_long_jump code. + + * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold + the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER. + +2000-05-13 Alan Modra + Alexander Sokolov + + * doc/c-i386.texi (i386-Arch): New section. + (i386-Syntax): Mention .intel_syntax and .att_syntax. + + * config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New. + (smallest_imm_type): Use smallest opcode for shift by one if cpu + architecture has been given and is not 486. + (set_cpu_arch): New. + (md_pseudo_table): Add .arch. + (md_assemble): Warn if cpu architecture has been given and an + unsupported instruction. + + * config/tc-i386.h (SMALLEST_DISP_TYPE): Delete. + Move operand_types bit defines after relevant template field. + (template): Add cpu_flags. + (Cpu*): Define. + (arch_entry): New. + +2000-05-12 Alexandre Oliva + + * config/tc-mn10300.h (md_end): Define. + (mn10300_finalize): Declare. + * config/tc-mn10300.c: Include dwarf2dbg.h. + (debug_line): Define. + (md_assemble): Generate dwarf2 line info. + (mn10300_finalize): New function. Finalize dwarf2 info. + +2000-05-11 Ulf Carlsson + + * config/tc-mips.c (md_estimate_size_before_relax): Use the + external version of the relocation for weak symbols. + +2000-05-08 David Mosberger + + * config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed + frame size in units of 16 bytes, as required per SW Conventions manual. + (output_unw_records): Output info-block header as a dword to get + byte-order right. + +2000-05-08 Alan Modra + + * as.h: #include "file", not on files from ../include. + (as_abort, as_fatal): Add ATTRIBUTE_NORETURN. + * config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings. + (md_convert_frag): Add ATTRIBUTE_UNUSED. + (tc_coff_symbol_emit_hook): Ditto. + (OPTCOUNT): Cast to int to avoid compiler warning. + (md_begin): Fix signed/unsigned warnings. + +2000-05-08 Michael Sokolov + + * config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the + ABRANCH LONG case for a conditional branch on a 68000. + (md_estimate_size_before_relax): Likewise. Also handle + flag_short_refs correctly for ABRANCH, BCC68000, and DBCC. + (m68k-ip: case ABSL): Relax absolute references to 16-bit + PC-relative on all CPUs. + (md_estimate_size_before_relax): Likewise. + +2000-05-04 Alan Modra + + * as.c (parse_args): Just mention current year in printed + copyright message. + +2000-05-03 J.T. Conklin + + * config/tc-ppc.c (pre_defined_registers): Add entries for vector + unit registers. + (md_parse_option): Recognize -m7400. + +2000-05-03 Ian Lance Taylor + + * config/atof-ieee.c (gen_to_words): When adding carry back in, + don't permit lp to become less than the words array. + +2000-05-03 Rodney Brown + + config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2 + Fix little-endian case. + +2000-05-03 David O'Brien + + * as.c (parse_args): Update copyright. + +2000-05-03 Mark Elbrecht + + * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 + for the .bss section too. + +2000-05-02 Alan Modra + + * configure.in: Set em=linux for hppa-*-linux. + * configure: Regenerate. + * doc/Makefile.in: Regenerate with correct automake. + + * frags.c (frag_grow): Sanity check chunk_size. + + * config/obj-elf.h: #include "bfd.h" not + * config/obj-som.h: Likewise. + * config/obj-ieee.h: Likewise. + + * config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64. + + * config/tc-hppa.c (log2): Only compile when OBJ_SOM. + (md_pseudo_table): Fully initialise OBJ_ELF cases. + (fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate. + (pa_ip): low_sign_unext now returns via function value. Use + re_assemble_* instead of dis_assemble_* and + INSERT_FIELD_AND_CONTINUE combination. Don't call sign_unext + unnecessarily. + (md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate. + (md_section_align, md_parse_option, md_show_usage, + md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try, + pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry, + pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level, + pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum, + pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym, + pa_text): Likewise. + (md_apply_fix): Change type of new_val to offsetT. Delete w1, w2, + w, resulti. Add insn, val. Move bfd_get_32 and bfd_put_32 + outside of switch. Correct mask and shifting errors in case 10 + and case -11. In case 21, compare against signed range to suit + hppa_field_adjust changes. In case 12, use re_assemble_12. In + case 17 and case 22, use offsetT variable to properly check range. + Use re_assemble_* here too. + (evaluate_absolute): Change type of value to offsetT. Call + hppa_field_adjust to do the work for us. + (pa_parse_cmpb_64_cmpltr): Delete save_s. + (pa_parse_cmpib_64_cmpltr): Ditto. + (pa_build_unwind_subspace): Delete unused var subseg. Change type + of i to unsigned int. + (pa_type_args): Conditionally declare symbol if OBJ_SOM. + (pa_end_of_source): Return type is void. + +2000-05-01 Catherine Moore + + * macro.c (macro_expand_body): Don't prepend macro number with zeroes. + +2000-05-01 Denis Chertykov + + * config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places. + More comments added. + (md_begin): Removed "construct symbols for each register name". + Because register names conflicts with GCC generated function + names. + (avr_operand): Now constant numbers can be used as a register + identifiers (0 as r0, 31 as r31). + (md_assemble): use skip_space () before parsing instruction + operands. + +2000-05-01 Alan Modra + + * configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to + ensure all pe targets use bfd. Remove unnecessary bfd_gas=yes on + arm-*-netbsd* and arm-*-wince as this is set for all arm*. + * configure: Regenerate. + +2000-04-29 Andreas Jaeger + + * as.h: Correctly check GCC version. + +2000-04-26 David O'Brien + + * doc/as.1: Fix unbalanced brackets. + + * config/tc-i386.c (comment_chars): Don't use '/' as comment start if + TE_FreeBSD. + (line_comment_chars): Set to '/' if TE_FreeBSD. + +2000-04-25 Jeffrey A Law (law@cygnus.com) + + * configure.in: Configury support for PA64 (currently disabled). + * configure: Rebuilt. + +2000-04-25 Machida Hiroyuki + + * config/tc-mips.c (s_change_sec): Use record_alignment, not + bfd_set_section_alignment. + +2000-04-25 Alan Modra + + * config/tc-i386.c (offset_in_range): Ensure shift counts are less + than 32. + +2000-04-24 Nick Clifton + + * doc/c-arm.texi (ARM Directives): Document behaviour of .align 0. + * doc/as.texinfo (Align): Include arm and strongarm in list of + targets that have the second form of the behaviour of the .align + directive. + +2000-04-24 Mark Klein + + * config/obj-som.c: Terminate obj_pseudo_table. + +2000-04-24 Clinton Popetz + + * as.c (parse_args): Allow md_parse_option to override -a listing + option. + * config/obj-coff.c (add_lineno): Change type of offset parameter + from "int" to "bfd_vma." + * config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine." + (ppc_mach, ppc_subseg_align, ppc_target_format): New. + (ppc_change_csect): Align correctly for XCOFF64. + (ppc_machine): New function, which discards "ppc_machine" line. + (ppc_tc): Cons for 8 when code is 64 bit. + (md_apply_fix3): Don't check operand->insert. Handle 64 bit + relocations. + (md_parse_option): Handle -a64 and -a32. + (ppc_xcoff64): New. + * config/tc-ppc.h (TARGET_MACH): Define. + (TARGET_FORMAT): Move to function. + (SUB_SEGMENT_ALIGN): Use ppc_subseg_align. + +2000-04-23 Denis Chertykov + + * config/tc-avr.c: New AVR_ISA_ defined. + (md_assemble): Handle opcodes with optional operands (lpm,elpm). + (avr_operand): Handle 'a', 'v' and 'z' constraint letters needed + for `fmul', `movw' and `lpm R,Z' instructions. + (avr_operands): Warn if current opcode is a two-word instruction + and previous opcode was cpse/sbic/sbis/sbrc/sbrs. + (avr_opcodes): New commands added. + (REGISTER_P): Check 'a' and 'v' constraint letters. + (mcu_types): New MCU added. + +2000-04-22 Timothy Wall + + * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent + to "natval". + (operand_match): Conditionally insert default bit values for IMMU9. + +2000-04-14 Matthew Green + + * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support. + * configure: Rebuilt. + +2000-04-21 Jeffrey A Law (law@cygnus.com) + Jason Eckhardt + + * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats. + + * config/tc-hppa.c (CHECK_ALIGN): New macro. + Added handling of new operand types l,y,&,fe,fE,fx. + +2000-04-21 Richard Henderson + David Mosberger + Timothy Wall + Andrew MacLeod + Jim Wilson + + * Makefile.am (CPU_TYPES): Add ia64. + (TARGET_CPU_CFILES): Add config/tc-ia64.c. + (TARGET_CPU_HFILES): Add config/tc-ia64.h. + * Makefile.in: Rebuild. + * app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS. + * configure: Rebuild. + * configure.in: Recognize ia64 as cpu type. Set bfd_gas. + (ia64-*-elf*, ia64-*-linux-gnu*): New targets. + * expr.c (expr): Handle md_optimize_expr. + * read.c (LEX_HASH): Add comment. + * config/tc-ia64.c, config/tc-ia64.h: New files. + +2000-04-21 Richard Henderson + + * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when + bundling a non-delayed branch type instruction. + +2000-04-20 Alexandre Oliva + + * config/tc-mn10300.c (HAVE_AM30): Define. + (md_assemble): Use it. + +2000-04-19 Alan Modra + + * config/obj-elf.c (obj_elf_change_section): Check for changed + section attributes. + + * Makefile.am: (CPU_MULTI_VALID): Remove. + (MULTI_CPU_TYPES): Define. + (MULTI_CPU_OBJ_VALID): Define. + (DEPTC): Use the above. + (DEPOBJ): Same here. + (DEP2): And here. + Regenerate dependencies. + * Makefile.in: Regenerate. + +2000-04-19 Michael Sokolov + + * Makefile.am (YACC, LEX): Get them from configure. + +2000-04-18 H.J. Lu (hjl@gnu.org) + + * config/tc-i386.c (offset_in_range): Use addressT instead of + bfd_vma for non-bfd assemblers. + +2000-04-17 Alan Modra + + * config/tc-i386.c (offset_in_range): Sign extend val so BFD64 + doesn't give spurious errors. + +2000-04-14 Michael Sokolov + + * as.h (SEEK_SET): Define if undefined. + +2000-04-13 Alan Modra + + * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on + constants, and don't assume offsetT is 32 bits. + +2000-04-12 Andrew Cagney + + * config/tc-d10v.h: Include "write.h" to get definition of fixS. + (md_pcrel_from_section): Add prototype. + (d10v_fix_adjustable): Add prototype. + (d10v_force_relocation): Replace 'struct fix' with 'fixS'. + + * config/tc-d10v.c (md_apply_fix3): Add paren around &&. + +2000-04-12 Nick Clifton + + * config/tc-d10v.c (find_opcode): Correctly calculate position of + symbol in frag chain. + +2000-04-10 Alan Modra + + * config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT. + (fits_in_unsigned_byte, fits_in_unsigned_word): Ditto. + (fits_in_signed_word, smallest_imm_type): Ditto. + (md_assemble): Use an offsetT var to hold offsetT values, not a + long. + (offset_in_range): New. + (md_assemble): Use it. + (md_convert_frag): Change type of target_address, opcode_address, + and displacement_from_opcode_start to offsetT. + (md_create_short_jump): Change type of offset to offsetT. + (md_create_long_jump): Ditto. + (md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32. + (md_chars_to_number): Remove. + (output_invalid): Remove duplicate prototype. + +2000-04-09 Nick Clifton + + * Makefile.am (CPU_TYPES): Add 'avr'. + (TARGET_CPU_CFILES): Add 'tc-avr.c'. + (TARGET_CPU_HFILES): Add 'tc-avr.h'. + + * Makefile.in: Regenerate. + + * doc/as.texinfo: Add M32R documentation. + +2000-04-07 Andrew Cagney + + * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add + --enable-build-warnings option. + * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions. + * Makefile.in, configure: Re-generate. + +2000-04-07 Nick Clifton + + * config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX + in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and + BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH. + (tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX. + (arm_force_relocation): Force relocations for + BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well. + +2000-04-05 J"orn Rennecke + + * config/tc-sh.c (get_operands): There's no third operand if the + first operand is an immediate. + +2000-04-05 J"orn Rennecke + + * config/tc-sh.c (immediate): Delete. + (sh_operand_info): Add immediate member. + (parse_reg): Use A_PC for pc. + (parse_exp): Add second argument 'op'. All callers changed. + (parse_at): Expect pc to be coded as A_PC. + Use immediate field in *op. + (insert): Add fourth argument 'op'. All callers changed. + (build_relax): Add second argument 'op'. All callers changed. + (insert_loop_bounds): New function. + (build_Mytes): Remove DISP_4. + Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT. + (assemble_ppi): Use immediate field in *operand. + (sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}. + (md_apply_fix): Likewise. + (tc_gen_reloc): Likewise. Check for a pcrel BFD_RELOC_SH_LABEL. + +2000-04-05 Alexandre Oliva + + * config/tc-sparc.c (sparc_ip): Avoid string pasting. + +2000-04-04 Hans-Peter Nilsson + + * internals.texi (CPU backend): Document + TC_CHECK_ADJUSTED_BROKEN_DOT_WORD. + +2000-04-04 Alan Modra + + * po/gas.pot: Regenerate. + + * as.c (show_usage): Restore translated part of bug string. + * gasp.c (show_usage): Likewise. + + * Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep. + (DEP): Quote when passing vars to sub-make. Use "mv -f" rather + than move-if-change. + (DEP1): Modify for "gcc -MM". + (DEPTC): Likewise. + (DEPOBJ): Likewise. + (DEP2): Likewise. + (CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA. + Update dependencies. + * Makefile.in: Regenerate. + +2000-04-03 Alexandre Oliva + + * config/tc-mn10300.c (md_pseudo_table): Use constant names. + (md_begin): Likewise. + (HAVE_AM33): New macro. + (md_assemble): Use it. Match r_regs and xr_regs only if + HAVE_AM33. + +2000-04-03 Alan Modra + + * as.h: #include "bin-bugs.h" + * as.c (show_usage): Use REPORT_BUGS_TO. + * gasp.c: #include "bin-bugs.h" + (show_usage): Use REPORT_BUGS_TO. + + * config/tc-sparc.c (md_show_usage): Add a trailing newline. + +2000-04-03 Hans-Peter Nilsson + + * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined, + call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after + adjustments. + +2000-04-03 Alan Modra + + * config/tc-i386.c (i386_immediate): Don't assume a constant + immediate is necessarily 16 bits when in 16 bit code mode. + (md_assemble): Instead set guess_suffix here after we have checked + registers. + +2000-04-02 Richard Henderson + + * config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit + quantities. Correct right shift sign extension. + (build_insn): Make `number' unsigned long. Mask top 6 bits of + 32-bit value when shifting into place. + +2000-04-01 Ian Lance Taylor + + * app.c: Add ATTRIBUTE_UNUSED as needed. + * config/tc-ppc.c: Likewise. + (ppc_size): Make unsigned long. + (ppc_insert_operand): Add casts to avoid warnings. + +2000-03-31 Nick Clifton + + * config/tc-d10v.h (md_flush_pending_output): Define. + +2000-03-29 Nick Clifton + + * config/tc-sh.h (SEG_NAME): New macro: return the name of a + segment. Works for both BFD_ASSEMBLER and others. + (SUB_SEGMENT_ALIGN): Use SEG_NAME. + +2000-03-29 Nick Clifton + + * listing.c (LISTING_LHS_WIDTH): Default depends on + LISTING_WORD_SIZE. + (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH. + +2000-03-27 Ian Lance Taylor + + * config/tc-sh.c (md_show_usage): Use backslash before newline in + string literal. + +2000-03-27 Alan Modra + + * config/tc-avr.h (TC_HANDLES_FX_DONE): Define. + + * config/tc-avr.c (mcu_types): Add missing initialiser. + (md_pcrel_from_section): Add prototype. + (avr_operand): Remove redundant test of unsigned < 0. + (avr_cons_fix_new): Ensure exp_mod_pm zero on function exit. + +2000-03-27 Denis Chertykov + + * config/tc-avr.c: New file for AVR support. + * config/tc-avr.h: Likewise. + * configure.in: Add AVR support. + * configure: Regenerate. + +2000-03-26 Timothy Wall + + * gasp.c (macro_op): Add new argument to check_macro call. + Macro structure definitions moved to macro.h + * sb.h: Add argument to prototype for input_scrub_include_sb. + * input-scrub.c (input_scrub_include_sb): Allow disabling of sb + nesting checks with an additional flag. + (struct input_save): Add flag to indicate whether current sb + should be checked for proper macro/conditional nesting. + (input_scrub_push/pop): Save/restore nest check flag. + (input_scrub_next_buffer): Ditto. Also call end of macro hook if + defined. + * macro.c (check_macro): Allow caller to retrieve parsed macro + information if a pointer is provided. This information may be + used by the new macro hooks. + * macro.h: Update prototype for check_macro. Macro struct + definitions moved here from macro.c/gasp.c. + * read.c (read_a_source_file): Add parameter to check_macro call, + and pass macro info to the macro hook, if defined. + (input_scrub_insert_line): New. Allow insertion of a line of + characters into the input stream. + (input_scrub_insert_file): New. Allow insertion of an arbitrary + file into the input stream. + (s_include): Use input_scrub_insert_file. + * internals.texi: Document new macro hooks. + * as.h: New prototypes added. + +2000-03-26 Alan Modra + + * config/tc-i386.c: Don't start any as_bad or as_warn message with + an initial capital letter. + (i386_index_check): Reindent. + +2000-03-19 Nick Clifton + + * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc + relative branches. + +2000-03-17 Thomas de Lellis + + * config/tc-arm.c (do_t_adr): Flag "adr Rd,label" + instruction operand bad if Rd > 7 when generating + thumb instructions. Prevents for example, + "adr r12,label" from silently failing and generating + the wrong instruction. + +2000-03-17 Nick Clifton + + * config/tc-arm.c (md_apply_fix3): Handle same-section relocations + that have a destingation >= 0x400000. + Fix compile time warning messages. + +2000-03-16 J"orn Rennecke + + * config/tc-sh.c (md_begin): When encountering insn that are + not supported by the current arch, only change the name if + its contents are the same as prev_name. + (get_specific): If the the architecture doesn't match, fail. + +2000-03-16 J"orn Rennecke + + * config/tc-sh.c (IDENT_CHAR): Define. + (parse_reg): Use it instead of isalnum. Put r[0..7]_bank operand + matching back where it came from. + +2000-03-16 J"orn Rennecke + + * config/tc-sh.c (md_show_usage): Add description of -dsp. + +2000-03-15 Jonathan Larmour + + * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before + normal operands. + +2000-03-15 Kazu Hirata + + * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate. + +2000-03-13 Hans-Peter Nilsson + + * expr.c (operand) [case 'f']: When testing if '0f' can start a + floating-point-number, make sure 'f' is in FLT_CHARS. + +2000-03-11 Hans-Peter Nilsson + + * read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition. + (s_lcomm_internal): Use it. + * doc/internals.texi (CPU backend): Document it. + * config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3 + bytes. + +2000-03-10 Geoffrey Keating + + * config/tc-mips.c (mips_ip): Don't put stuff in .rodata + when embedded-pic. + + * config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic + implementation doesn't have special handling for switch + statements. + (macro_build): Allow for code in sections other than .text. + (macro): Likewise. + (mips_ip): Likewise. + (md_apply_fix): Do pc-relative relocation madness for MIPS ELF. + Don't perform relocs if we will be outputting them. + (tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative + relocations. Allow BFD_RELOC_16_PCREL_S2 relocs when + embedded-pic. + +2000-03-09 Catherine Moore + + * config/tc-m32r.c (m32r_fix_adjustable): Look up the + relocation type based on the entry in the fixup structure. + Put S_IS_EXTERN processing back in. + +2000-03-08 H.J. Lu (hjl@gnu.org) + + * Makefile.am (install-exec-tooldir): Depend on + install-exec-bindir for parallel make. + * Makefile.in: Regenerated. + +2000-03-06 Nick Clifton + + * config/tc-m32r.c (struct md_longopts): Add -m32r command line + switch. + (md_parse_option): Parse -m32r command line switch - disable m32rx + compatability. + (md_show_usage): Document new option. + + * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi. + * doc/Makefile.in: Regenerate. + * doc/c-m32r.texi (M32R-Opts): Document new command line switch. + +2000-03-02 Michael Meissner + + * config/tc-d30v.c (check_range): Remove code that incorrectly + sign extended values where bits < 32. + +2000-03-02 H.J. Lu (hjl@gnu.org) + + * configure.in: Support --enable-targets=all on ia32. + * configure: Regenerated. + +2000-03-01 Nick Clifton + + * gasp.c (do_align): Remove bogus check of alignment value. + +2000-02-27 Thomas de Lellis + + * config/obj-elf.c (elf_frob_symbol): Remove code which when + TC_PPC was defined forced the type of a symbol with no other type + to be BSF_OBJECT. + +2000-02-27 Hans-Peter Nilsson + + * doc/internals.texi (CPU backend): Mention that + line_separator_chars do not break up comments. Fix typos for + LEX_AT and LEX_NAME descriptions. Document operands for + TC_EQUAL_IN_INSN, md_operand and md_section_align. Correct + description of md_create_short_jump usage. Document argument for + md_undefined_symbol. + +2000-02-27 Jakub Jelinek + + * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option. + (md_parse_option): Handle it. + (md_show_usage): Document it. + +2000-02-27 Ian Lance Taylor + + * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an + opcode, for the instruction `pal19'. From Andrea Arcangeli + . + +2000-02-26 Alan Modra + + * config/tc-i386.c (i386_immediate): Move constant operand sizing + from here.. + (md_assemble): To here, before template operands are matched. + Also ensure a constant immediate is sign extended when we know the + size is at most 16 bits. This is to catch cases like "add + $0xffc0,%ax" where we don't know the size, and thus that the + immediate can be represented as Imm8S until after parsing the + register operand. + (i386_displacement): Similarly sign extend 16 bit constant + displacements. + (md_assemble): Relax 16-bit jump constant range check to suit sign + extended displacements. + +2000-02-26 Andreas Jaeger + + * doc/c-mips.texi (MIPS Opts): Fix typo in last patch. + +2000-02-25 Alan Modra + + * config/tc-i386.c (md_assemble): Don't swap intersegment jmp and + call operands when intel_syntax. + (intel_float_operand): Return 2 for "fi...". + (i386_operand_modifier): Change "DWORD PTR" test to suit above. + Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...". Revert + earlier "SHORT" change. + (md_assemble): When determining suffix from Regs, exclude + InOutPortReg. + +2000-02-24 Nick Clifton + + * configure: Add arm-wince, mips-pe and sh-pe targets. + * configure: Regenerate. + + * config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and + sh-pe targets. + (TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to + "pe-mips" for the mips-pe target. + + * config/tc-arm.c (insns): Change displacement encoded in BL + and B instructions if the target port is arm-wince. + (do_ldst): Do not bias the relocation offset if the target + port is arm-wince. + (md_pcrel_from): Add in missing relocation offset bias if the + target os arm-wince. + + * config/tc-mips.c (mips_target_format): Support COFF flavour. + (md_begin): Disable -G support for mips-pe target. + (md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32. + * config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for + COFF flavour. + + * config/tc-sh.c (md_begin): sh-pe target is little endian. + * config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD + assembler, just set the alignment to 4. + + * config/te-wince-pe.h: New file for WinCE targets. Define + TE_WINCE. + +2000-02-25 Alan Modra + + * config/tc-i386.c (md_assemble): Swap segments too for intel mode + string instructions. + (i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT. + (i386_intel_memory_operand): After finding a segment override, + check again for no `[' before looking for a displacement. Bomb if + more than one displacement rather than silently discarding the + second and subsequent ones. Free strings malloc'd by + build_displacement_string. + +2000-02-24 Catherine Moore + + * config/obj-som.c (obj_pseudo_table): Add "weak". + (obj_som_weak): New routine. + +2000-02-24 Alan Modra + + * config/tc-i386.c (union i386_op): New. + (struct _i386_insn): Delete disps[], imms[], regs[]. Add op[]. + Throughout file replace occurences of disps[n], imms[n], regs[n] + with equivalent op[n].disps, op[n].imms, op[n].regs. Simplify + intel mode operand swapping. Add assert in regKludge and + fake_zero_displacement code. Test i.types[n] when outputting + displacements and immediates. Combine output of Disp16 with + Disp32. + (md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes + when in intel mode by (not) reversing fsub and fdiv operands + before the template search. This fails for single operand + shorthand forms of the instruction, and if UNIXWARE_COMPAT is + undefined. Instead fix the base_opcode after we've found the + template. Move base_opcode xor with found_reverse_match from + opcode output code to before this fix so we test for the correct + opcodes. + (md_assemble): Don't use strcmp when deciding to ignore the suffix + check in intel mode. Instead compare opcodes. + + * config/tc-i386.h (TC_RELOC): Delete. + * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC + with equivalent call to reloc. + + * as.h (flag_m68k_mri): Move declaration after target include, and + only declare when TC_M68K defined. Define as zero otherwise. + (LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0. + * app.c (scrub_m68k_mri): Declare only when TC_M68K defined. + Define as zero otherwise. + (do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined. + (struct app_save): Declare scrub_m68k_mri only when TC_M68K. + (app_push, app_pop): Save scrub_m68k_mri only when TC_M68K. + (do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than + testing whether defined. + * cond.c (ignore_input): Use NO_PSEUDO_DOT directly. + * expr.c (operand): #ifdef unused case labels when TC_M68K undefined. + * read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly + rather than testing whether defined. + (s_mri): Set flag_m68k_mri only when TC_M68K defined. + (parse_mri_cons): Declare and use only when TC_M68K. + * config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1. + * config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1. + * config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1. + + * NEWS: Mention IBM 370 support. + +2000-02-23 Richard Henderson + + * config/tc-i386.c (md_assemble): When swapping operands for + intel_syntax, assume everything that's not Imm or Disp is a + register. + +2000-02-23 Linas Vepstas + + * config/tc-i370.c, config/tc-i370.h: New files. + * Makefile.am: Add support for Linux/IBM 370. + * configure.in: Likewise. + * app.c (do_scrub_begin): Don't lex single quote when TC_I370. + * config/obj-elf.c: Include elf/i370.h + (obj_elf_section): Don't do anything special for flag_mri if TC_I370. + + * Makefile.in: Regenerate. + * configure: Regenerate. + + * doc/c-i370.texi: New file. + * doc/all.texi: Include it. + * doc/as.texinfo: And here. + * doc/Makefile.am(CPU_DOCS): Add c-i370.texi. + * doc/Makefile.in: Regenerate. + +2000-02-19 Michael Meissner + + * config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to + determine if an instruction can be used in parallel with an ADDppp + or SUBppp instruction. + +2000-02-22 Andrew Haley + + * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64. + +2000-02-22 Andrew Haley + + * config/tc-mips.c (mips_gp32): New variable. + (macro_build) Use mips_gp32. + (mips_ip): Ditto. + (md_longopts): Add "-mgp32" and "-mgp64". + (md_parse_option): Add OPTION_GP32 and OPTION_GP64. + + (OPTION_M7900): Change offset + (OPTION_NO_M7900): Ditto. + +2000-02-22 Alexandre Oliva + + * config/obj-coff.c (add_lineno): Accept non-positive lineno with + warning, and bump it to 1. + +2000-02-22 Ian Lance Taylor + + From Brad Lucier : + * dwarf2dbg.c (print_stats): Add cast to force printf argument to + match format. + +2000-02-21 Catherine Moore + + * config/tc-mips.c (MF_HILO_INSN): Define. + (mips_7000_hilo_fix): Declare. + (append_insn): Conditionally insert nops after an mfhi/mflo insn. + (md_parse_option): Check for 7000_HILO_FIX options. + (OPTION_M7000_HILO_FIX): Define. + (OPTION_NO_M7000_HILO_FIX): Define. + * doc/c-mips.texi (-mfix7000): Describe. + +2000-02-21 Alan Modra + + * listing.c (print_lines): Remove unused variable `end'. + + * config/tc-i386.c (md_assemble): Use `reloc()' to select reloc + type for JumpInterSegment output. Use enum bfd_reloc_code_real for + reloc_type when BFD_ASSEMBLER. + (md_estimate_size_before_relax): Use enum bfd_reloc_code_real for + reloc_type when BFD_ASSEMBLER. Move common code out of switch + statement and quell signed vs. unsigned comparison warning. + +2000-02-18 Nick Clifton + + * config/tc-d10v.c (find_opcode): Add a symbol's value to + the computed frag offset, rather than overwriting it. + +2000-02-17 J"orn Rennecke + + * config/tc-sh.c ("elf/sh.h"): Include. + (sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables. + (md.begin): Initialize target_arch. + Only include opcodes in has table that match selected architecture. + (parse_reg): Recognize register names for sh-dsp. + (parse_at): Recognize post-modify addressing. + (get_operands): The leading space is now optional. + (get_specific): Remove FDREG_N support. Add support for sh-dsp + arguments. Update valid_arch. + (build_Mytes): Add support for SDT_REG_N. + (find_cooked_opcode): New function, broken out of md_assemble. + (assemble_ppi, sh_elf_final_processing): New functions. + (md_assemble): Use find_cooked_opcode and assemble_ppi. + (md_longopts, md_parse_option): New option: -dsp. + * config/tc-sh.h (elf_tc_final_processing): Define. + (sh_elf_final_processing): Declare. + +2000-02-11 Jeffrey A Law (law@cygnus.com) + + * config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create + the unwinder subspace. Save the current seg/subseg before creating + the new seg/subseg. + +2000-02-10 Nick Clifton + + * config/tc-mcore.c (INST_BYTE0): Redefine to handle big and + little endian targets. + (INST_BYTE1): Redefine to handle big and little endian + targets. + (cpu_type): New type: Select between M340 and M210. + (parse_psrmod): New function: Parse the PSRCLR and PSRSET + instructions of the M340. + (md_assemble): Add support for the MULSH and OPSR classes of + instructions. + (md_atof): Add support for little endian targets. + (md_parse_option): Add support for -EL, -EB and -mcpu command + line switches. + (md_convert_frag): Add support for little endian targets. + (md_apply_fix3): Add support for little endian targets. + (md_number_to_chars): Add support for little endian targets. + +2000-02-10 Timothy Wall + + * read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is + defined, use it to verify the symbol just read should be a label. + +2000-02-10 Timothy Wall + + * app.c (do_scrub_chars): Handle "||" for parallel instructions + when DOUBLEBAR_PARALLEL is defined. Avoid stripping whitespace + around colons when KEEP_WHITE_AROUND_COLON is defined. + * doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL + and KEEP_WHITE_AROUND_COLON. + +2000-02-08 Timothy Wall + + * read.c (s_rept): Call do_repeat, which abstracts the repeat + logic. + (do_repeat): New. Abstract repeat logic so that a "break" can be + implemented. + (end_repeat): New. Provide support for a "break" out of the + repeat loop. + * read.h: Add prototypes for new functions. + +2000-02-08 Timothy Wall + + * doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro. + * as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero). + * expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is + non-zero. + +2000-02-08 Timothy Wall + + * read.c: Added elseif to directives table. + * read.h: Added prototype for s_elseif. + * doc/as.texinfo: Added description for elseif. + * cond.c (s_elseif): New function + +2000-02-04 Timothy Wall + + * listing.c (print_lines): Remove conditionals causing bug in + listings. + +2000-02-03 Timothy Wall + + * as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER + default values. + * frags.c (frag_new): Calculate fr_fix in octets + (frag_now_fix) Return offset as target address offset (bytes). + (frag_now_fix_octets) New - Return offset in octets (8-bit + quantities). + * frags.h: Added prototype for frag_now_fix_octets(). + Distinguish between octets and bytes in field descriptions. + * listing.c (calc_hex): Account for octets vs bytes when + printing addresses/offsets. + (print_lines) Ditto. Also, if LISTING_WORD_SIZE is not 1, and + target is little-endian, print the octets in a word in big-endian + order so that the display looks like a proper hexadecimal number, + instead of having the octets reversed. + * read.c (do_align): When recording alignment, alignment power + should be in terms of target bytes (minimum addressible unit) + instead of octets. + (do_org) Convert ORG target address (byte) argument into an + octet offset when generating a variable fragment. + * symbols.c (resolve_symbol_value): Symbol final value + converted to a target address offset (bytes) from its octet offset. + * config/obj-coff.c (coff_frob_symbol): Symbol target address + offset (bytes) is adjusted by the frag offset (octets) converted + to bytes. + (coff_frob_section) Section alignment power is in terms of bytes; + convert it to an octet alignment power when calculating size (and + size mask) in octets. Don't modify the section size in order to + "align" it for TI COFF, since that format has a different method + for storing alignment information. + +2000-02-01 Timothy Wall + + * stabs.c (generate_asm_file): Escape backslashes in stabs file + entries, matching the way GCC generates them. If not escaped, the + filename is encoded incorrectly. + +2000-01-31 Nick Clifton + + * config/tc-arm.c (reg_table): Add support for ATPCS register + naming conventions. + +2000-01-31 Geoff Keating + + * config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if + already defined. + * config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES): + New macro. + * config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag + of a symbol when we really care about its value. + +2000-01-19 Chandra Chavva + + * config/tc-mcore.c (md_assemble): Give warning message if + operands passes to instruction are more than the spec. + +2000-01-27 Thomas de Lellis + + * config/tc-arm.c (armadjust_symtab): If the assembler is in + Thumb mode but the label seen was not declared as '.thumb_func' + then set the ST_INFO type to STT_ARM_16BIT mode. This allows + correct disassembly of Thumb code bounded by non function labels. + +2000-01-27 Alan Modra + + * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c + Add dependencies for e-i386aout.o. Fix 2 comment lines. + + * Makefile.in: Same here. + Update copyright. + + * configure.in: Set bfd_gas for i386-aout when primary target + is bfd. Handle i386aout emulation. Don't use te_file=multi, as + we may need the primary te_file. Remove incorrect comment. + + * configure: Regenerate. + + * config/e-i386aout.c: New file. + + * as.c (USE_EMULATIONS): Move to before print_version_id. + (struct emulation): Add i386aout. + (show_usage): Split text strings. Reformat -a text. Add --em + help. + Update copyright. + + * obj.h (struct format_ops): Add s_get_other and s_get_desc. + (aout_format_ops): New. + Update copyright. + + * read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT + preprocessor conditional and add aout USE_EMULATIONS tests. + (read_a_source_file): Don't pass error strings to printf as + format arg. + Update copyright. + + * gasp.c (exp_get_abs): Don't pass error strings to printf as + format arg. + (do_data): Same here. + (process_file): And here. + Update copyright. + + * symbols.c (colon): Rewrite "already defined" fatal message + code for aout with USE_EMULATIONS. + Update copyright. + + * config/obj-aout.c (OBJ_HEADER): Define. + (obj_pseudo_table): Rename to aout_pseudo_table. Init all + fields of sentinel. + (obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE, + S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi + forms here. + (obj_aout_type): Expand S_SET_OTHER here too. + (obj_read_begin_hook): Remove. + (aout_pop_insert): New. + (obj_aout_s_get_other): New. + (obj_aout_s_get_desc): New. + (aout_format_ops): New. + Update copyright. + + * config/obj-aout.h (obj_pop_insert): Define so non-multi usage + gets aout_pseudo_table. + (aout_pseudo_table): Declare. + (obj_read_begin_hook): Define. + Update copyright. + + * config/obj-coff.c (obj_pseudo_table): Rename to + coff_pseudo_table. + (coff_pop_insert): Use coff_pseudo_table. + (coff_sec_sym_ok_for_reloc): Remove. + (coff_format_ops): Add 0 entries for s_get_size, s_set_size, + and comment all zero entries and remove #if 0 code. + Update copyright. + + * config/obj-coff.h (obj_pop_insert): Define. + (coff_pseudo_table): Declare. + Update copyright. + + * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for + s_get_size, s_set_size. Comment all zero entries. + Update copyright. + + * config/obj-elf.c (elf_s_get_other): New function. + (obj_read_begin_hook): Rename to elf_obj_read_begin_hook. + (obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook. + (elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and + comment. + (obj_elf_parse_section_letters): Don't pass error strings to + printf as format arg. + Update copyright. + + * config/obj-elf.h (ECOFF_DEBUGGING): Define when + OBJ_MAYBE_ECOFF. + (elf_s_get_other): Declare. + (S_GET_OTHER) Define as elf_s_get_other if not already + defined. + (S_SET_OTHER): Only define when not already defined. + (elf_obj_read_begin_hook): Declare. + (obj_read_begin_hook): Define. + (elf_obj_symbol_new_hook): Declare. + (obj_symbol_new_hook): Define. + Update copyright. + + * config/obj-multi.h: Add copyright header and protect against + multiple inclusion. Add * to all function pointers. + (OBJ_HEADER): If defined, include it rather than other defines + in this file. + (obj_frob_file_after_relocs): Test for NULL. + (obj_symbol_new_hook): Here too. + (obj_sec_sym_ok_for_reloc): And here. + (S_GET_OTHER): Define. + (S_GET_DESC): Define. + (ECOFF_DEBUGGING): Remove as it's done in obj-elf.h + (OBJ_MAYBE_ELF): Update comment. + + * config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to + OBJ_AOUT preprocessor conditional and handle emulation by + testing OUTPUT_FLAVOR. + (i386_displacement): Here too. + (md_section_align): Similarly here. + (i386_target_format): Conditionally compile when more than one + of OBJ_MAYBE_{ELF,COFF,AOUT} defined. Add aout case. + (i386_immediate): Fix error message for aout BFD_ASSMBLER. + (i386_displacement): Here too. + Update copyright. + + * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*. + Define TARGET_FORMAT for aout only when not multi. + Update copyright. + + * config/te-multi.h: Delete file as it's identical to te-generic.h + +2000-01-15 Alan Modra + + * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete. + * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to + LONG_MNEM_SUFFIX. + + * config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to + DWORD_MNEM_SUFFIX. + * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some + comments. + +2000-01-13 Clinton Popetz + + * config/tc-mips.c (mips_do_align): New function. + * config/tc-mips.h (md_do_align): Define. + +2000-01-10 Philip Blundell + + * doc/c-arm.texi (ARM Options): Fix typo. + (ARM-Chars): Correct description of `#'. Mention that `;' is a + line separator for Linux. + * doc/as.texinfo (Comments): Mention the ARM. + +2000-01-10 Philip Blundell + + * configure.in (arm*-*-conix*): New target. + (arm*-*-linux-gnu*): Match instead of arm-*-linux* and + armv*-*-linux-gnu. + * configure: Regenerate. + +2000-01-03 Martin v. Loewis + + * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos. + (obj_elf_visibility): New function. + + * doc/as.texinfo (Visibility): New node: document visibility + pseudo ops. + +For older changes see ChangeLog-9899 diff -uprN binutils-2.11.92.0.12.3/gas/Makefile.am binutils-2.11.93.0.2/gas/Makefile.am --- binutils-2.11.92.0.12.3/gas/Makefile.am Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/Makefile.am Sun Feb 3 11:22:31 2002 @@ -65,6 +65,7 @@ CPU_TYPES = \ mn10300 \ ns32k \ openrisc \ + or32 \ pdp11 \ pj \ ppc \ @@ -78,6 +79,7 @@ CPU_TYPES = \ vax \ w65 \ v850 \ + xstormy16 \ z8k # Object format types. This is only used for dependency information. @@ -250,6 +252,7 @@ TARGET_CPU_CFILES = \ config/tc-mn10300.c \ config/tc-ns32k.c \ config/tc-openrisc.c \ + config/tc-or32.c \ config/tc-pdp11.c \ config/tc-pj.c \ config/tc-ppc.c \ @@ -263,6 +266,7 @@ TARGET_CPU_CFILES = \ config/tc-vax.c \ config/tc-w65.c \ config/tc-v850.c \ + config/tc-xstormy16.c \ config/tc-z8k.c TARGET_CPU_HFILES = \ @@ -294,6 +298,7 @@ TARGET_CPU_HFILES = \ config/tc-mn10300.h \ config/tc-ns32k.h \ config/tc-openrisc.h \ + config/tc-or32.h \ config/tc-pdp11.h \ config/tc-pj.h \ config/tc-ppc.h \ @@ -307,6 +312,7 @@ TARGET_CPU_HFILES = \ config/tc-vax.h \ config/tc-w65.h \ config/tc-v850.h \ + config/tc-xstormy16.h \ config/tc-z8k.h # OBJ files in config @@ -1259,6 +1265,16 @@ DEPTC_openrisc_elf = $(INCDIR)/symcat.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/openrisc-desc.h \ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ cgen.h +DEPTC_or32_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/opcode/or32.h $(INCDIR)/elf/or32.h \ + $(INCDIR)/elf/reloc-macros.h +DEPTC_or32_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ + $(srcdir)/config/tc-or32.h $(INCDIR)/opcode/or32.h \ + $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h @@ -1403,6 +1419,17 @@ DEPTC_v850_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/v850.h dwarf2dbg.h +DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/xstormy16-opc.h cgen.h +DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ + cgen.h DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -1700,6 +1727,15 @@ DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h +DEPOBJ_or32_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-or32.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/obstack.h subsegs.h +DEPOBJ_or32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -1836,6 +1872,15 @@ DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h \ $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h +DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h +DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -2035,6 +2080,12 @@ DEP_openrisc_coff = $(srcdir)/config/obj DEP_openrisc_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h +DEP_or32_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h +DEP_or32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h DEP_pdp11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pdp11.h \ @@ -2125,6 +2176,12 @@ DEP_v850_coff = $(srcdir)/config/obj-cof DEP_v850_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h +DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h +DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h diff -uprN binutils-2.11.92.0.12.3/gas/Makefile.in binutils-2.11.93.0.2/gas/Makefile.in --- binutils-2.11.92.0.12.3/gas/Makefile.in Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/Makefile.in Sun Feb 3 11:22:31 2002 @@ -176,6 +176,7 @@ CPU_TYPES = \ mn10300 \ ns32k \ openrisc \ + or32 \ pdp11 \ pj \ ppc \ @@ -189,6 +190,7 @@ CPU_TYPES = \ vax \ w65 \ v850 \ + xstormy16 \ z8k @@ -367,6 +369,7 @@ TARGET_CPU_CFILES = \ config/tc-mn10300.c \ config/tc-ns32k.c \ config/tc-openrisc.c \ + config/tc-or32.c \ config/tc-pdp11.c \ config/tc-pj.c \ config/tc-ppc.c \ @@ -380,6 +383,7 @@ TARGET_CPU_CFILES = \ config/tc-vax.c \ config/tc-w65.c \ config/tc-v850.c \ + config/tc-xstormy16.c \ config/tc-z8k.c @@ -412,6 +416,7 @@ TARGET_CPU_HFILES = \ config/tc-mn10300.h \ config/tc-ns32k.h \ config/tc-openrisc.h \ + config/tc-or32.h \ config/tc-pdp11.h \ config/tc-pj.h \ config/tc-ppc.h \ @@ -425,6 +430,7 @@ TARGET_CPU_HFILES = \ config/tc-vax.h \ config/tc-w65.h \ config/tc-v850.h \ + config/tc-xstormy16.h \ config/tc-z8k.h @@ -1030,6 +1036,18 @@ DEPTC_openrisc_elf = $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/openrisc-opc.h \ cgen.h +DEPTC_or32_coff = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h $(INCDIR)/opcode/or32.h $(INCDIR)/elf/or32.h \ + $(INCDIR)/elf/reloc-macros.h + +DEPTC_or32_elf = $(INCDIR)/safe-ctype.h $(INCDIR)/symcat.h \ + $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \ + $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \ + $(srcdir)/config/tc-or32.h $(INCDIR)/opcode/or32.h \ + $(INCDIR)/elf/or32.h $(INCDIR)/elf/reloc-macros.h + DEPTC_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/safe-ctype.h $(INCDIR)/opcode/pdp11.h @@ -1206,6 +1224,19 @@ DEPTC_v850_elf = $(INCDIR)/symcat.h $(sr $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/opcode/v850.h dwarf2dbg.h +DEPTC_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \ + $(srcdir)/../opcodes/xstormy16-desc.h $(INCDIR)/opcode/cgen.h \ + $(srcdir)/../opcodes/xstormy16-opc.h cgen.h + +DEPTC_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/xstormy16-desc.h \ + $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/xstormy16-opc.h \ + cgen.h + DEPTC_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -1573,6 +1604,17 @@ DEPOBJ_openrisc_elf = $(INCDIR)/symcat.h $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h +DEPOBJ_or32_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-or32.h $(INCDIR)/coff/internal.h \ + $(INCDIR)/coff/or32.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \ + $(INCDIR)/obstack.h subsegs.h + +DEPOBJ_or32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + DEPOBJ_pdp11_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \ $(srcdir)/config/tc-pdp11.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h @@ -1741,6 +1783,17 @@ DEPOBJ_v850_elf = $(INCDIR)/symcat.h $(s $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ $(INCDIR)/aout/aout64.h +DEPOBJ_xstormy16_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ + $(srcdir)/config/tc-xstormy16.h $(INCDIR)/coff/internal.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \ + subsegs.h + +DEPOBJ_xstormy16_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \ + $(INCDIR)/aout/aout64.h + DEPOBJ_z8k_coff = $(INCDIR)/symcat.h $(srcdir)/config/obj-coff.h \ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h \ @@ -2008,6 +2061,14 @@ DEP_openrisc_elf = $(srcdir)/config/obj- $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-openrisc.h +DEP_or32_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-or32.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/or32.h \ + $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h + +DEP_or32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-or32.h + DEP_pdp11_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-pdp11.h \ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h @@ -2130,6 +2191,14 @@ DEP_v850_elf = $(srcdir)/config/obj-elf. $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-v850.h +DEP_xstormy16_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-xstormy16.h \ + $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \ + $(INCDIR)/bfdlink.h + +DEP_xstormy16_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \ + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \ + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-xstormy16.h + DEP_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \ $(INCDIR)/symcat.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h \ $(INCDIR)/coff/external.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h @@ -2193,7 +2262,7 @@ configure configure.in gdbinit.in itbl-l DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best SOURCES = $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(gasp_new_SOURCES) OBJECTS = $(itbl_test_OBJECTS) $(as_new_OBJECTS) $(gasp_new_OBJECTS) diff -uprN binutils-2.11.92.0.12.3/gas/NEWS binutils-2.11.93.0.2/gas/NEWS --- binutils-2.11.92.0.12.3/gas/NEWS Sat Jul 14 10:29:15 2001 +++ binutils-2.11.93.0.2/gas/NEWS Sun Feb 3 11:22:31 2002 @@ -1,4 +1,13 @@ -*- text -*- +Support for the OpenRISC 32-bit embedded processor by OpenCores. + +The ARM assembler now accepts -march=..., -mcpu=... and -mfpu=... for +specifying the target instruction set. The old method of specifying the +target processor has been deprecated, but is still accepted for +compatibility. + +Support for the VFP floating-point instruction set has been added to +the ARM assembler. New psuedo op: .incbin to include a set of binary data at a given point in the assembly. Contributed by Anders Norlander. diff -uprN binutils-2.11.92.0.12.3/gas/as.c binutils-2.11.93.0.2/gas/as.c --- binutils-2.11.92.0.12.3/gas/as.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/as.c Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ /* as.c - GAS main program. 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. @@ -525,7 +525,7 @@ parse_args (pargc, pargv) case OPTION_VERSION: /* This output is intended to follow the GNU standards document. */ printf (_("GNU assembler %s\n"), BFD_VERSION_STRING); - printf (_("Copyright 2001 Free Software Foundation, Inc.\n")); + printf (_("Copyright 2002 Free Software Foundation, Inc.\n")); printf (_("\ 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")); @@ -762,6 +762,10 @@ the GNU General Public License. This pr *pargc = new_argc; *pargv = new_argv; + +#ifdef md_after_parse_args + md_after_parse_args (); +#endif } static long start_time; diff -uprN binutils-2.11.92.0.12.3/gas/cgen.c binutils-2.11.93.0.2/gas/cgen.c --- binutils-2.11.92.0.12.3/gas/cgen.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/cgen.c Sun Feb 3 11:22:31 2002 @@ -29,6 +29,8 @@ Foundation, 59 Temple Place - Suite 330, #include "cgen.h" #include "dwarf2dbg.h" +static void queue_fixup PARAMS ((int, int, expressionS *)); + /* Opcode table descriptor, must be set by md_begin. */ CGEN_CPU_DESC gas_cgen_cpu_desc; @@ -322,7 +324,7 @@ gas_cgen_parse_operand (cd, want, strP, static char *hold; static enum cgen_parse_operand_result *resultP_1; #endif - const char *errmsg = NULL; + const char *errmsg; expressionS exp; if (want == CGEN_PARSE_OPERAND_INIT) @@ -348,6 +350,7 @@ gas_cgen_parse_operand (cd, want, strP, expr_jmp_buf_p = 1; expression (&exp); expr_jmp_buf_p = 0; + errmsg = NULL; *strP = input_line_pointer; input_line_pointer = hold; diff -uprN binutils-2.11.92.0.12.3/gas/cgen.h binutils-2.11.93.0.2/gas/cgen.h --- binutils-2.11.92.0.12.3/gas/cgen.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/cgen.h Sun Feb 3 11:22:31 2002 @@ -96,4 +96,6 @@ md_cgen_record_fixup_exp PARAMS ((fragS const CGEN_OPERAND *, int, expressionS *)); +extern void gas_cgen_md_operand PARAMS ((expressionS *)); + #endif /* GAS_CGEN_H */ diff -uprN binutils-2.11.92.0.12.3/gas/config/obj-coff.c binutils-2.11.93.0.2/gas/config/obj-coff.c --- binutils-2.11.92.0.12.3/gas/config/obj-coff.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/obj-coff.c Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ /* coff object file format Copyright 1989, 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. @@ -1631,7 +1631,7 @@ obj_coff_init_stab_section (seg) /* Zero it out. */ memset (p, 0, 12); as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) alloca (strlen (seg->name) + 4); + stabstr_name = (char *) xmalloc (strlen (seg->name) + 4); strcpy (stabstr_name, seg->name); strcat (stabstr_name, "str"); stroff = get_stab_string_offset (file, stabstr_name); @@ -1889,7 +1889,7 @@ count_entries_in_chain (idx) { if (fixup_ptr->fx_done == 0 && TC_COUNT_RELOC (fixup_ptr)) { -#ifdef TC_A29K +#if defined(TC_A29K) || defined(TC_OR32) if (fixup_ptr->fx_r_type == RELOC_CONSTH) nrelocs += 2; else @@ -2048,6 +2048,20 @@ do_relocs_for (abfd, h, file_cursor) ext_ptr++; } #endif +#if defined(TC_OR32) + /* The or32 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. */ + intr.r_type = R_IHCONST; + intr.r_symndx = fix_ptr->fx_addnumber; + (void) bfd_coff_swap_reloc_out (abfd, & intr, ext_ptr); + ext_ptr ++; + } +#endif } fix_ptr = fix_ptr->fx_next; @@ -2127,6 +2141,7 @@ fill_section (abfd, h, file_cursor) COFF_NOLOAD_PROBLEM, and have only one test here. */ #ifndef TC_I386 #ifndef TC_A29K +#ifndef TC_OR32 #ifndef COFF_NOLOAD_PROBLEM /* Apparently the SVR3 linker (and exec syscall) and UDI mondfe progrem are confused by noload sections. */ @@ -2134,6 +2149,7 @@ fill_section (abfd, h, file_cursor) #endif #endif #endif +#endif } else if (strcmp (s->s_name, ".lit") == 0) s->s_flags = STYP_LIT | STYP_TEXT; @@ -4420,7 +4436,7 @@ fixup_segment (segP, this_segment_type) break; default: -#if defined(TC_A29K) || (defined(TE_PE) && defined(TC_I386)) || defined(TC_M88K) +#if defined(TC_A29K) || (defined(TE_PE) && defined(TC_I386)) || defined(TC_M88K) || defined(TC_OR32) /* This really should be handled in the linker, but backward compatibility forbids. */ add_number += S_GET_VALUE (add_symbolP); @@ -4466,7 +4482,7 @@ fixup_segment (segP, this_segment_type) if (pcrel) { -#if !defined(TC_M88K) && !(defined(TE_PE) && defined(TC_I386)) && !defined(TC_A29K) +#if !defined(TC_M88K) && !(defined(TE_PE) && defined(TC_I386)) && !defined(TC_A29K) && !defined(TC_OR32) /* This adjustment is not correct on the m88k, for which the linker does all the computation. */ add_number -= md_pcrel_from (fixP); diff -uprN binutils-2.11.92.0.12.3/gas/config/obj-coff.h binutils-2.11.93.0.2/gas/config/obj-coff.h --- binutils-2.11.92.0.12.3/gas/config/obj-coff.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/obj-coff.h Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ /* coff object file format Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000 + 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of GAS. @@ -90,6 +90,11 @@ #define TARGET_FORMAT "coff-a29k-big" #endif +#ifdef TC_OR32 +#include "coff/or32.h" +#define TARGET_FORMAT "coff-or32-big" +#endif + #ifdef TC_I960 #include "coff/i960.h" #define TARGET_FORMAT "coff-Intel-little" @@ -190,9 +195,7 @@ extern void coff_obj_symbol_new_hook PAR extern void coff_obj_read_begin_hook PARAMS ((void)); #define obj_read_begin_hook coff_obj_read_begin_hook -/* *********************************************************************** - - This file really contains two implementations of the COFF back end. +/* This file really contains two implementations of the COFF back end. They are in the process of being merged, but this is only a preliminary, mechanical merging. Many definitions that are identical between the two are still found in both versions. @@ -226,9 +229,7 @@ extern void coff_obj_read_begin_hook PAR See doc/internals.texi for a brief discussion of the history, if you care. - Ken Raeburn, 5 May 1994 - - *********************************************************************** */ + Ken Raeburn, 5 May 1994. */ #ifdef BFD_ASSEMBLER @@ -257,10 +258,10 @@ extern void coff_obj_read_begin_hook PAR extern void obj_coff_section PARAMS ((int)); -/* The number of auxiliary entries */ +/* The number of auxiliary entries. */ #define S_GET_NUMBER_AUXILIARY(s) \ (coffsymbol (symbol_get_bfdsym (s))->native->u.syment.n_numaux) -/* The number of auxiliary entries */ +/* The number of auxiliary entries. */ #define S_SET_NUMBER_AUXILIARY(s,v) (S_GET_NUMBER_AUXILIARY (s) = (v)) /* True if a symbol name is in the string table, i.e. its length is > 8. */ @@ -271,9 +272,9 @@ extern int S_SET_STORAGE_CLASS PARAMS (( extern int S_GET_STORAGE_CLASS PARAMS ((symbolS *)); extern void SA_SET_SYM_ENDNDX PARAMS ((symbolS *, symbolS *)); -/* Auxiliary entry macros. SA_ stands for symbol auxiliary */ -/* Omit the tv related fields */ -/* Accessors */ +/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */ +/* Omit the tv related fields. */ +/* Accessors. */ #define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l) #define SA_GET_SYM_LNNO(s) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno) @@ -297,15 +298,13 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((s #define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc=(v)) #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. - */ +/* 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. */ #define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */ #define SF_SYSPROC (0x0000003f) /* bits 0-5 are used to store the sysproc number */ @@ -330,7 +329,7 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((s #define SF_GET_SEGMENT (0x00200000) /* Get the section of the forward symbol. */ /* All other bits are unused. */ -/* Accessors */ +/* Accessors. */ #define SF_GET(s) (*symbol_get_obj (s)) #define SF_GET_DEBUG(s) (symbol_get_bfdsym (s)->flags & BSF_DEBUGGING) #define SF_SET_DEBUG(s) (symbol_get_bfdsym (s)->flags |= BSF_DEBUGGING) @@ -352,7 +351,7 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((s #define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* used by i960 */ #define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* used by i960 */ -/* Modifiers */ +/* Modifiers. */ #define SF_SET(s,v) (SF_GET (s) = (v)) #define SF_SET_NORMAL_FIELD(s,v) (SF_GET (s) |= ((v) & SF_NORMAL_MASK)) #define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK)) @@ -414,7 +413,7 @@ extern symbolS *coff_last_function; #endif #endif -/* sanity check */ +/* Sanity check. */ #ifdef TC_I960 #ifndef C_LEAFSTAT @@ -424,8 +423,8 @@ hey ! Where is the C_LEAFSTAT definition #else /* not BFD_ASSEMBLER */ -#ifdef TC_A29K -/* Allow translate from aout relocs to coff relocs */ +#if defined TC_A29K || defined TC_OR32 +/* Allow translate from aout relocs to coff relocs. */ #define NO_RELOC 20 #define RELOC_32 1 #define RELOC_8 2 @@ -447,7 +446,7 @@ extern const segT N_TYPE_seg[]; /* SYMBOL TABLE */ -/* Symbol table entry data type */ +/* Symbol table entry data type. */ typedef struct { @@ -455,18 +454,17 @@ typedef struct struct internal_syment ost_entry; /* Auxiliary entry. */ union internal_auxent ost_auxent[OBJ_COFF_MAX_AUXENTRIES]; - /* obj_coff internal use only flags */ + /* obj_coff internal use only flags. */ unsigned int ost_flags; } obj_symbol_type; #ifndef DO_NOT_STRIP #define DO_NOT_STRIP 0 #endif -/* Symbol table macros and constants */ +/* Symbol table macros and constants. */ /* Possible and usefull section number in symbol table - * The values of TEXT, DATA and BSS may not be portable. - */ + The values of TEXT, DATA and BSS may not be portable. */ #define C_ABS_SECTION N_ABS #define C_UNDEF_SECTION N_UNDEF @@ -475,27 +473,25 @@ typedef struct #define C_PTV_SECTION P_TV #define C_REGISTER_SECTION 50 -/* - * Macros to extract information from a symbol table entry. - * This syntaxic indirection allows independence regarding a.out or coff. - * The argument (s) of all these macros is a pointer to a symbol table entry. - */ +/* Macros to extract information from a symbol table entry. + This syntaxic indirection allows independence regarding a.out or coff. + The argument (s) of all these macros is a pointer to a symbol table entry. */ -/* Predicates */ -/* True if the symbol is external */ +/* Predicates. */ +/* True if the symbol is external. */ #define S_IS_EXTERNAL(s) ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION) /* True if symbol has been defined, ie : section > 0 (DATA, TEXT or BSS) - section == 0 and value > 0 (external bss symbol) */ + section == 0 and value > 0 (external bss symbol). */ #define S_IS_DEFINED(s) \ ((s)->sy_symbol.ost_entry.n_scnum > C_UNDEF_SECTION \ || ((s)->sy_symbol.ost_entry.n_scnum == C_UNDEF_SECTION \ && S_GET_VALUE (s) > 0) \ || ((s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) -/* True if a debug special symbol entry */ +/* True if a debug special symbol entry. */ #define S_IS_DEBUG(s) ((s)->sy_symbol.ost_entry.n_scnum == C_DEBUG_SECTION) -/* True if a symbol is local symbol name */ -/* A symbol name whose name includes ^A is a gas internal pseudo symbol */ +/* True if a symbol is local symbol name. */ +/* A symbol name whose name includes ^A is a gas internal pseudo symbol. */ #define S_IS_LOCAL(s) \ ((s)->sy_symbol.ost_entry.n_scnum == C_REGISTER_SECTION \ || (S_LOCAL_NAME(s) && ! flag_keep_locals && ! S_IS_DEBUG (s)) \ @@ -504,13 +500,11 @@ typedef struct || (flag_strip_local_absolute \ && !S_IS_EXTERNAL(s) \ && (s)->sy_symbol.ost_entry.n_scnum == C_ABS_SECTION)) -/* True if a symbol is not defined in this file */ +/* True if a symbol is not defined in this file. */ #define S_IS_EXTERN(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \ && S_GET_VALUE (s) == 0) -/* - * True if a symbol can be multiply defined (bss symbols have this def - * though it is bad practice) - */ +/* True if a symbol can be multiply defined (bss symbols have this def + though it is bad practice). */ #define S_IS_COMMON(s) ((s)->sy_symbol.ost_entry.n_scnum == 0 \ && S_GET_VALUE (s) != 0) /* True if a symbol name is in the string table, i.e. its length is > 8. */ @@ -526,41 +520,41 @@ typedef struct ((s)->sy_symbol.ost_entry.n_sclass == C_WEAKEXT) #endif -/* Accessors */ -/* The name of the symbol */ +/* Accessors. */ +/* The name of the symbol. */ #define S_GET_NAME(s) ((char*) (s)->sy_symbol.ost_entry.n_offset) -/* The pointer to the string table */ +/* The pointer to the string table. */ #define S_GET_OFFSET(s) ((s)->sy_symbol.ost_entry.n_offset) -/* The numeric value of the segment */ +/* The numeric value of the segment. */ #define S_GET_SEGMENT(s) s_get_segment(s) -/* The data type */ +/* The data type. */ #define S_GET_DATA_TYPE(s) ((s)->sy_symbol.ost_entry.n_type) -/* The storage class */ +/* The storage class. */ #define S_GET_STORAGE_CLASS(s) ((s)->sy_symbol.ost_entry.n_sclass) -/* The number of auxiliary entries */ +/* The number of auxiliary entries. */ #define S_GET_NUMBER_AUXILIARY(s) ((s)->sy_symbol.ost_entry.n_numaux) -/* Modifiers */ -/* Set the name of the symbol */ +/* Modifiers. */ +/* Set the name of the symbol. */ #define S_SET_NAME(s,v) ((s)->sy_symbol.ost_entry.n_offset = (unsigned long) (v)) -/* Set the offset of the symbol */ +/* Set the offset of the symbol. */ #define S_SET_OFFSET(s,v) ((s)->sy_symbol.ost_entry.n_offset = (v)) -/* The numeric value of the segment */ +/* The numeric value of the segment. */ #define S_SET_SEGMENT(s,v) ((s)->sy_symbol.ost_entry.n_scnum = SEGMENT_TO_SYMBOL_TYPE(v)) -/* The data type */ +/* The data type. */ #define S_SET_DATA_TYPE(s,v) ((s)->sy_symbol.ost_entry.n_type = (v)) -/* The storage class */ +/* The storage class. */ #define S_SET_STORAGE_CLASS(s,v) ((s)->sy_symbol.ost_entry.n_sclass = (v)) -/* The number of auxiliary entries */ +/* The number of auxiliary entries. */ #define S_SET_NUMBER_AUXILIARY(s,v) ((s)->sy_symbol.ost_entry.n_numaux = (v)) -/* Additional modifiers */ -/* The symbol is external (does not mean undefined) */ +/* Additional modifiers. */ +/* The symbol is external (does not mean undefined). */ #define S_SET_EXTERNAL(s) { S_SET_STORAGE_CLASS(s, C_EXT) ; SF_CLEAR_LOCAL(s); } -/* Auxiliary entry macros. SA_ stands for symbol auxiliary */ -/* Omit the tv related fields */ -/* Accessors */ +/* Auxiliary entry macros. SA_ stands for symbol auxiliary. */ +/* Omit the tv related fields. */ +/* Accessors. */ #define SYM_AUXENT(S) (&(S)->sy_symbol.ost_auxent[0]) #define SA_GET_SYM_TAGNDX(s) (SYM_AUXENT (s)->x_sym.x_tagndx.l) @@ -577,7 +571,7 @@ typedef struct #define SA_GET_SCN_NRELOC(s) (SYM_AUXENT (s)->x_scn.x_nreloc) #define SA_GET_SCN_NLINNO(s) (SYM_AUXENT (s)->x_scn.x_nlinno) -/* Modifiers */ +/* Modifiers. */ #define SA_SET_SYM_TAGNDX(s,v) (SYM_AUXENT (s)->x_sym.x_tagndx.l=(v)) #define SA_SET_SYM_LNNO(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_lnno=(v)) #define SA_SET_SYM_SIZE(s,v) (SYM_AUXENT (s)->x_sym.x_misc.x_lnsz.x_size=(v)) @@ -592,15 +586,13 @@ typedef struct #define SA_SET_SCN_NRELOC(s,v) (SYM_AUXENT (s)->x_scn.x_nreloc=(v)) #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. - */ +/* 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. */ #define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */ #define SF_SYSPROC (0x0000003f) /* bits 0-5 are used to store the sysproc number */ @@ -626,7 +618,7 @@ typedef struct #define SF_ADJ_LNNOPTR (0x00400000) /* Has a lnnoptr */ /* All other bits are unused. */ -/* Accessors */ +/* Accessors. */ #define SF_GET(s) ((s)->sy_symbol.ost_flags) #define SF_GET_NORMAL_FIELD(s) (SF_GET (s) & SF_NORMAL_MASK) #define SF_GET_DEBUG_FIELD(s) (SF_GET (s) & SF_DEBUG_MASK) @@ -648,7 +640,7 @@ typedef struct #define SF_GET_IS_SYSPROC(s) (SF_GET (s) & SF_IS_SYSPROC) /* used by i960 */ #define SF_GET_SYSPROC(s) (SF_GET (s) & SF_SYSPROC) /* used by i960 */ -/* Modifiers */ +/* Modifiers. */ #define SF_SET(s,v) (SF_GET (s) = (v)) #define SF_SET_NORMAL_FIELD(s,v) (SF_GET (s) |= ((v) & SF_NORMAL_MASK)) #define SF_SET_DEBUG_FIELD(s,v) (SF_GET (s) |= ((v) & SF_DEBUG_MASK)) @@ -671,12 +663,10 @@ typedef struct #define SF_SET_IS_SYSPROC(s) (SF_GET (s) |= SF_IS_SYSPROC) /* used by i960 */ #define SF_SET_SYSPROC(s,v) (SF_GET (s) |= ((v) & SF_SYSPROC)) /* used by i960 */ -/* File header macro and type definition */ +/* File header macro and type definition. */ -/* - * File position calculators. Beware to use them when all the - * appropriate fields are set in the header. - */ +/* File position calculators. Beware to use them when all the + appropriate fields are set in the header. */ #ifdef OBJ_COFF_OMIT_OPTIONAL_HEADER #define OBJ_COFF_AOUTHDRSZ (0) @@ -714,8 +704,8 @@ typedef struct H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \ H_GET_RELOCATION_SIZE(h) + H_GET_LINENO_SIZE(h)) -/* Accessors */ -/* aouthdr */ +/* Accessors. */ +/* aouthdr. */ #define H_GET_MAGIC_NUMBER(h) ((h)->aouthdr.magic) #define H_GET_VERSION_STAMP(h) ((h)->aouthdr.vstamp) #define H_GET_TEXT_SIZE(h) ((h)->aouthdr.tsize) @@ -724,7 +714,7 @@ typedef struct #define H_GET_ENTRY_POINT(h) ((h)->aouthdr.entry) #define H_GET_TEXT_START(h) ((h)->aouthdr.text_start) #define H_GET_DATA_START(h) ((h)->aouthdr.data_start) -/* filehdr */ +/* filehdr. */ #define H_GET_FILE_MAGIC_NUMBER(h) ((h)->filehdr.f_magic) #define H_GET_NUMBER_OF_SECTIONS(h) ((h)->filehdr.f_nscns) #define H_GET_TIME_STAMP(h) ((h)->filehdr.f_timdat) @@ -733,7 +723,7 @@ typedef struct #define H_GET_SYMBOL_TABLE_SIZE(h) (H_GET_SYMBOL_COUNT(h) * SYMESZ) #define H_GET_SIZEOF_OPTIONAL_HEADER(h) ((h)->filehdr.f_opthdr) #define H_GET_FLAGS(h) ((h)->filehdr.f_flags) -/* Extra fields to achieve bsd a.out compatibility and for convenience */ +/* Extra fields to achieve bsd a.out compatibility and for convenience. */ #define H_GET_RELOCATION_SIZE(h) ((h)->relocation_size) #define H_GET_STRING_SIZE(h) ((h)->string_table_size) #define H_GET_LINENO_SIZE(h) ((h)->lineno_size) @@ -750,8 +740,8 @@ typedef struct #define H_GET_TEXT_RELOCATION_SIZE(h) (text_section_header.s_nreloc * RELSZ) #define H_GET_DATA_RELOCATION_SIZE(h) (data_section_header.s_nreloc * RELSZ) -/* Modifiers */ -/* aouthdr */ +/* Modifiers. */ +/* aouthdr. */ #define H_SET_MAGIC_NUMBER(h,v) ((h)->aouthdr.magic = (v)) #define H_SET_VERSION_STAMP(h,v) ((h)->aouthdr.vstamp = (v)) #define H_SET_TEXT_SIZE(h,v) ((h)->aouthdr.tsize = (v)) @@ -760,7 +750,7 @@ typedef struct #define H_SET_ENTRY_POINT(h,v) ((h)->aouthdr.entry = (v)) #define H_SET_TEXT_START(h,v) ((h)->aouthdr.text_start = (v)) #define H_SET_DATA_START(h,v) ((h)->aouthdr.data_start = (v)) -/* filehdr */ +/* filehdr. */ #define H_SET_FILE_MAGIC_NUMBER(h,v) ((h)->filehdr.f_magic = (v)) #define H_SET_NUMBER_OF_SECTIONS(h,v) ((h)->filehdr.f_nscns = (v)) #define H_SET_TIME_STAMP(h,v) ((h)->filehdr.f_timdat = (v)) @@ -768,30 +758,30 @@ typedef struct #define H_SET_SYMBOL_TABLE_SIZE(h,v) ((h)->filehdr.f_nsyms = (v)) #define H_SET_SIZEOF_OPTIONAL_HEADER(h,v) ((h)->filehdr.f_opthdr = (v)) #define H_SET_FLAGS(h,v) ((h)->filehdr.f_flags = (v)) -/* Extra fields to achieve bsd a.out compatibility and for convinience */ +/* Extra fields to achieve bsd a.out compatibility and for convinience. */ #define H_SET_RELOCATION_SIZE(h,t,d) ((h)->relocation_size = (t)+(d)) #define H_SET_STRING_SIZE(h,v) ((h)->string_table_size = (v)) #define H_SET_LINENO_SIZE(h,v) ((h)->lineno_size = (v)) -/* Segment flipping */ +/* Segment flipping. */ typedef struct { struct internal_aouthdr aouthdr; /* a.out header */ struct internal_filehdr filehdr; /* File header, not machine dep. */ - long string_table_size; /* names + '\0' + sizeof (int) */ - long relocation_size; /* Cumulated size of relocation - information for all sections in - bytes. */ - long lineno_size; /* Size of the line number information - table in bytes */ + long string_table_size; /* names + '\0' + sizeof (int) */ + long relocation_size; /* Cumulated size of relocation + information for all sections in + bytes. */ + long lineno_size; /* Size of the line number information + table in bytes. */ } object_headers; struct lineno_list { struct bfd_internal_lineno line; - char *frag; /* Frag to which the line number is related */ - struct lineno_list *next; /* Forward chain pointer */ + char *frag; /* Frag to which the line number is related. */ + struct lineno_list *next; /* Forward chain pointer. */ }; #define obj_segment_name(i) (segment_info[(int) (i)].scnhdr.s_name) @@ -823,7 +813,7 @@ extern void c_section_header PARAMS ((st void tc_coff_symbol_emit_hook PARAMS ((symbolS *)); #endif -/* sanity check */ +/* Sanity check. */ #ifdef TC_I960 #ifndef C_LEAFSTAT diff -uprN binutils-2.11.92.0.12.3/gas/config/obj-ecoff.c binutils-2.11.93.0.2/gas/config/obj-ecoff.c --- binutils-2.11.92.0.12.3/gas/config/obj-ecoff.c Wed May 2 23:45:35 2001 +++ binutils-2.11.93.0.2/gas/config/obj-ecoff.c Sun Feb 3 11:22:31 2002 @@ -106,7 +106,7 @@ ecoff_frob_file () const struct ecoff_debug_swap * const debug_swap = &ecoff_backend (stdoutput)->debug_swap; bfd_vma addr; - asection *sec; + asection **sec; HDRR *hdr; char *buf; char *set; @@ -143,53 +143,39 @@ ecoff_frob_file () }; #define n_names ((int) (sizeof (names) / sizeof (names[0]))) + /* Sections that match names, order to be straightened out later. */ + asection *secs[n_names]; + int i; + addr = 0; - { - /* Sections that match names, order to be straightened out later. */ - asection *secs[n_names]; - /* Linked list of sections with non-matching names. Random ordering. */ - asection *other_sections = 0; - /* Pointer to next section, since we're destroying the original - ordering. */ - asection *next; - - int i; - - for (i = 0; i < n_names; i++) - secs[i] = 0; - for (sec = stdoutput->sections; sec != (asection *) NULL; sec = next) - { - next = sec->next; - for (i = 0; i < n_names; i++) - if (!strcmp (sec->name, names[i])) - { - secs[i] = sec; - break; - } - if (i == n_names) + for (i = 0; i < n_names; i++) + secs[i] = 0; + + for (sec = &stdoutput->sections; *sec != (asection *) NULL; ) + { + for (i = 0; i < n_names; i++) + if (!strcmp ((*sec)->name, names[i])) { - bfd_set_section_vma (stdoutput, sec, addr); - addr += bfd_section_size (stdoutput, sec); - sec->next = other_sections; - other_sections = sec; + secs[i] = *sec; + bfd_section_list_remove (stdoutput, sec); + break; } - } - for (i = 0; i < n_names; i++) - if (secs[i]) + if (i == n_names) { - sec = secs[i]; - bfd_set_section_vma (stdoutput, sec, addr); - addr += bfd_section_size (stdoutput, sec); + bfd_set_section_vma (stdoutput, *sec, addr); + addr += bfd_section_size (stdoutput, *sec); + sec = &(*sec)->next; } - for (i = n_names - 1; i >= 0; i--) - if (secs[i]) - { - sec = secs[i]; - sec->next = other_sections; - other_sections = sec; - } - stdoutput->sections = other_sections; - } + } + for (i = 0; i < n_names; i++) + if (secs[i]) + { + bfd_set_section_vma (stdoutput, secs[i], addr); + addr += bfd_section_size (stdoutput, secs[i]); + } + for (i = n_names - 1; i >= 0; i--) + if (secs[i]) + bfd_section_list_insert (stdoutput, &stdoutput->sections, secs[i]); /* Build the ECOFF debugging information. */ assert (ecoff_data (stdoutput) != 0); diff -uprN binutils-2.11.92.0.12.3/gas/config/obj-elf.c binutils-2.11.93.0.2/gas/config/obj-elf.c --- binutils-2.11.92.0.12.3/gas/config/obj-elf.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/obj-elf.c Sun Feb 3 11:22:31 2002 @@ -1641,7 +1641,7 @@ obj_elf_init_stab_section (seg) /* Zero it out. */ memset (p, 0, 12); as_where (&file, (unsigned int *) NULL); - stabstr_name = (char *) alloca (strlen (segment_name (seg)) + 4); + stabstr_name = (char *) xmalloc (strlen (segment_name (seg)) + 4); strcpy (stabstr_name, segment_name (seg)); strcat (stabstr_name, "str"); stroff = get_stab_string_offset (file, stabstr_name); @@ -1995,9 +1995,9 @@ elf_frob_file_before_adjust () symbolS *symp; for (symp = symbol_rootP; symp; symp = symbol_next (symp)) - if (symbol_get_obj (symp)->versioned_name) + if (!S_IS_DEFINED (symp)) { - if (!S_IS_DEFINED (symp)) + if (symbol_get_obj (symp)->versioned_name) { char *p; @@ -2017,6 +2017,14 @@ elf_frob_file_before_adjust () && symbol_used_in_reloc_p (symp) == 0) symbol_remove (symp, &symbol_rootP, &symbol_lastP); } + + /* If there was .weak foo, but foo was neither defined nor + used anywhere, remove it. */ + + else if (S_IS_WEAK (symp) + && symbol_used_p (symp) == 0 + && symbol_used_in_reloc_p (symp) == 0) + symbol_remove (symp, &symbol_rootP, &symbol_lastP); } } } diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-alpha.c binutils-2.11.93.0.2/gas/config/tc-alpha.c --- binutils-2.11.92.0.12.3/gas/config/tc-alpha.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-alpha.c Sun Feb 3 11:22:31 2002 @@ -5470,10 +5470,10 @@ void alpha_handle_align (fragp) fragS *fragp; { - static char const unop[4] = { 0x00, 0x00, 0xe0, 0x2f }; + static char const unop[4] = { 0x00, 0x00, 0xfe, 0x2f }; static char const nopunop[8] = { 0x1f, 0x04, 0xff, 0x47, - 0x00, 0x00, 0xe0, 0x2f + 0x00, 0x00, 0xfe, 0x2f }; int bytes, fix; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-arm.c binutils-2.11.93.0.2/gas/config/tc-arm.c --- binutils-2.11.92.0.12.3/gas/config/tc-arm.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-arm.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* tc-arm.c -- Assemble 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) Modified by David Taylor (dtaylor@armltd.co.uk) @@ -39,6 +39,9 @@ #include "dwarf2dbg.h" #endif +/* XXX Set this to 1 after the next binutils release */ +#define WARN_DEPRECATED 0 + /* The following bitmasks control CPU extensions: */ #define ARM_EXT_V1 0x00000001 /* All processors (core set). */ #define ARM_EXT_V2 0x00000002 /* Multiply instructions. */ @@ -51,9 +54,11 @@ #define ARM_EXT_V5T 0x00000100 /* Thumb v2. */ #define ARM_EXT_V5ExP 0x00000200 /* DSP core set. */ #define ARM_EXT_V5E 0x00000400 /* DSP Double transfers. */ -/* Processor specific extensions. */ -#define ARM_EXT_XSCALE 0x00000800 /* Allow MIA etc. */ -#define ARM_EXT_MAVERICK 0x00001000 /* Use Cirrus/DSP coprocessor. */ +#define ARM_EXT_V5J 0x00000800 /* Jazelle extension. */ + +/* Co-processor space extensions. */ +#define ARM_CEXT_XSCALE 0x00800000 /* Allow MIA etc. */ +#define ARM_CEXT_MAVERICK 0x00400000 /* Use Cirrus/DSP coprocessor. */ /* Architectures are the sum of the base and extensions. The ARM ARM (rev E) defines the following: ARMv3, ARMv3M, ARMv4xM, ARMv4, ARMv4TxM, ARMv4T, @@ -75,23 +80,33 @@ #define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_EXT_V4T | ARM_EXT_V5T) #define ARM_ARCH_V5TExP (ARM_ARCH_V5T | ARM_EXT_V5ExP) #define ARM_ARCH_V5TE (ARM_ARCH_V5TExP | ARM_EXT_V5E) +#define ARM_ARCH_V5TEJ (ARM_ARCH_V5TE | ARM_EXT_V5J) + /* Processors with specific extensions in the co-processor space. */ -#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_EXT_XSCALE) +#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_CEXT_XSCALE) /* Some useful combinations: */ -#define ARM_ANY 0x00ffffff -#define ARM_2UP (ARM_ANY - ARM_1) -#define ARM_ALL ARM_ANY - -#define FPU_FPA_EXT_V1 0x80000000 /* Base FPA instruction set. */ -#define FPU_FPA_EXT_V2 0x40000000 /* LFM/SFM. */ -#define FPU_NONE 0 +#define ARM_ANY 0x0000ffff /* Any basic core. */ +#define ARM_ALL 0x00ffffff /* Any core + co-processor */ +#define CPROC_ANY 0x00ff0000 /* Any co-processor */ +#define FPU_ANY 0xff000000 /* Note this is ~ARM_ALL. */ + + +#define FPU_FPA_EXT_V1 0x80000000 /* Base FPA instruction set. */ +#define FPU_FPA_EXT_V2 0x40000000 /* LFM/SFM. */ +#define FPU_VFP_EXT_NONE 0x20000000 /* Use VFP word-ordering. */ +#define FPU_VFP_EXT_V1xD 0x10000000 /* Base VFP instruction set. */ +#define FPU_VFP_EXT_V1 0x08000000 /* Double-precision insns. */ +#define FPU_VFP_EXT_V2 0x04000000 /* ARM10E VFPr1. */ +#define FPU_NONE 0 #define FPU_ARCH_FPE FPU_FPA_EXT_V1 #define FPU_ARCH_FPA (FPU_ARCH_FPE | FPU_FPA_EXT_V2) -/* Some useful combinations. */ -#define FPU_ANY 0xff000000 /* Note this is ~ARM_ANY. */ +#define FPU_ARCH_VFP FPU_VFP_EXT_NONE +#define FPU_ARCH_VFP_V1xD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_NONE) +#define FPU_ARCH_VFP_V1 (FPU_ARCH_VFP_V1xD | FPU_VFP_EXT_V1) +#define FPU_ARCH_VFP_V2 (FPU_ARCH_VFP_V1 | FPU_VFP_EXT_V2) /* Types of processor to assemble for. */ #define ARM_1 ARM_ARCH_V1 @@ -112,11 +127,12 @@ #if defined __thumb__ #define CPU_DEFAULT (ARM_ARCH_V5T) #else -#define CPU_DEFAULT ARM_ALL +#define CPU_DEFAULT ARM_ANY #endif #endif #endif +/* For backwards compatibility we default to the FPA. */ #ifndef FPU_DEFAULT #define FPU_DEFAULT FPU_ARCH_FPA #endif @@ -124,17 +140,27 @@ #define streq(a, b) (strcmp (a, b) == 0) #define skip_whitespace(str) while (*(str) == ' ') ++(str) -static unsigned long cpu_variant = CPU_DEFAULT | FPU_DEFAULT; +static unsigned long cpu_variant; static int target_oabi = 0; -#if defined OBJ_COFF || defined OBJ_ELF /* Flags stored in private area of BFD structure. */ -static boolean uses_apcs_26 = false; -static boolean atpcs = false; -static boolean support_interwork = false; -static boolean uses_apcs_float = false; -static boolean pic_code = false; -#endif +static int uses_apcs_26 = false; +static int atpcs = false; +static int support_interwork = false; +static int uses_apcs_float = false; +static int pic_code = false; + +/* Variables that we set while parsing command-line options. Once all + options have been read we re-process these values to set the real + assembly flags. */ +static int legacy_cpu = -1; +static int legacy_fpu = -1; + +static int mcpu_cpu_opt = -1; +static int mcpu_fpu_opt = -1; +static int march_cpu_opt = -1; +static int march_fpu_opt = -1; +static int mfpu_opt = -1; /* This array holds the chars that always start a comment. If the pre-processor is disabled, these aren't very useful. */ @@ -188,7 +214,6 @@ struct arm_it { const char * error; unsigned long instruction; - int suffix; int size; struct { @@ -266,6 +291,10 @@ LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS] #define FAIL (-1) #define SUCCESS (0) +/* Whether a Co-processor load/store operation accepts write-back forms. */ +#define CP_WB_OK 1 +#define CP_NO_WB 0 + #define SUFF_S 1 #define SUFF_D 2 #define SUFF_E 3 @@ -279,7 +308,6 @@ LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS] #define CONDS_BIT 0x00100000 #define LOAD_BIT 0x00100000 -#define TRANS_BIT 0x00200000 #define DOUBLE_LOAD_FLAG 0x00000001 @@ -289,8 +317,8 @@ struct asm_cond unsigned long value; }; -/* This is to save a hash look-up in the common case. */ #define COND_ALWAYS 0xe0000000 +#define COND_MASK 0xf0000000 static const struct asm_cond conds[] = { @@ -312,137 +340,6 @@ static const struct asm_cond conds[] = {"nv", 0xf0000000} }; -/* Warning: If the top bit of the set_bits is set, then the standard - instruction bitmask is ignored, and the new bitmask is taken from - the set_bits: */ -struct asm_flg -{ - const char * template; /* Basic flag string. */ - unsigned long set_bits; /* Bits to set. */ -}; - -static const struct asm_flg s_flag[] = -{ - {"s", CONDS_BIT}, - {NULL, 0} -}; - -static const struct asm_flg ldr_flags[] = -{ - {"d", DOUBLE_LOAD_FLAG}, - {"b", 0x00400000}, - {"t", TRANS_BIT}, - {"bt", 0x00400000 | TRANS_BIT}, - {"h", 0x801000b0}, - {"sh", 0x801000f0}, - {"sb", 0x801000d0}, - {NULL, 0} -}; - -static const struct asm_flg str_flags[] = -{ - {"d", DOUBLE_LOAD_FLAG}, - {"b", 0x00400000}, - {"t", TRANS_BIT}, - {"bt", 0x00400000 | TRANS_BIT}, - {"h", 0x800000b0}, - {NULL, 0} -}; - -static const struct asm_flg byte_flag[] = -{ - {"b", 0x00400000}, - {NULL, 0} -}; - -static const struct asm_flg cmp_flags[] = -{ - {"s", CONDS_BIT}, - {"p", 0x0010f000}, - {NULL, 0} -}; - -static const struct asm_flg ldm_flags[] = -{ - {"ed", 0x01800000}, - {"fd", 0x00800000}, - {"ea", 0x01000000}, - {"fa", 0x00000000}, - {"ib", 0x01800000}, - {"ia", 0x00800000}, - {"db", 0x01000000}, - {"da", 0x00000000}, - {NULL, 0} -}; - -static const struct asm_flg stm_flags[] = -{ - {"ed", 0x00000000}, - {"fd", 0x01000000}, - {"ea", 0x00800000}, - {"fa", 0x01800000}, - {"ib", 0x01800000}, - {"ia", 0x00800000}, - {"db", 0x01000000}, - {"da", 0x00000000}, - {NULL, 0} -}; - -static const struct asm_flg lfm_flags[] = -{ - {"fd", 0x00800000}, - {"ea", 0x01000000}, - {NULL, 0} -}; - -static const struct asm_flg sfm_flags[] = -{ - {"fd", 0x01000000}, - {"ea", 0x00800000}, - {NULL, 0} -}; - -static const struct asm_flg round_flags[] = -{ - {"p", 0x00000020}, - {"m", 0x00000040}, - {"z", 0x00000060}, - {NULL, 0} -}; - -/* The implementation of the FIX instruction is broken on some assemblers, - in that it accepts a precision specifier as well as a rounding specifier, - despite the fact that this is meaningless. To be more compatible, we - accept it as well, though of course it does not set any bits. */ -static const struct asm_flg fix_flags[] = -{ - {"p", 0x00000020}, - {"m", 0x00000040}, - {"z", 0x00000060}, - {"sp", 0x00000020}, - {"sm", 0x00000040}, - {"sz", 0x00000060}, - {"dp", 0x00000020}, - {"dm", 0x00000040}, - {"dz", 0x00000060}, - {"ep", 0x00000020}, - {"em", 0x00000040}, - {"ez", 0x00000060}, - {NULL, 0} -}; - -static const struct asm_flg except_flag[] = -{ - {"e", 0x00400000}, - {NULL, 0} -}; - -static const struct asm_flg long_flag[] = -{ - {"l", 0x00400000}, - {NULL, 0} -}; - struct asm_psr { const char * template; @@ -602,119 +499,395 @@ static const struct asm_psr psrs[] = {"SPSR_cxsf", false, PSR_c | PSR_x | PSR_s | PSR_f}, }; -enum cirrus_regtype - { - CIRRUS_REGTYPE_MVF = 1, - CIRRUS_REGTYPE_MVFX = 2, - CIRRUS_REGTYPE_MVD = 3, - CIRRUS_REGTYPE_MVDX = 4, - CIRRUS_REGTYPE_MVAX = 5, - CIRRUS_REGTYPE_DSPSC = 6, - CIRRUS_REGTYPE_ANY = 7 - }; +enum vfp_dp_reg_pos +{ + VFP_REG_Dd, VFP_REG_Dm, VFP_REG_Dn +}; + +enum vfp_sp_reg_pos +{ + VFP_REG_Sd, VFP_REG_Sm, VFP_REG_Sn +}; + +enum vfp_ldstm_type +{ + VFP_LDSTMIA, VFP_LDSTMDB, VFP_LDSTMIAX, VFP_LDSTMDBX +}; + +/* VFP system registers. */ +struct vfp_reg +{ + const char *name; + unsigned long regno; +}; + +static const struct vfp_reg vfp_regs[] = +{ + {"fpsid", 0x00000000}, + {"FPSID", 0x00000000}, + {"fpscr", 0x00010000}, + {"FPSCR", 0x00010000}, + {"fpexc", 0x00080000}, + {"FPEXC", 0x00080000} +}; + +/* Structure for a hash table entry for a register. */ +struct reg_entry +{ + const char * name; + int number; +}; + +/* Some well known registers that we refer to directly elsewhere. */ +#define REG_SP 13 +#define REG_LR 14 +#define REG_PC 15 + +/* These are the standard names. Users can add aliases with .req. */ +/* Integer Register Numbers. */ +static const struct reg_entry rn_table[] = +{ + {"r0", 0}, {"r1", 1}, {"r2", 2}, {"r3", 3}, + {"r4", 4}, {"r5", 5}, {"r6", 6}, {"r7", 7}, + {"r8", 8}, {"r9", 9}, {"r10", 10}, {"r11", 11}, + {"r12", 12}, {"r13", REG_SP}, {"r14", REG_LR}, {"r15", REG_PC}, + /* ATPCS Synonyms. */ + {"a1", 0}, {"a2", 1}, {"a3", 2}, {"a4", 3}, + {"v1", 4}, {"v2", 5}, {"v3", 6}, {"v4", 7}, + {"v5", 8}, {"v6", 9}, {"v7", 10}, {"v8", 11}, + /* Well-known aliases. */ + {"wr", 7}, + {"sb", 9}, {"sl", 10}, {"fp", 11}, + {"ip", 12}, {"sp", REG_SP}, {"lr", REG_LR}, {"pc", REG_PC}, + {NULL, 0} +}; + +/* Co-processor Numbers. */ +static const struct reg_entry cp_table[] = +{ + {"p0", 0}, {"p1", 1}, {"p2", 2}, {"p3", 3}, + {"p4", 4}, {"p5", 5}, {"p6", 6}, {"p7", 7}, + {"p8", 8}, {"p9", 9}, {"p10", 10}, {"p11", 11}, + {"p12", 12}, {"p13", 13}, {"p14", 14}, {"p15", 15}, + {NULL, 0} +}; + +/* Co-processor Register Numbers. */ +static const struct reg_entry cn_table[] = +{ + {"c0", 0}, {"c1", 1}, {"c2", 2}, {"c3", 3}, + {"c4", 4}, {"c5", 5}, {"c6", 6}, {"c7", 7}, + {"c8", 8}, {"c9", 9}, {"c10", 10}, {"c11", 11}, + {"c12", 12}, {"c13", 13}, {"c14", 14}, {"c15", 15}, + /* Not really valid, but kept for back-wards compatibility. */ + {"cr0", 0}, {"cr1", 1}, {"cr2", 2}, {"cr3", 3}, + {"cr4", 4}, {"cr5", 5}, {"cr6", 6}, {"cr7", 7}, + {"cr8", 8}, {"cr9", 9}, {"cr10", 10}, {"cr11", 11}, + {"cr12", 12}, {"cr13", 13}, {"cr14", 14}, {"cr15", 15}, + {NULL, 0} +}; + +/* FPA Registers. */ +static const struct reg_entry fn_table[] = +{ + {"f0", 0}, {"f1", 1}, {"f2", 2}, {"f3", 3}, + {"f4", 4}, {"f5", 5}, {"f6", 6}, {"f7", 7}, + {NULL, 0} +}; + +/* VFP SP Registers. */ +static const struct reg_entry sn_table[] = +{ + {"s0", 0}, {"s1", 1}, {"s2", 2}, {"s3", 3}, + {"s4", 4}, {"s5", 5}, {"s6", 6}, {"s7", 7}, + {"s8", 8}, {"s9", 9}, {"s10", 10}, {"s11", 11}, + {"s12", 12}, {"s13", 13}, {"s14", 14}, {"s15", 15}, + {"s16", 16}, {"s17", 17}, {"s18", 18}, {"s19", 19}, + {"s20", 20}, {"s21", 21}, {"s22", 22}, {"s23", 23}, + {"s24", 24}, {"s25", 25}, {"s26", 26}, {"s27", 27}, + {"s28", 28}, {"s29", 29}, {"s30", 30}, {"s31", 31}, + {NULL, 0} +}; + +/* VFP DP Registers. */ +static const struct reg_entry dn_table[] = +{ + {"d0", 0}, {"d1", 1}, {"d2", 2}, {"d3", 3}, + {"d4", 4}, {"d5", 5}, {"d6", 6}, {"d7", 7}, + {"d8", 8}, {"d9", 9}, {"d10", 10}, {"d11", 11}, + {"d12", 12}, {"d13", 13}, {"d14", 14}, {"d15", 15}, + {NULL, 0} +}; + +/* Maverick DSP coprocessor registers. */ +static const struct reg_entry mav_mvf_table[] = +{ + {"mvf0", 0}, {"mvf1", 1}, {"mvf2", 2}, {"mvf3", 3}, + {"mvf4", 4}, {"mvf5", 5}, {"mvf6", 6}, {"mvf7", 7}, + {"mvf8", 8}, {"mvf9", 9}, {"mvf10", 10}, {"mvf11", 11}, + {"mvf12", 12}, {"mvf13", 13}, {"mvf14", 14}, {"mvf15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvd_table[] = +{ + {"mvd0", 0}, {"mvd1", 1}, {"mvd2", 2}, {"mvd3", 3}, + {"mvd4", 4}, {"mvd5", 5}, {"mvd6", 6}, {"mvd7", 7}, + {"mvd8", 8}, {"mvd9", 9}, {"mvd10", 10}, {"mvd11", 11}, + {"mvd12", 12}, {"mvd13", 13}, {"mvd14", 14}, {"mvd15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvfx_table[] = +{ + {"mvfx0", 0}, {"mvfx1", 1}, {"mvfx2", 2}, {"mvfx3", 3}, + {"mvfx4", 4}, {"mvfx5", 5}, {"mvfx6", 6}, {"mvfx7", 7}, + {"mvfx8", 8}, {"mvfx9", 9}, {"mvfx10", 10}, {"mvfx11", 11}, + {"mvfx12", 12}, {"mvfx13", 13}, {"mvfx14", 14}, {"mvfx15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvdx_table[] = +{ + {"mvdx0", 0}, {"mvdx1", 1}, {"mvdx2", 2}, {"mvdx3", 3}, + {"mvdx4", 4}, {"mvdx5", 5}, {"mvdx6", 6}, {"mvdx7", 7}, + {"mvdx8", 8}, {"mvdx9", 9}, {"mvdx10", 10}, {"mvdx11", 11}, + {"mvdx12", 12}, {"mvdx13", 13}, {"mvdx14", 14}, {"mvdx15", 15}, + {NULL, 0} +}; + +static const struct reg_entry mav_mvax_table[] = +{ + {"mvax0", 0}, {"mvax1", 1}, {"mvax2", 2}, {"mvax3", 3}, + {NULL, 0} +}; + +static const struct reg_entry mav_dspsc_table[] = +{ + {"dspsc", 0}, + {NULL, 0} +}; + +struct reg_map +{ + const struct reg_entry *names; + int max_regno; + struct hash_control *htab; + const char *expected; +}; + +struct reg_map all_reg_maps[] = +{ + {rn_table, 15, NULL, N_("ARM register expected")}, + {cp_table, 15, NULL, N_("bad or missing co-processor number")}, + {cn_table, 15, NULL, N_("co-processor register expected")}, + {fn_table, 7, NULL, N_("FPA register expected")}, + {sn_table, 31, NULL, N_("VFP single precision register expected")}, + {dn_table, 15, NULL, N_("VFP double precision register expected")}, + {mav_mvf_table, 15, NULL, N_("Maverick MVF register expected")}, + {mav_mvd_table, 15, NULL, N_("Maverick MVD register expected")}, + {mav_mvfx_table, 15, NULL, N_("Maverick MVFX register expected")}, + {mav_mvdx_table, 15, NULL, N_("Maverick MVFX register expected")}, + {mav_mvax_table, 3, NULL, N_("Maverick MVAX register expected")}, + {mav_dspsc_table, 0, NULL, N_("Maverick DSPSC register expected")}, +}; + +/* Enumeration matching entries in table above. */ +enum arm_reg_type +{ + REG_TYPE_RN = 0, +#define REG_TYPE_FIRST REG_TYPE_RN + REG_TYPE_CP = 1, + REG_TYPE_CN = 2, + REG_TYPE_FN = 3, + REG_TYPE_SN = 4, + REG_TYPE_DN = 5, + REG_TYPE_MVF = 6, + REG_TYPE_MVD = 7, + REG_TYPE_MVFX = 8, + REG_TYPE_MVDX = 9, + REG_TYPE_MVAX = 10, + REG_TYPE_DSPSC = 11, + + REG_TYPE_MAX = 12 +}; /* Functions called by parser. */ /* ARM instructions. */ -static void do_arit PARAMS ((char *, unsigned long)); -static void do_cmp PARAMS ((char *, unsigned long)); -static void do_mov PARAMS ((char *, unsigned long)); -static void do_ldst PARAMS ((char *, unsigned long)); -static void do_ldmstm PARAMS ((char *, unsigned long)); -static void do_branch PARAMS ((char *, unsigned long)); -static void do_swi PARAMS ((char *, unsigned long)); +static void do_arit PARAMS ((char *)); +static void do_cmp PARAMS ((char *)); +static void do_mov PARAMS ((char *)); +static void do_ldst PARAMS ((char *)); +static void do_ldstt PARAMS ((char *)); +static void do_ldmstm PARAMS ((char *)); +static void do_branch PARAMS ((char *)); +static void do_swi PARAMS ((char *)); /* Pseudo Op codes. */ -static void do_adr PARAMS ((char *, unsigned long)); -static void do_nop PARAMS ((char *, unsigned long)); +static void do_adr PARAMS ((char *)); +static void do_adrl PARAMS ((char *)); +static void do_empty PARAMS ((char *)); /* ARM v2. */ -static void do_mul PARAMS ((char *, unsigned long)); -static void do_mla PARAMS ((char *, unsigned long)); +static void do_mul PARAMS ((char *)); +static void do_mla PARAMS ((char *)); /* ARM v2S. */ -static void do_swap PARAMS ((char *, unsigned long)); +static void do_swap PARAMS ((char *)); /* ARM v3. */ -static void do_msr PARAMS ((char *, unsigned long)); -static void do_mrs PARAMS ((char *, unsigned long)); +static void do_msr PARAMS ((char *)); +static void do_mrs PARAMS ((char *)); /* ARM v3M. */ -static void do_mull PARAMS ((char *, unsigned long)); +static void do_mull PARAMS ((char *)); + +/* ARM v4. */ +static void do_ldstv4 PARAMS ((char *)); /* ARM v4T. */ -static void do_bx PARAMS ((char *, unsigned long)); +static void do_bx PARAMS ((char *)); + +/* ARM v5T. */ +static void do_blx PARAMS ((char *)); +static void do_bkpt PARAMS ((char *)); +static void do_clz PARAMS ((char *)); +static void do_lstc2 PARAMS ((char *)); +static void do_cdp2 PARAMS ((char *)); +static void do_co_reg2 PARAMS ((char *)); + +/* ARM v5TExP. */ +static void do_smla PARAMS ((char *)); +static void do_smlal PARAMS ((char *)); +static void do_smul PARAMS ((char *)); +static void do_qadd PARAMS ((char *)); + +/* ARM v5TE. */ +static void do_pld PARAMS ((char *)); +static void do_ldrd PARAMS ((char *)); +static void do_co_reg2c PARAMS ((char *)); -/* ARM_v5. */ -static void do_blx PARAMS ((char *, unsigned long)); -static void do_bkpt PARAMS ((char *, unsigned long)); -static void do_clz PARAMS ((char *, unsigned long)); -static void do_lstc2 PARAMS ((char *, unsigned long)); -static void do_cdp2 PARAMS ((char *, unsigned long)); -static void do_co_reg2 PARAMS ((char *, unsigned long)); - -/* ARM v5ExP. */ -static void do_smla PARAMS ((char *, unsigned long)); -static void do_smlal PARAMS ((char *, unsigned long)); -static void do_smul PARAMS ((char *, unsigned long)); -static void do_qadd PARAMS ((char *, unsigned long)); - -/* ARM v5E. */ -static void do_pld PARAMS ((char *, unsigned long)); -static void do_ldrd PARAMS ((char *, unsigned long)); -static void do_co_reg2c PARAMS ((char *, unsigned long)); +/* ARM v5TEJ. */ +static void do_bxj PARAMS ((char *)); /* Coprocessor Instructions. */ -static void do_cdp PARAMS ((char *, unsigned long)); -static void do_lstc PARAMS ((char *, unsigned long)); -static void do_co_reg PARAMS ((char *, unsigned long)); +static void do_cdp PARAMS ((char *)); +static void do_lstc PARAMS ((char *)); +static void do_co_reg PARAMS ((char *)); /* FPA instructions. */ -static void do_fpa_ctrl PARAMS ((char *, unsigned long)); -static void do_fpa_ldst PARAMS ((char *, unsigned long)); -static void do_fpa_ldmstm PARAMS ((char *, unsigned long)); -static void do_fpa_dyadic PARAMS ((char *, unsigned long)); -static void do_fpa_monadic PARAMS ((char *, unsigned long)); -static void do_fpa_cmp PARAMS ((char *, unsigned long)); -static void do_fpa_from_reg PARAMS ((char *, unsigned long)); -static void do_fpa_to_reg PARAMS ((char *, unsigned long)); +static void do_fpa_ctrl PARAMS ((char *)); +static void do_fpa_ldst PARAMS ((char *)); +static void do_fpa_ldmstm PARAMS ((char *)); +static void do_fpa_dyadic PARAMS ((char *)); +static void do_fpa_monadic PARAMS ((char *)); +static void do_fpa_cmp PARAMS ((char *)); +static void do_fpa_from_reg PARAMS ((char *)); +static void do_fpa_to_reg PARAMS ((char *)); + +/* VFP instructions. */ +static void do_vfp_sp_monadic PARAMS ((char *)); +static void do_vfp_dp_monadic PARAMS ((char *)); +static void do_vfp_sp_dyadic PARAMS ((char *)); +static void do_vfp_dp_dyadic PARAMS ((char *)); +static void do_vfp_reg_from_sp PARAMS ((char *)); +static void do_vfp_sp_from_reg PARAMS ((char *)); +static void do_vfp_sp_reg2 PARAMS ((char *)); +static void do_vfp_reg_from_dp PARAMS ((char *)); +static void do_vfp_reg2_from_dp PARAMS ((char *)); +static void do_vfp_dp_from_reg PARAMS ((char *)); +static void do_vfp_dp_from_reg2 PARAMS ((char *)); +static void do_vfp_reg_from_ctrl PARAMS ((char *)); +static void do_vfp_ctrl_from_reg PARAMS ((char *)); +static void do_vfp_sp_ldst PARAMS ((char *)); +static void do_vfp_dp_ldst PARAMS ((char *)); +static void do_vfp_sp_ldstmia PARAMS ((char *)); +static void do_vfp_sp_ldstmdb PARAMS ((char *)); +static void do_vfp_dp_ldstmia PARAMS ((char *)); +static void do_vfp_dp_ldstmdb PARAMS ((char *)); +static void do_vfp_xp_ldstmia PARAMS ((char *)); +static void do_vfp_xp_ldstmdb PARAMS ((char *)); +static void do_vfp_sp_compare_z PARAMS ((char *)); +static void do_vfp_dp_compare_z PARAMS ((char *)); +static void do_vfp_dp_sp_cvt PARAMS ((char *)); +static void do_vfp_sp_dp_cvt PARAMS ((char *)); /* XScale. */ -static void do_mia PARAMS ((char *, unsigned long)); -static void do_mar PARAMS ((char *, unsigned long)); -static void do_mra PARAMS ((char *, unsigned long)); - -/* ARM_EXT_MAVERICK. */ -static void do_c_binops PARAMS ((char *, unsigned long, int)); -static void do_c_binops_1 PARAMS ((char *, unsigned long)); -static void do_c_binops_2 PARAMS ((char *, unsigned long)); -static void do_c_binops_3 PARAMS ((char *, unsigned long)); -static void do_c_triple PARAMS ((char *, unsigned long, int)); -static void do_c_triple_4 PARAMS ((char *, unsigned long)); -static void do_c_triple_5 PARAMS ((char *, unsigned long)); -static void do_c_quad PARAMS ((char *, unsigned long, int)); -static void do_c_quad_6 PARAMS ((char *, unsigned long)); -static void do_c_dspsc PARAMS ((char *, unsigned long, int)); -static void do_c_dspsc_1 PARAMS ((char *, unsigned long)); -static void do_c_dspsc_2 PARAMS ((char *, unsigned long)); -static void do_c_shift PARAMS ((char *, unsigned long, int)); -static void do_c_shift_1 PARAMS ((char *, unsigned long)); -static void do_c_shift_2 PARAMS ((char *, unsigned long)); -static void do_c_ldst PARAMS ((char *, unsigned long, int)); -static void do_c_ldst_1 PARAMS ((char *, unsigned long)); -static void do_c_ldst_2 PARAMS ((char *, unsigned long)); -static void do_c_ldst_3 PARAMS ((char *, unsigned long)); -static void do_c_ldst_4 PARAMS ((char *, unsigned long)); -static int cirrus_reg_required_here PARAMS ((char **, int, enum cirrus_regtype)); -static int cirrus_valid_reg PARAMS ((int, enum cirrus_regtype)); -static int cirrus_parse_offset PARAMS ((char **, int *)); - -static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, int, int)); -static int arm_reg_parse PARAMS ((char **)); +static void do_xsc_mia PARAMS ((char *)); +static void do_xsc_mar PARAMS ((char *)); +static void do_xsc_mra PARAMS ((char *)); + +/* Maverick. */ +static void do_mav_binops PARAMS ((char *, int, enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_binops_1a PARAMS ((char *)); +static void do_mav_binops_1b PARAMS ((char *)); +static void do_mav_binops_1c PARAMS ((char *)); +static void do_mav_binops_1d PARAMS ((char *)); +static void do_mav_binops_1e PARAMS ((char *)); +static void do_mav_binops_1f PARAMS ((char *)); +static void do_mav_binops_1g PARAMS ((char *)); +static void do_mav_binops_1h PARAMS ((char *)); +static void do_mav_binops_1i PARAMS ((char *)); +static void do_mav_binops_1j PARAMS ((char *)); +static void do_mav_binops_1k PARAMS ((char *)); +static void do_mav_binops_1l PARAMS ((char *)); +static void do_mav_binops_1m PARAMS ((char *)); +static void do_mav_binops_1n PARAMS ((char *)); +static void do_mav_binops_1o PARAMS ((char *)); +static void do_mav_binops_2a PARAMS ((char *)); +static void do_mav_binops_2b PARAMS ((char *)); +static void do_mav_binops_2c PARAMS ((char *)); +static void do_mav_binops_3a PARAMS ((char *)); +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, + enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_triple_4a PARAMS ((char *)); +static void do_mav_triple_4b PARAMS ((char *)); +static void do_mav_triple_5a PARAMS ((char *)); +static void do_mav_triple_5b PARAMS ((char *)); +static void do_mav_triple_5c PARAMS ((char *)); +static void do_mav_triple_5d PARAMS ((char *)); +static void do_mav_triple_5e PARAMS ((char *)); +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, + enum arm_reg_type, + enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_quad_6a PARAMS ((char *)); +static void do_mav_quad_6b PARAMS ((char *)); +static void do_mav_dspsc_1 PARAMS ((char *)); +static void do_mav_dspsc_2 PARAMS ((char *)); +static void do_mav_shift PARAMS ((char *, enum arm_reg_type, + enum arm_reg_type)); +static void do_mav_shift_1 PARAMS ((char *)); +static void do_mav_shift_2 PARAMS ((char *)); +static void do_mav_ldst PARAMS ((char *, enum arm_reg_type)); +static void do_mav_ldst_1 PARAMS ((char *)); +static void do_mav_ldst_2 PARAMS ((char *)); +static void do_mav_ldst_3 PARAMS ((char *)); +static void do_mav_ldst_4 PARAMS ((char *)); + +static int mav_reg_required_here PARAMS ((char **, int, + enum arm_reg_type)); +static int mav_parse_offset PARAMS ((char **, int *)); + +static void fix_new_arm PARAMS ((fragS *, int, short, expressionS *, + int, int)); +static int arm_reg_parse PARAMS ((char **, struct hash_control *)); +static enum arm_reg_type arm_reg_parse_any PARAMS ((char *)); static const struct asm_psr * arm_psr_parse PARAMS ((char **)); -static void symbol_locate PARAMS ((symbolS *, const char *, segT, valueT, fragS *)); +static void symbol_locate PARAMS ((symbolS *, const char *, segT, valueT, + fragS *)); static int add_to_lit_pool PARAMS ((void)); static unsigned validate_immediate PARAMS ((unsigned)); -static unsigned validate_immediate_twopart PARAMS ((unsigned int, unsigned int *)); +static unsigned validate_immediate_twopart PARAMS ((unsigned int, + unsigned int *)); static int validate_offset_imm PARAMS ((unsigned int, int)); static void opcode_select PARAMS ((int)); static void end_of_line PARAMS ((char *)); @@ -724,8 +897,16 @@ static int co_proc_number PARAMS ((char static int cp_opc_expr PARAMS ((char **, int, int)); static int cp_reg_required_here PARAMS ((char **, int)); static int fp_reg_required_here PARAMS ((char **, int)); +static int vfp_sp_reg_required_here PARAMS ((char **, enum vfp_sp_reg_pos)); +static int vfp_dp_reg_required_here PARAMS ((char **, enum vfp_dp_reg_pos)); +static void vfp_sp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); +static void vfp_dp_ldstm PARAMS ((char *, enum vfp_ldstm_type)); +static long vfp_sp_reg_list PARAMS ((char **, enum vfp_sp_reg_pos)); +static long vfp_dp_reg_list PARAMS ((char **)); +static int vfp_psr_required_here PARAMS ((char **str)); +static const struct vfp_reg *vfp_psr_parse PARAMS ((char **str)); static int cp_address_offset PARAMS ((char **)); -static int cp_address_required_here PARAMS ((char **)); +static int cp_address_required_here PARAMS ((char **, int)); static int my_get_float_expression PARAMS ((char **)); static int skip_past_comma PARAMS ((char **)); static int walk_no_bignums PARAMS ((symbolS *)); @@ -735,18 +916,23 @@ static int fp_op2 PARAMS ((char **)); static long reg_list PARAMS ((char **)); static void thumb_load_store PARAMS ((char *, int, int)); static int decode_shift PARAMS ((char **, int)); -static int ldst_extend PARAMS ((char **, int)); +static int ldst_extend PARAMS ((char **)); +static int ldst_extend_v4 PARAMS ((char **)); static void thumb_add_sub PARAMS ((char *, int)); -static void insert_reg PARAMS ((int)); +static void insert_reg PARAMS ((const struct reg_entry *, + struct hash_control *)); static void thumb_shift PARAMS ((char *, int)); static void thumb_mov_compare PARAMS ((char *, int)); +static void build_arm_ops_hsh PARAMS ((void)); static void set_constant_flonums PARAMS ((void)); static valueT md_chars_to_number PARAMS ((char *, int)); -static void insert_reg_alias PARAMS ((char *, int)); -static void output_inst PARAMS ((void)); +static void build_reg_hsh PARAMS ((struct reg_map *)); +static void insert_reg_alias PARAMS ((char *, int, struct hash_control *)); +static int create_register_alias PARAMS ((char *, char *)); +static void output_inst PARAMS ((const char *)); static int accum0_required_here PARAMS ((char **)); static int ld_mode_required_here PARAMS ((char **)); -static void do_branch25 PARAMS ((char *, unsigned long)); +static void do_branch25 PARAMS ((char *)); static symbolS * find_real_start PARAMS ((symbolS *)); #ifdef OBJ_ELF static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void)); @@ -756,28 +942,23 @@ static bfd_reloc_code_real_type arm_pars take 2: */ #define INSN_SIZE 4 -/* LONGEST_INST is the longest basic instruction name without - conditions or flags. ARM7M has 4 of length 5. El Segundo - has one basic instruction name of length 7 (SMLALxy). */ -#define LONGEST_INST 10 - /* "INSN X,Y" where X:bit12, Y:bit16. */ -#define CIRRUS_MODE1 0x100c +#define MAV_MODE1 0x100c /* "INSN X,Y" where X:bit16, Y:bit12. */ -#define CIRRUS_MODE2 0x0c10 +#define MAV_MODE2 0x0c10 /* "INSN X,Y" where X:0, Y:bit16. */ -#define CIRRUS_MODE3 0x1000 +#define MAV_MODE3 0x1000 /* "INSN X,Y,Z" where X:16, Y:0, Z:12. */ -#define CIRRUS_MODE4 0x0c0010 +#define MAV_MODE4 0x0c0010 /* "INSN X,Y,Z" where X:12, Y:16, Z:0. */ -#define CIRRUS_MODE5 0x00100c +#define MAV_MODE5 0x00100c /* "INSN W,X,Y,Z" where W:5, X:12, Y:16, Z:0. */ -#define CIRRUS_MODE6 0x00100c05 +#define MAV_MODE6 0x00100c05 struct asm_opcode { @@ -787,276 +968,843 @@ struct asm_opcode /* Basic instruction code. */ unsigned long value; - /* Compulsory suffix that must follow conds. If "", then the - instruction is not conditional and must have no suffix. */ - const char * comp_suffix; + /* Offset into the template where the condition code (if any) will be. + If zero, then the instruction is never conditional. */ + unsigned cond_offset; - /* Bits to toggle if flag 'n' set. */ - const struct asm_flg * flags; - - /* Which CPU variants this exists for. */ - unsigned long variants; + /* Which architecture variant provides this instruction. */ + unsigned long variant; /* Function to call to parse args. */ - void (* parms) PARAMS ((char *, unsigned long)); + void (* parms) PARAMS ((char *)); }; static const struct asm_opcode insns[] = { - /* XXX Temporary hack. Override the normal load/store entry points. */ - {"ldr", 0x000000d0, NULL, ldr_flags, ARM_EXT_V1, do_ldrd}, - {"str", 0x000000f0, NULL, str_flags, ARM_EXT_V1, do_ldrd}, - /* Core ARM Instructions. */ - {"and", 0x00000000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"eor", 0x00200000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"sub", 0x00400000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"rsb", 0x00600000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"add", 0x00800000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"adc", 0x00a00000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"sbc", 0x00c00000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"rsc", 0x00e00000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"orr", 0x01800000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"bic", 0x01c00000, NULL, s_flag, ARM_EXT_V1, do_arit}, - {"tst", 0x01000000, NULL, cmp_flags, ARM_EXT_V1, do_cmp}, - {"teq", 0x01200000, NULL, cmp_flags, ARM_EXT_V1, do_cmp}, - {"cmp", 0x01400000, NULL, cmp_flags, ARM_EXT_V1, do_cmp}, - {"cmn", 0x01600000, NULL, cmp_flags, ARM_EXT_V1, do_cmp}, - {"mov", 0x01a00000, NULL, s_flag, ARM_EXT_V1, do_mov}, - {"mvn", 0x01e00000, NULL, s_flag, ARM_EXT_V1, do_mov}, - {"str", 0x04000000, NULL, str_flags, ARM_EXT_V1, do_ldst}, - {"ldr", 0x04100000, NULL, ldr_flags, ARM_EXT_V1, do_ldst}, - {"stm", 0x08000000, NULL, stm_flags, ARM_EXT_V1, do_ldmstm}, - {"ldm", 0x08100000, NULL, ldm_flags, ARM_EXT_V1, do_ldmstm}, - {"swi", 0x0f000000, NULL, NULL, ARM_EXT_V1, do_swi}, + {"and", 0xe0000000, 3, ARM_EXT_V1, do_arit}, + {"ands", 0xe0100000, 3, ARM_EXT_V1, do_arit}, + {"eor", 0xe0200000, 3, ARM_EXT_V1, do_arit}, + {"eors", 0xe0300000, 3, ARM_EXT_V1, do_arit}, + {"sub", 0xe0400000, 3, ARM_EXT_V1, do_arit}, + {"subs", 0xe0500000, 3, ARM_EXT_V1, do_arit}, + {"rsb", 0xe0600000, 3, ARM_EXT_V1, do_arit}, + {"rsbs", 0xe0700000, 3, ARM_EXT_V1, do_arit}, + {"add", 0xe0800000, 3, ARM_EXT_V1, do_arit}, + {"adds", 0xe0900000, 3, ARM_EXT_V1, do_arit}, + {"adc", 0xe0a00000, 3, ARM_EXT_V1, do_arit}, + {"adcs", 0xe0b00000, 3, ARM_EXT_V1, do_arit}, + {"sbc", 0xe0c00000, 3, ARM_EXT_V1, do_arit}, + {"sbcs", 0xe0d00000, 3, ARM_EXT_V1, do_arit}, + {"rsc", 0xe0e00000, 3, ARM_EXT_V1, do_arit}, + {"rscs", 0xe0f00000, 3, ARM_EXT_V1, do_arit}, + {"orr", 0xe1800000, 3, ARM_EXT_V1, do_arit}, + {"orrs", 0xe1900000, 3, ARM_EXT_V1, do_arit}, + {"bic", 0xe1c00000, 3, ARM_EXT_V1, do_arit}, + {"bics", 0xe1d00000, 3, ARM_EXT_V1, do_arit}, + + {"tst", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, + {"tsts", 0xe1100000, 3, ARM_EXT_V1, do_cmp}, + {"tstp", 0xe110f000, 3, ARM_EXT_V1, do_cmp}, + {"teq", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, + {"teqs", 0xe1300000, 3, ARM_EXT_V1, do_cmp}, + {"teqp", 0xe130f000, 3, ARM_EXT_V1, do_cmp}, + {"cmp", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, + {"cmps", 0xe1500000, 3, ARM_EXT_V1, do_cmp}, + {"cmpp", 0xe150f000, 3, ARM_EXT_V1, do_cmp}, + {"cmn", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, + {"cmns", 0xe1700000, 3, ARM_EXT_V1, do_cmp}, + {"cmnp", 0xe170f000, 3, ARM_EXT_V1, do_cmp}, + + {"mov", 0xe1a00000, 3, ARM_EXT_V1, do_mov}, + {"movs", 0xe1b00000, 3, ARM_EXT_V1, do_mov}, + {"mvn", 0xe1e00000, 3, ARM_EXT_V1, do_mov}, + {"mvns", 0xe1f00000, 3, ARM_EXT_V1, do_mov}, + + {"ldr", 0xe4100000, 3, ARM_EXT_V1, do_ldst}, + {"ldrb", 0xe4500000, 3, ARM_EXT_V1, do_ldst}, + {"ldrt", 0xe4300000, 3, ARM_EXT_V1, do_ldstt}, + {"ldrbt", 0xe4700000, 3, ARM_EXT_V1, do_ldstt}, + {"str", 0xe4000000, 3, ARM_EXT_V1, do_ldst}, + {"strb", 0xe4400000, 3, ARM_EXT_V1, do_ldst}, + {"strt", 0xe4200000, 3, ARM_EXT_V1, do_ldstt}, + {"strbt", 0xe4600000, 3, ARM_EXT_V1, do_ldstt}, + + {"stmia", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmib", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmda", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmdb", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmfd", 0xe9000000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmfa", 0xe9800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmea", 0xe8800000, 3, ARM_EXT_V1, do_ldmstm}, + {"stmed", 0xe8000000, 3, ARM_EXT_V1, do_ldmstm}, + + {"ldmia", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmib", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmda", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmdb", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmfd", 0xe8900000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmfa", 0xe8100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmea", 0xe9100000, 3, ARM_EXT_V1, do_ldmstm}, + {"ldmed", 0xe9900000, 3, ARM_EXT_V1, do_ldmstm}, + + {"swi", 0xef000000, 3, ARM_EXT_V1, do_swi}, #ifdef TE_WINCE /* XXX This is the wrong place to do this. Think multi-arch. */ - {"bl", 0x0b000000, NULL, NULL, ARM_EXT_V1, do_branch}, - {"b", 0x0a000000, NULL, NULL, ARM_EXT_V1, do_branch}, + {"bl", 0xeb000000, 2, ARM_EXT_V1, do_branch}, + {"b", 0xea000000, 1, ARM_EXT_V1, do_branch}, #else - {"bl", 0x0bfffffe, NULL, NULL, ARM_EXT_V1, do_branch}, - {"b", 0x0afffffe, NULL, NULL, ARM_EXT_V1, do_branch}, + {"bl", 0xebfffffe, 2, ARM_EXT_V1, do_branch}, + {"b", 0xeafffffe, 1, ARM_EXT_V1, do_branch}, #endif /* Pseudo ops. */ - {"adr", 0x028f0000, NULL, long_flag, ARM_EXT_V1, do_adr}, - {"nop", 0x01a00000, NULL, NULL, ARM_EXT_V1, do_nop}, + {"adr", 0xe28f0000, 3, ARM_EXT_V1, do_adr}, + {"adrl", 0xe28f0000, 3, ARM_EXT_V1, do_adrl}, + {"nop", 0xe1a00000, 3, ARM_EXT_V1, do_empty}, /* ARM 2 multiplies. */ - {"mul", 0x00000090, NULL, s_flag, ARM_EXT_V2, do_mul}, - {"mla", 0x00200090, NULL, s_flag, ARM_EXT_V2, do_mla}, + {"mul", 0xe0000090, 3, ARM_EXT_V2, do_mul}, + {"muls", 0xe0100090, 3, ARM_EXT_V2, do_mul}, + {"mla", 0xe0200090, 3, ARM_EXT_V2, do_mla}, + {"mlas", 0xe0300090, 3, ARM_EXT_V2, do_mla}, /* Generic copressor instructions. */ - {"cdp", 0x0e000000, NULL, NULL, ARM_EXT_V2, do_cdp}, - {"ldc", 0x0c100000, NULL, long_flag, ARM_EXT_V2, do_lstc}, - {"stc", 0x0c000000, NULL, long_flag, ARM_EXT_V2, do_lstc}, - {"mcr", 0x0e000010, NULL, NULL, ARM_EXT_V2, do_co_reg}, - {"mrc", 0x0e100010, NULL, NULL, ARM_EXT_V2, do_co_reg}, + {"cdp", 0xee000000, 3, ARM_EXT_V2, do_cdp}, + {"ldc", 0xec100000, 3, ARM_EXT_V2, do_lstc}, + {"ldcl", 0xec500000, 3, ARM_EXT_V2, do_lstc}, + {"stc", 0xec000000, 3, ARM_EXT_V2, do_lstc}, + {"stcl", 0xec400000, 3, ARM_EXT_V2, do_lstc}, + {"mcr", 0xee000010, 3, ARM_EXT_V2, do_co_reg}, + {"mrc", 0xee100010, 3, ARM_EXT_V2, do_co_reg}, /* ARM 3 - swp instructions. */ - {"swp", 0x01000090, NULL, byte_flag, ARM_EXT_V2S, do_swap}, + {"swp", 0xe1000090, 3, ARM_EXT_V2S, do_swap}, + {"swpb", 0xe1400090, 3, ARM_EXT_V2S, do_swap}, /* ARM 6 Status register instructions. */ - {"mrs", 0x010f0000, NULL, NULL, ARM_EXT_V3, do_mrs}, - {"msr", 0x0120f000, NULL, NULL, ARM_EXT_V3, do_msr}, - /* ScottB: our code uses 0x0128f000 for msr. + {"mrs", 0xe10f0000, 3, ARM_EXT_V3, do_mrs}, + {"msr", 0xe120f000, 3, ARM_EXT_V3, do_msr}, + /* ScottB: our code uses 0xe128f000 for msr. NickC: but this is wrong because the bits 16 through 19 are - handled by the PSR_xxx defines above. */ + handled by the PSR_xxx defines above. */ - /* ARM 7M long multiplies - need signed/unsigned flags! */ - {"smull", 0x00c00090, NULL, s_flag, ARM_EXT_V3M, do_mull}, - {"umull", 0x00800090, NULL, s_flag, ARM_EXT_V3M, do_mull}, - {"smlal", 0x00e00090, NULL, s_flag, ARM_EXT_V3M, do_mull}, - {"umlal", 0x00a00090, NULL, s_flag, ARM_EXT_V3M, do_mull}, + /* ARM 7M long multiplies. */ + {"smull", 0xe0c00090, 5, ARM_EXT_V3M, do_mull}, + {"smulls", 0xe0d00090, 5, ARM_EXT_V3M, do_mull}, + {"umull", 0xe0800090, 5, ARM_EXT_V3M, do_mull}, + {"umulls", 0xe0900090, 5, ARM_EXT_V3M, do_mull}, + {"smlal", 0xe0e00090, 5, ARM_EXT_V3M, do_mull}, + {"smlals", 0xe0f00090, 5, ARM_EXT_V3M, do_mull}, + {"umlal", 0xe0a00090, 5, ARM_EXT_V3M, do_mull}, + {"umlals", 0xe0b00090, 5, ARM_EXT_V3M, do_mull}, + + /* ARM Architecture 4. */ + {"ldrh", 0xe01000b0, 3, ARM_EXT_V4, do_ldstv4}, + {"ldrsh", 0xe01000f0, 3, ARM_EXT_V4, do_ldstv4}, + {"ldrsb", 0xe01000d0, 3, ARM_EXT_V4, do_ldstv4}, + {"strh", 0xe00000b0, 3, ARM_EXT_V4, do_ldstv4}, /* ARM Architecture 4T. */ - /* Note: bx (and blx) are required on V5, even if the processor does - not support Thumb. */ - {"bx", 0x012fff10, NULL, NULL, ARM_EXT_V4T | ARM_EXT_V5, do_bx}, - - /* ARM ISA extension 5. */ - /* Note: blx is actually 2 opcodes, so the .value is set dynamically. - And it's sometimes conditional and sometimes not. */ - {"blx", 0, NULL, NULL, ARM_EXT_V5, do_blx}, - {"clz", 0x016f0f10, NULL, NULL, ARM_EXT_V5, do_clz}, - {"bkpt", 0xe1200070, "", NULL, ARM_EXT_V5, do_bkpt}, - {"ldc2", 0xfc100000, "", long_flag, ARM_EXT_V5, do_lstc2}, - {"stc2", 0xfc000000, "", long_flag, ARM_EXT_V5, do_lstc2}, - {"cdp2", 0xfe000000, "", NULL, ARM_EXT_V5, do_cdp2}, - {"mcr2", 0xfe000010, "", NULL, ARM_EXT_V5, do_co_reg2}, - {"mrc2", 0xfe100010, "", NULL, ARM_EXT_V5, do_co_reg2}, - -/* ARM Architecture 5ExP. */ - {"smlabb", 0x01000080, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - {"smlatb", 0x010000a0, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - {"smlabt", 0x010000c0, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - {"smlatt", 0x010000e0, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - - {"smlawb", 0x01200080, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - {"smlawt", 0x012000c0, NULL, NULL, ARM_EXT_V5ExP, do_smla}, - - {"smlalbb",0x01400080, NULL, NULL, ARM_EXT_V5ExP, do_smlal}, - {"smlaltb",0x014000a0, NULL, NULL, ARM_EXT_V5ExP, do_smlal}, - {"smlalbt",0x014000c0, NULL, NULL, ARM_EXT_V5ExP, do_smlal}, - {"smlaltt",0x014000e0, NULL, NULL, ARM_EXT_V5ExP, do_smlal}, - - {"smulbb", 0x01600080, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - {"smultb", 0x016000a0, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - {"smulbt", 0x016000c0, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - {"smultt", 0x016000e0, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - - {"smulwb", 0x012000a0, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - {"smulwt", 0x012000e0, NULL, NULL, ARM_EXT_V5ExP, do_smul}, - - {"qadd", 0x01000050, NULL, NULL, ARM_EXT_V5ExP, do_qadd}, - {"qdadd", 0x01400050, NULL, NULL, ARM_EXT_V5ExP, do_qadd}, - {"qsub", 0x01200050, NULL, NULL, ARM_EXT_V5ExP, do_qadd}, - {"qdsub", 0x01600050, NULL, NULL, ARM_EXT_V5ExP, do_qadd}, - - /* ARM Architecture 5E. */ - {"pld", 0xf450f000, "", NULL, ARM_EXT_V5E, do_pld}, - {"ldr", 0x000000d0, NULL, ldr_flags, ARM_EXT_V5E, do_ldrd}, - {"str", 0x000000f0, NULL, str_flags, ARM_EXT_V5E, do_ldrd}, - {"mcrr", 0x0c400000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c}, - {"mrrc", 0x0c500000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c}, + /* 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}, + + /* ARM Architecture 5T. */ + /* Note: blx has 2 variants, so the .value is set dynamically. + Only one of the variants has conditional execution. */ + {"blx", 0xe0000000, 3, ARM_EXT_V5, do_blx}, + {"clz", 0xe16f0f10, 3, ARM_EXT_V5, do_clz}, + {"bkpt", 0xe1200070, 0, ARM_EXT_V5, do_bkpt}, + {"ldc2", 0xfc100000, 0, ARM_EXT_V5, do_lstc2}, + {"ldc2l", 0xfc500000, 0, ARM_EXT_V5, do_lstc2}, + {"stc2", 0xfc000000, 0, ARM_EXT_V5, do_lstc2}, + {"stc2l", 0xfc400000, 0, ARM_EXT_V5, do_lstc2}, + {"cdp2", 0xfe000000, 0, ARM_EXT_V5, do_cdp2}, + {"mcr2", 0xfe000010, 0, ARM_EXT_V5, do_co_reg2}, + {"mrc2", 0xfe100010, 0, ARM_EXT_V5, do_co_reg2}, + + /* ARM Architecture 5TExP. */ + {"smlabb", 0xe1000080, 6, ARM_EXT_V5ExP, do_smla}, + {"smlatb", 0xe10000a0, 6, ARM_EXT_V5ExP, do_smla}, + {"smlabt", 0xe10000c0, 6, ARM_EXT_V5ExP, do_smla}, + {"smlatt", 0xe10000e0, 6, ARM_EXT_V5ExP, do_smla}, + + {"smlawb", 0xe1200080, 6, ARM_EXT_V5ExP, do_smla}, + {"smlawt", 0xe12000c0, 6, ARM_EXT_V5ExP, do_smla}, + + {"smlalbb", 0xe1400080, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlaltb", 0xe14000a0, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlalbt", 0xe14000c0, 7, ARM_EXT_V5ExP, do_smlal}, + {"smlaltt", 0xe14000e0, 7, ARM_EXT_V5ExP, do_smlal}, + + {"smulbb", 0xe1600080, 6, ARM_EXT_V5ExP, do_smul}, + {"smultb", 0xe16000a0, 6, ARM_EXT_V5ExP, do_smul}, + {"smulbt", 0xe16000c0, 6, ARM_EXT_V5ExP, do_smul}, + {"smultt", 0xe16000e0, 6, ARM_EXT_V5ExP, do_smul}, + + {"smulwb", 0xe12000a0, 6, ARM_EXT_V5ExP, do_smul}, + {"smulwt", 0xe12000e0, 6, ARM_EXT_V5ExP, do_smul}, + + {"qadd", 0xe1000050, 4, ARM_EXT_V5ExP, do_qadd}, + {"qdadd", 0xe1400050, 5, ARM_EXT_V5ExP, do_qadd}, + {"qsub", 0xe1200050, 4, ARM_EXT_V5ExP, do_qadd}, + {"qdsub", 0xe1600050, 5, ARM_EXT_V5ExP, do_qadd}, + + /* ARM Architecture 5TE. */ + {"pld", 0xf450f000, 0, ARM_EXT_V5E, do_pld}, + {"ldrd", 0xe00000d0, 3, ARM_EXT_V5E, do_ldrd}, + {"strd", 0xe00000f0, 3, ARM_EXT_V5E, do_ldrd}, + + {"mcrr", 0xec400000, 4, ARM_EXT_V5E, do_co_reg2c}, + {"mrrc", 0xec500000, 4, ARM_EXT_V5E, do_co_reg2c}, + + /* ARM Architecture 5TEJ. */ + {"bxj", 0xe12fff20, 3, ARM_EXT_V5J, do_bxj}, /* Core FPA instruction set (V1). */ - {"wfs", 0x0e200110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"rfs", 0x0e300110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"wfc", 0x0e400110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"rfc", 0x0e500110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_ctrl}, - {"ldf", 0x0c100100, "sdep", NULL, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"stf", 0x0c000100, "sdep", NULL, FPU_FPA_EXT_V1, do_fpa_ldst}, - {"mvf", 0x0e008100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"mnf", 0x0e108100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"abs", 0x0e208100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"rnd", 0x0e308100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sqt", 0x0e408100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"log", 0x0e508100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"lgn", 0x0e608100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"exp", 0x0e708100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"sin", 0x0e808100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"cos", 0x0e908100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"tan", 0x0ea08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"asn", 0x0eb08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"acs", 0x0ec08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"atn", 0x0ed08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"urd", 0x0ee08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"nrm", 0x0ef08100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_monadic}, - {"adf", 0x0e000100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"suf", 0x0e200100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rsf", 0x0e300100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"muf", 0x0e100100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"dvf", 0x0e400100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rdf", 0x0e500100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"pow", 0x0e600100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rpw", 0x0e700100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"rmf", 0x0e800100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fml", 0x0e900100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"fdv", 0x0ea00100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"frd", 0x0eb00100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"pol", 0x0ec00100, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_dyadic}, - {"cmf", 0x0e90f110, NULL, except_flag, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cnf", 0x0eb0f110, NULL, except_flag, FPU_FPA_EXT_V1, do_fpa_cmp}, - /* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should not - be an optional suffix, but part of the instruction. To be compatible, - we accept either. */ - {"cmfe", 0x0ed0f110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"cnfe", 0x0ef0f110, NULL, NULL, FPU_FPA_EXT_V1, do_fpa_cmp}, - {"flt", 0x0e000110, "sde", round_flags, FPU_FPA_EXT_V1, do_fpa_from_reg}, - {"fix", 0x0e100110, NULL, fix_flags, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"wfs", 0xee200110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"rfs", 0xee300110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"wfc", 0xee400110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + {"rfc", 0xee500110, 3, FPU_FPA_EXT_V1, do_fpa_ctrl}, + + {"ldfs", 0xec100100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfd", 0xec108100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfe", 0xec500100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"ldfp", 0xec508100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + + {"stfs", 0xec000100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfd", 0xec008100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfe", 0xec400100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + {"stfp", 0xec408100, 3, FPU_FPA_EXT_V1, do_fpa_ldst}, + + {"mvfs", 0xee008100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsp", 0xee008120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsm", 0xee008140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfsz", 0xee008160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfd", 0xee008180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdp", 0xee0081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdm", 0xee0081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfdz", 0xee0081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfe", 0xee088100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfep", 0xee088120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfem", 0xee088140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mvfez", 0xee088160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"mnfs", 0xee108100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsp", 0xee108120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsm", 0xee108140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfsz", 0xee108160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfd", 0xee108180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdp", 0xee1081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdm", 0xee1081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfdz", 0xee1081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfe", 0xee188100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfep", 0xee188120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfem", 0xee188140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"mnfez", 0xee188160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"abss", 0xee208100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssp", 0xee208120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssm", 0xee208140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abssz", 0xee208160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absd", 0xee208180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdp", 0xee2081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdm", 0xee2081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absdz", 0xee2081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"abse", 0xee288100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absep", 0xee288120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absem", 0xee288140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"absez", 0xee288160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"rnds", 0xee308100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsp", 0xee308120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsm", 0xee308140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndsz", 0xee308160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndd", 0xee308180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddp", 0xee3081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddm", 0xee3081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnddz", 0xee3081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rnde", 0xee388100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndep", 0xee388120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndem", 0xee388140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"rndez", 0xee388160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"sqts", 0xee408100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsp", 0xee408120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsm", 0xee408140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtsz", 0xee408160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtd", 0xee408180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdp", 0xee4081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdm", 0xee4081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtdz", 0xee4081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqte", 0xee488100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtep", 0xee488120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtem", 0xee488140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sqtez", 0xee488160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"logs", 0xee508100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsp", 0xee508120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsm", 0xee508140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logsz", 0xee508160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logd", 0xee508180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdp", 0xee5081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdm", 0xee5081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logdz", 0xee5081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"loge", 0xee588100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logep", 0xee588120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logem", 0xee588140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"logez", 0xee588160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"lgns", 0xee608100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsp", 0xee608120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsm", 0xee608140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnsz", 0xee608160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnd", 0xee608180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndp", 0xee6081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndm", 0xee6081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgndz", 0xee6081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgne", 0xee688100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnep", 0xee688120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnem", 0xee688140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"lgnez", 0xee688160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"exps", 0xee708100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsp", 0xee708120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsm", 0xee708140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expsz", 0xee708160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expd", 0xee708180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdp", 0xee7081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdm", 0xee7081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdz", 0xee7081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expe", 0xee788100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expep", 0xee788120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expem", 0xee788140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"expdz", 0xee788160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"sins", 0xee808100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsp", 0xee808120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsm", 0xee808140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinsz", 0xee808160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sind", 0xee808180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindp", 0xee8081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindm", 0xee8081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sindz", 0xee8081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sine", 0xee888100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinep", 0xee888120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinem", 0xee888140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"sinez", 0xee888160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"coss", 0xee908100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossp", 0xee908120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossm", 0xee908140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cossz", 0xee908160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosd", 0xee908180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdp", 0xee9081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdm", 0xee9081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosdz", 0xee9081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cose", 0xee988100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosep", 0xee988120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosem", 0xee988140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"cosez", 0xee988160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"tans", 0xeea08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansp", 0xeea08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansm", 0xeea08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tansz", 0xeea08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tand", 0xeea08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandp", 0xeea081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandm", 0xeea081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tandz", 0xeea081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tane", 0xeea88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanep", 0xeea88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanem", 0xeea88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"tanez", 0xeea88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"asns", 0xeeb08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsp", 0xeeb08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsm", 0xeeb08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnsz", 0xeeb08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnd", 0xeeb08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndp", 0xeeb081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndm", 0xeeb081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asndz", 0xeeb081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asne", 0xeeb88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnep", 0xeeb88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnem", 0xeeb88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"asnez", 0xeeb88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"acss", 0xeec08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssp", 0xeec08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssm", 0xeec08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acssz", 0xeec08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsd", 0xeec08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdp", 0xeec081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdm", 0xeec081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsdz", 0xeec081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acse", 0xeec88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsep", 0xeec88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsem", 0xeec88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"acsez", 0xeec88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"atns", 0xeed08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsp", 0xeed08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsm", 0xeed08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnsz", 0xeed08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnd", 0xeed08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndp", 0xeed081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndm", 0xeed081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atndz", 0xeed081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atne", 0xeed88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnep", 0xeed88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnem", 0xeed88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"atnez", 0xeed88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"urds", 0xeee08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsp", 0xeee08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsm", 0xeee08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdsz", 0xeee08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdd", 0xeee08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddp", 0xeee081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddm", 0xeee081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urddz", 0xeee081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urde", 0xeee88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdep", 0xeee88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdem", 0xeee88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"urdez", 0xeee88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"nrms", 0xeef08100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsp", 0xeef08120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsm", 0xeef08140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmsz", 0xeef08160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmd", 0xeef08180, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdp", 0xeef081a0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdm", 0xeef081c0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmdz", 0xeef081e0, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrme", 0xeef88100, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmep", 0xeef88120, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmem", 0xeef88140, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + {"nrmez", 0xeef88160, 3, FPU_FPA_EXT_V1, do_fpa_monadic}, + + {"adfs", 0xee000100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsp", 0xee000120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsm", 0xee000140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfsz", 0xee000160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfd", 0xee000180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdp", 0xee0001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdm", 0xee0001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfdz", 0xee0001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfe", 0xee080100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfep", 0xee080120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfem", 0xee080140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"adfez", 0xee080160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"sufs", 0xee200100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsp", 0xee200120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsm", 0xee200140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufsz", 0xee200160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufd", 0xee200180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdp", 0xee2001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdm", 0xee2001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufdz", 0xee2001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufe", 0xee280100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufep", 0xee280120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufem", 0xee280140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"sufez", 0xee280160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rsfs", 0xee300100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsp", 0xee300120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsm", 0xee300140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfsz", 0xee300160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfd", 0xee300180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdp", 0xee3001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdm", 0xee3001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfdz", 0xee3001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfe", 0xee380100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfep", 0xee380120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfem", 0xee380140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rsfez", 0xee380160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"mufs", 0xee100100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsp", 0xee100120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsm", 0xee100140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufsz", 0xee100160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufd", 0xee100180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdp", 0xee1001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdm", 0xee1001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufdz", 0xee1001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufe", 0xee180100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufep", 0xee180120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufem", 0xee180140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"mufez", 0xee180160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"dvfs", 0xee400100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsp", 0xee400120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsm", 0xee400140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfsz", 0xee400160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfd", 0xee400180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdp", 0xee4001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdm", 0xee4001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfdz", 0xee4001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfe", 0xee480100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfep", 0xee480120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfem", 0xee480140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"dvfez", 0xee480160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rdfs", 0xee500100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsp", 0xee500120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsm", 0xee500140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfsz", 0xee500160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfd", 0xee500180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdp", 0xee5001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdm", 0xee5001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfdz", 0xee5001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfe", 0xee580100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfep", 0xee580120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfem", 0xee580140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rdfez", 0xee580160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"pows", 0xee600100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsp", 0xee600120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsm", 0xee600140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powsz", 0xee600160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powd", 0xee600180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdp", 0xee6001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdm", 0xee6001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powdz", 0xee6001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powe", 0xee680100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powep", 0xee680120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powem", 0xee680140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"powez", 0xee680160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rpws", 0xee700100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsp", 0xee700120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsm", 0xee700140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwsz", 0xee700160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwd", 0xee700180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdp", 0xee7001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdm", 0xee7001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwdz", 0xee7001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwe", 0xee780100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwep", 0xee780120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwem", 0xee780140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rpwez", 0xee780160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"rmfs", 0xee800100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsp", 0xee800120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsm", 0xee800140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfsz", 0xee800160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfd", 0xee800180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdp", 0xee8001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdm", 0xee8001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfdz", 0xee8001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfe", 0xee880100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfep", 0xee880120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfem", 0xee880140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"rmfez", 0xee880160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"fmls", 0xee900100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsp", 0xee900120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsm", 0xee900140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlsz", 0xee900160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmld", 0xee900180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldp", 0xee9001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldm", 0xee9001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmldz", 0xee9001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmle", 0xee980100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlep", 0xee980120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlem", 0xee980140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fmlez", 0xee980160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"fdvs", 0xeea00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsp", 0xeea00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsm", 0xeea00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvsz", 0xeea00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvd", 0xeea00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdp", 0xeea001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdm", 0xeea001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvdz", 0xeea001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdve", 0xeea80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvep", 0xeea80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvem", 0xeea80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"fdvez", 0xeea80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"frds", 0xeeb00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsp", 0xeeb00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsm", 0xeeb00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdsz", 0xeeb00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdd", 0xeeb00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddp", 0xeeb001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddm", 0xeeb001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frddz", 0xeeb001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frde", 0xeeb80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdep", 0xeeb80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdem", 0xeeb80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"frdez", 0xeeb80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"pols", 0xeec00100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsp", 0xeec00120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsm", 0xeec00140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polsz", 0xeec00160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"pold", 0xeec00180, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldp", 0xeec001a0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldm", 0xeec001c0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"poldz", 0xeec001e0, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"pole", 0xeec80100, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polep", 0xeec80120, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polem", 0xeec80140, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + {"polez", 0xeec80160, 3, FPU_FPA_EXT_V1, do_fpa_dyadic}, + + {"cmf", 0xee90f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cmfe", 0xeed0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnf", 0xeeb0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnfe", 0xeef0f110, 3, FPU_FPA_EXT_V1, do_fpa_cmp}, + /* The FPA10 data sheet suggests that the 'E' of cmfe/cnfe should + not be an optional suffix, but part of the instruction. To be + compatible, we accept either. */ + {"cmfe", 0xeed0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, + {"cnfe", 0xeef0f110, 4, FPU_FPA_EXT_V1, do_fpa_cmp}, + + {"flts", 0xee000110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsp", 0xee000130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsm", 0xee000150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltsz", 0xee000170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltd", 0xee000190, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdp", 0xee0001b0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdm", 0xee0001d0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltdz", 0xee0001f0, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"flte", 0xee080110, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltep", 0xee080130, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltem", 0xee080150, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + {"fltez", 0xee080170, 3, FPU_FPA_EXT_V1, do_fpa_from_reg}, + + /* The implementation of the FIX instruction is broken on some + assemblers, in that it accepts a precision specifier as well as a + rounding specifier, despite the fact that this is meaningless. + To be more compatible, we accept it as well, though of course it + does not set any bits. */ + {"fix", 0xee100110, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixsz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdp", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdm", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixdz", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixep", 0xee100130, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixem", 0xee100150, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, + {"fixez", 0xee100170, 3, FPU_FPA_EXT_V1, do_fpa_to_reg}, /* Instructions that were new with the real FPA, call them V2. */ - {"lfm", 0x0c100200, NULL, lfm_flags, FPU_FPA_EXT_V2, do_fpa_ldmstm}, - {"sfm", 0x0c000200, NULL, sfm_flags, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"lfm", 0xec100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"lfmfd", 0xec900200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"lfmea", 0xed100200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfm", 0xec000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfmfd", 0xed000200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + {"sfmea", 0xec800200, 3, FPU_FPA_EXT_V2, do_fpa_ldmstm}, + + /* VFP V1xD (single precision). */ + /* Moves and type conversions. */ + {"fcpys", 0xeeb00a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fmrs", 0xee100a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_sp}, + {"fmsr", 0xee000a10, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_from_reg}, + {"fmstat", 0xeef1fa10, 6, FPU_VFP_EXT_V1xD, do_empty}, + {"fsitos", 0xeeb80ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fuitos", 0xeeb80a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftosis", 0xeebd0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftosizs", 0xeebd0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftouis", 0xeebc0a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"ftouizs", 0xeebc0ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fmrx", 0xeef00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_reg_from_ctrl}, + {"fmxr", 0xeee00a10, 4, FPU_VFP_EXT_V1xD, do_vfp_ctrl_from_reg}, + + /* Memory operations. */ + {"flds", 0xed100a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, + {"fsts", 0xed000a00, 4, FPU_VFP_EXT_V1xD, do_vfp_sp_ldst}, + {"fldmias", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fldmfds", 0xec900a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fldmdbs", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fldmeas", 0xed300a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fldmiax", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fldmfdx", 0xec900b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fldmdbx", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fldmeax", 0xed300b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fstmias", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fstmeas", 0xec800a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmia}, + {"fstmdbs", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fstmfds", 0xed200a00, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_ldstmdb}, + {"fstmiax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fstmeax", 0xec800b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmia}, + {"fstmdbx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + {"fstmfdx", 0xed200b00, 7, FPU_VFP_EXT_V1xD, do_vfp_xp_ldstmdb}, + + /* Monadic operations. */ + {"fabss", 0xeeb00ac0, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fnegs", 0xeeb10a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fsqrts", 0xeeb10ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + + /* Dyadic operations. */ + {"fadds", 0xee300a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fsubs", 0xee300a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmuls", 0xee200a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fdivs", 0xee800a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmacs", 0xee000a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fmscs", 0xee100a00, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmuls", 0xee200a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmacs", 0xee000a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + {"fnmscs", 0xee100a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_dyadic}, + + /* Comparisons. */ + {"fcmps", 0xeeb40a40, 5, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fcmpzs", 0xeeb50a40, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, + {"fcmpes", 0xeeb40ac0, 6, FPU_VFP_EXT_V1xD, do_vfp_sp_monadic}, + {"fcmpezs", 0xeeb50ac0, 7, FPU_VFP_EXT_V1xD, do_vfp_sp_compare_z}, + + /* VFP V1 (Double precision). */ + /* Moves and type conversions. */ + {"fcpyd", 0xeeb00b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcvtds", 0xeeb70ac0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"fcvtsd", 0xeeb70bc0, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"fmdhr", 0xee200b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, + {"fmdlr", 0xee000b10, 5, FPU_VFP_EXT_V1, do_vfp_dp_from_reg}, + {"fmrdh", 0xee300b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, + {"fmrdl", 0xee100b10, 5, FPU_VFP_EXT_V1, do_vfp_reg_from_dp}, + {"fsitod", 0xeeb80bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"fuitod", 0xeeb80b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_sp_cvt}, + {"ftosid", 0xeebd0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftosizd", 0xeebd0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftouid", 0xeebc0b40, 6, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + {"ftouizd", 0xeebc0bc0, 7, FPU_VFP_EXT_V1, do_vfp_sp_dp_cvt}, + + /* Memory operations. */ + {"fldd", 0xed100b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, + {"fstd", 0xed000b00, 4, FPU_VFP_EXT_V1, do_vfp_dp_ldst}, + {"fldmiad", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fldmfdd", 0xec900b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fldmdbd", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fldmead", 0xed300b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fstmiad", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fstmead", 0xec800b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmia}, + {"fstmdbd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + {"fstmfdd", 0xed200b00, 7, FPU_VFP_EXT_V1, do_vfp_dp_ldstmdb}, + + /* Monadic operations. */ + {"fabsd", 0xeeb00bc0, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fnegd", 0xeeb10b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fsqrtd", 0xeeb10bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + + /* Dyadic operations. */ + {"faddd", 0xee300b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fsubd", 0xee300b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmuld", 0xee200b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fdivd", 0xee800b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmacd", 0xee000b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fmscd", 0xee100b00, 5, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmuld", 0xee200b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmacd", 0xee000b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + {"fnmscd", 0xee100b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_dyadic}, + + /* Comparisons. */ + {"fcmpd", 0xeeb40b40, 5, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcmpzd", 0xeeb50b40, 6, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, + {"fcmped", 0xeeb40bc0, 6, FPU_VFP_EXT_V1, do_vfp_dp_monadic}, + {"fcmpezd", 0xeeb50bc0, 7, FPU_VFP_EXT_V1, do_vfp_dp_compare_z}, + + /* VFP V2. */ + {"fmsrr", 0xec400a10, 5, FPU_VFP_EXT_V2, do_vfp_sp_reg2}, + {"fmrrs", 0xec500a10, 5, FPU_VFP_EXT_V2, do_vfp_sp_reg2}, + {"fmdrr", 0xec400b10, 5, FPU_VFP_EXT_V2, do_vfp_dp_from_reg2}, + {"fmrrd", 0xec500b10, 5, FPU_VFP_EXT_V2, do_vfp_reg2_from_dp}, /* Intel XScale extensions to ARM V5 ISA. (All use CP0). */ - {"mia", 0x0e200010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miaph", 0x0e280010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miabb", 0x0e2c0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miabt", 0x0e2d0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miatb", 0x0e2e0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"miatt", 0x0e2f0010, NULL, NULL, ARM_EXT_XSCALE, do_mia}, - {"mar", 0x0c400000, NULL, NULL, ARM_EXT_XSCALE, do_mar}, - {"mra", 0x0c500000, NULL, NULL, ARM_EXT_XSCALE, do_mra}, - - /* Cirrus DSP instructions. */ - {"cfldrs", 0x0c100400, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_1}, - {"cfldrd", 0x0c500400, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_2}, - {"cfldr32", 0x0c100500, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_3}, - {"cfldr64", 0x0c500500, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_4}, - {"cfstrs", 0x0c000400, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_1}, - {"cfstrd", 0x0c400400, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_2}, - {"cfstr32", 0x0c000500, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_3}, - {"cfstr64", 0x0c400500, NULL, NULL, ARM_EXT_MAVERICK, do_c_ldst_4}, - {"cfmvsr", 0x0e000450, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_2}, - {"cfmvrs", 0x0e100450, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfmvdlr", 0x0e000410, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_2}, - {"cfmvrdl", 0x0e100410, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfmvdhr", 0x0e000430, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_2}, - {"cfmvrdh", 0x0e100430, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfmv64lr", 0x0e000510, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_2}, - {"cfmvr64l", 0x0e100510, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfmv64hr", 0x0e000530, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_2}, - {"cfmvr64h", 0x0e100530, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfmval32", 0x0e100610, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmv32al", 0x0e000610, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmvam32", 0x0e100630, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmv32am", 0x0e000630, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmvah32", 0x0e100650, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmv32ah", 0x0e000650, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmv32a", 0x0e000670, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmva32", 0x0e100670, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmv64a", 0x0e000690, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmva64", 0x0e100690, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_3}, - {"cfmvsc32", 0x0e1006b0, NULL, NULL, ARM_EXT_MAVERICK, do_c_dspsc_1}, - {"cfmv32sc", 0x0e0006b0, NULL, NULL, ARM_EXT_MAVERICK, do_c_dspsc_2}, - {"cfcpys", 0x0e000400, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcpyd", 0x0e000420, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvtsd", 0x0e000460, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvtds", 0x0e000440, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvt32s", 0x0e000480, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvt32d", 0x0e0004a0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvt64s", 0x0e0004c0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvt64d", 0x0e0004e0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvts32", 0x0e100580, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfcvtd32", 0x0e1005a0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cftruncs32",0x0e1005c0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cftruncd32",0x0e1005e0, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfrshl32", 0x0e000550, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_4}, - {"cfrshl64", 0x0e000570, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_4}, - {"cfsh32", 0x0e000500, NULL, NULL, ARM_EXT_MAVERICK, do_c_shift_1}, - {"cfsh64", 0x0e200500, NULL, NULL, ARM_EXT_MAVERICK, do_c_shift_2}, - {"cfcmps", 0x0e100490, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfcmpd", 0x0e1004b0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfcmp32", 0x0e100590, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfcmp64", 0x0e1005b0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfabss", 0x0e300400, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfabsd", 0x0e300420, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfnegs", 0x0e300440, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfnegd", 0x0e300460, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfadds", 0x0e300480, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfaddd", 0x0e3004a0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfsubs", 0x0e3004c0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfsubd", 0x0e3004e0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmuls", 0x0e100400, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmuld", 0x0e100420, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfabs32", 0x0e300500, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfabs64", 0x0e300520, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfneg32", 0x0e300540, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfneg64", 0x0e300560, NULL, NULL, ARM_EXT_MAVERICK, do_c_binops_1}, - {"cfadd32", 0x0e300580, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfadd64", 0x0e3005a0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfsub32", 0x0e3005c0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfsub64", 0x0e3005e0, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmul32", 0x0e100500, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmul64", 0x0e100520, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmac32", 0x0e100540, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmsc32", 0x0e100560, NULL, NULL, ARM_EXT_MAVERICK, do_c_triple_5}, - {"cfmadd32", 0x0e000600, NULL, NULL, ARM_EXT_MAVERICK, do_c_quad_6}, - {"cfmsub32", 0x0e100600, NULL, NULL, ARM_EXT_MAVERICK, do_c_quad_6}, - {"cfmadda32", 0x0e200600, NULL, NULL, ARM_EXT_MAVERICK, do_c_quad_6}, - {"cfmsuba32", 0x0e300600, NULL, NULL, ARM_EXT_MAVERICK, do_c_quad_6}, + {"mia", 0xee200010, 3, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miaph", 0xee280010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miabb", 0xee2c0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miabt", 0xee2d0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miatb", 0xee2e0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"miatt", 0xee2f0010, 5, ARM_CEXT_XSCALE, do_xsc_mia}, + {"mar", 0xec400000, 3, ARM_CEXT_XSCALE, do_xsc_mar}, + {"mra", 0xec500000, 3, ARM_CEXT_XSCALE, do_xsc_mra}, + + /* Cirrus Maverick instructions. */ + {"cfldrs", 0xec100400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, + {"cfldrd", 0xec500400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, + {"cfldr32", 0xec100500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, + {"cfldr64", 0xec500500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, + {"cfstrs", 0xec000400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_1}, + {"cfstrd", 0xec400400, 6, ARM_CEXT_MAVERICK, do_mav_ldst_2}, + {"cfstr32", 0xec000500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_3}, + {"cfstr64", 0xec400500, 7, ARM_CEXT_MAVERICK, do_mav_ldst_4}, + {"cfmvsr", 0xee000450, 6, ARM_CEXT_MAVERICK, do_mav_binops_2a}, + {"cfmvrs", 0xee100450, 6, ARM_CEXT_MAVERICK, do_mav_binops_1a}, + {"cfmvdlr", 0xee000410, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, + {"cfmvrdl", 0xee100410, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, + {"cfmvdhr", 0xee000430, 7, ARM_CEXT_MAVERICK, do_mav_binops_2b}, + {"cfmvrdh", 0xee100430, 7, ARM_CEXT_MAVERICK, do_mav_binops_1b}, + {"cfmv64lr", 0xee000510, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, + {"cfmvr64l", 0xee100510, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, + {"cfmv64hr", 0xee000530, 8, ARM_CEXT_MAVERICK, do_mav_binops_2c}, + {"cfmvr64h", 0xee100530, 8, ARM_CEXT_MAVERICK, do_mav_binops_1c}, + {"cfmval32", 0xee100610, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32al", 0xee000610, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmvam32", 0xee100630, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32am", 0xee000630, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmvah32", 0xee100650, 8, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32ah", 0xee000650, 8, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmva32", 0xee100670, 7, ARM_CEXT_MAVERICK, do_mav_binops_3a}, + {"cfmv32a", 0xee000670, 7, ARM_CEXT_MAVERICK, do_mav_binops_3b}, + {"cfmva64", 0xee100690, 7, ARM_CEXT_MAVERICK, do_mav_binops_3c}, + {"cfmv64a", 0xee000690, 7, ARM_CEXT_MAVERICK, do_mav_binops_3d}, + {"cfmvsc32", 0xee1006b0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_1}, + {"cfmv32sc", 0xee0006b0, 8, ARM_CEXT_MAVERICK, do_mav_dspsc_2}, + {"cfcpys", 0xee000400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfcpyd", 0xee000420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfcvtsd", 0xee000460, 7, ARM_CEXT_MAVERICK, do_mav_binops_1f}, + {"cfcvtds", 0xee000440, 7, ARM_CEXT_MAVERICK, do_mav_binops_1g}, + {"cfcvt32s", 0xee000480, 8, ARM_CEXT_MAVERICK, do_mav_binops_1h}, + {"cfcvt32d", 0xee0004a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1i}, + {"cfcvt64s", 0xee0004c0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1j}, + {"cfcvt64d", 0xee0004e0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1k}, + {"cfcvts32", 0xee100580, 8, ARM_CEXT_MAVERICK, do_mav_binops_1l}, + {"cfcvtd32", 0xee1005a0, 8, ARM_CEXT_MAVERICK, do_mav_binops_1m}, + {"cftruncs32", 0xee1005c0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1l}, + {"cftruncd32", 0xee1005e0, 10, ARM_CEXT_MAVERICK, do_mav_binops_1m}, + {"cfrshl32", 0xee000550, 8, ARM_CEXT_MAVERICK, do_mav_triple_4a}, + {"cfrshl64", 0xee000570, 8, ARM_CEXT_MAVERICK, do_mav_triple_4b}, + {"cfsh32", 0xee000500, 6, ARM_CEXT_MAVERICK, do_mav_shift_1}, + {"cfsh64", 0xee200500, 6, ARM_CEXT_MAVERICK, do_mav_shift_2}, + {"cfcmps", 0xee100490, 6, ARM_CEXT_MAVERICK, do_mav_triple_5a}, + {"cfcmpd", 0xee1004b0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5b}, + {"cfcmp32", 0xee100590, 7, ARM_CEXT_MAVERICK, do_mav_triple_5c}, + {"cfcmp64", 0xee1005b0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5d}, + {"cfabss", 0xee300400, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfabsd", 0xee300420, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfnegs", 0xee300440, 6, ARM_CEXT_MAVERICK, do_mav_binops_1d}, + {"cfnegd", 0xee300460, 6, ARM_CEXT_MAVERICK, do_mav_binops_1e}, + {"cfadds", 0xee300480, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfaddd", 0xee3004a0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfsubs", 0xee3004c0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfsubd", 0xee3004e0, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfmuls", 0xee100400, 6, ARM_CEXT_MAVERICK, do_mav_triple_5e}, + {"cfmuld", 0xee100420, 6, ARM_CEXT_MAVERICK, do_mav_triple_5f}, + {"cfabs32", 0xee300500, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, + {"cfabs64", 0xee300520, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, + {"cfneg32", 0xee300540, 7, ARM_CEXT_MAVERICK, do_mav_binops_1n}, + {"cfneg64", 0xee300560, 7, ARM_CEXT_MAVERICK, do_mav_binops_1o}, + {"cfadd32", 0xee300580, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfadd64", 0xee3005a0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfsub32", 0xee3005c0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfsub64", 0xee3005e0, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfmul32", 0xee100500, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmul64", 0xee100520, 7, ARM_CEXT_MAVERICK, do_mav_triple_5h}, + {"cfmac32", 0xee100540, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmsc32", 0xee100560, 7, ARM_CEXT_MAVERICK, do_mav_triple_5g}, + {"cfmadd32", 0xee000600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, + {"cfmsub32", 0xee100600, 8, ARM_CEXT_MAVERICK, do_mav_quad_6a}, + {"cfmadda32", 0xee200600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, + {"cfmsuba32", 0xee300600, 9, ARM_CEXT_MAVERICK, do_mav_quad_6b}, }; /* Defines for various bits that we will want to toggle. */ @@ -1070,8 +1818,9 @@ static const struct asm_opcode insns[] = #define LDM_TYPE_2_OR_3 0x00400000 #define LITERAL_MASK 0xf000f000 -#define COND_MASK 0xf0000000 #define OPCODE_MASK 0xfe1fffff +#define V4_STR_BIT 0x00000020 + #define DATA_OP_SHIFT 21 /* Codes to distinguish the arithmetic instructions. */ @@ -1212,7 +1961,7 @@ struct thumb_opcode int size; /* Which CPU variants this exists for. */ - unsigned long variants; + unsigned long variant; /* Function to call to parse args. */ void (* parms) PARAMS ((char *)); @@ -1284,96 +2033,15 @@ static const struct thumb_opcode tinsns[ {"bkpt", 0xbe00, 2, ARM_EXT_V5T, do_t_bkpt}, }; -struct reg_entry -{ - const char * name; - int number; -}; - -#define int_register(reg) ((reg) >= 0 && (reg) <= 15) -#define cp_register(reg) ((reg) >= 32 && (reg) <= 47) -#define fp_register(reg) ((reg) >= 16 && (reg) <= 23) - -#define ARM_EXT_MAVERICKSC_REG 134 - -#define cirrus_register(reg) ((reg) >= 50 && (reg) <= 134) -#define cirrus_mvf_register(reg) ((reg) >= 50 && (reg) <= 65) -#define cirrus_mvd_register(reg) ((reg) >= 70 && (reg) <= 85) -#define cirrus_mvfx_register(reg) ((reg) >= 90 && (reg) <= 105) -#define cirrus_mvdx_register(reg) ((reg) >= 110 && (reg) <= 125) -#define cirrus_mvax_register(reg) ((reg) >= 130 && (reg) <= 133) -#define ARM_EXT_MAVERICKsc_register(reg) ((reg) == ARM_EXT_MAVERICKSC_REG) - -#define REG_SP 13 -#define REG_LR 14 -#define REG_PC 15 - -/* These are the standard names. Users can add aliases with .req. */ -static const struct reg_entry reg_table[] = -{ - /* Processor Register Numbers. */ - {"r0", 0}, {"r1", 1}, {"r2", 2}, {"r3", 3}, - {"r4", 4}, {"r5", 5}, {"r6", 6}, {"r7", 7}, - {"r8", 8}, {"r9", 9}, {"r10", 10}, {"r11", 11}, - {"r12", 12}, {"r13", REG_SP},{"r14", REG_LR},{"r15", REG_PC}, - /* APCS conventions. */ - {"a1", 0}, {"a2", 1}, {"a3", 2}, {"a4", 3}, - {"v1", 4}, {"v2", 5}, {"v3", 6}, {"v4", 7}, {"v5", 8}, - {"v6", 9}, {"sb", 9}, {"v7", 10}, {"sl", 10}, - {"fp", 11}, {"ip", 12}, {"sp", REG_SP},{"lr", REG_LR},{"pc", REG_PC}, - /* ATPCS additions to APCS conventions. */ - {"wr", 7}, {"v8", 11}, - /* FP Registers. */ - {"f0", 16}, {"f1", 17}, {"f2", 18}, {"f3", 19}, - {"f4", 20}, {"f5", 21}, {"f6", 22}, {"f7", 23}, - {"c0", 32}, {"c1", 33}, {"c2", 34}, {"c3", 35}, - {"c4", 36}, {"c5", 37}, {"c6", 38}, {"c7", 39}, - {"c8", 40}, {"c9", 41}, {"c10", 42}, {"c11", 43}, - {"c12", 44}, {"c13", 45}, {"c14", 46}, {"c15", 47}, - {"cr0", 32}, {"cr1", 33}, {"cr2", 34}, {"cr3", 35}, - {"cr4", 36}, {"cr5", 37}, {"cr6", 38}, {"cr7", 39}, - {"cr8", 40}, {"cr9", 41}, {"cr10", 42}, {"cr11", 43}, - {"cr12", 44}, {"cr13", 45}, {"cr14", 46}, {"cr15", 47}, - /* ATPCS additions to float register names. */ - {"s0",16}, {"s1",17}, {"s2",18}, {"s3",19}, - {"s4",20}, {"s5",21}, {"s6",22}, {"s7",23}, - {"d0",16}, {"d1",17}, {"d2",18}, {"d3",19}, - {"d4",20}, {"d5",21}, {"d6",22}, {"d7",23}, - /* Cirrus DSP coprocessor registers. */ - {"mvf0", 50}, {"mvf1", 51}, {"mvf2", 52}, {"mvf3", 53}, - {"mvf4", 54}, {"mvf5", 55}, {"mvf6", 56}, {"mvf7", 57}, - {"mvf8", 58}, {"mvf9", 59}, {"mvf10", 60}, {"mvf11", 61}, - {"mvf12", 62},{"mvf13", 63}, {"mvf14", 64}, {"mvf15", 65}, - {"mvd0", 70}, {"mvd1", 71}, {"mvd2", 72}, {"mvd3", 73}, - {"mvd4", 74}, {"mvd5", 75}, {"mvd6", 76}, {"mvd7", 77}, - {"mvd8", 78}, {"mvd9", 79}, {"mvd10", 80}, {"mvd11", 81}, - {"mvd12", 82},{"mvd13", 83}, {"mvd14", 84}, {"mvd15", 85}, - {"mvfx0", 90},{"mvfx1", 91}, {"mvfx2", 92}, {"mvfx3", 93}, - {"mvfx4", 94},{"mvfx5", 95}, {"mvfx6", 96}, {"mvfx7", 97}, - {"mvfx8", 98},{"mvfx9", 99}, {"mvfx10", 100},{"mvfx11", 101}, - {"mvfx12", 102},{"mvfx13", 103},{"mvfx14", 104},{"mvfx15", 105}, - {"mvdx0", 110}, {"mvdx1", 111}, {"mvdx2", 112}, {"mvdx3", 113}, - {"mvdx4", 114}, {"mvdx5", 115}, {"mvdx6", 116}, {"mvdx7", 117}, - {"mvdx8", 118}, {"mvdx9", 119}, {"mvdx10", 120},{"mvdx11", 121}, - {"mvdx12", 122},{"mvdx13", 123},{"mvdx14", 124},{"mvdx15", 125}, - {"mvax0", 130}, {"mvax1", 131}, {"mvax2", 132}, {"mvax3", 133}, - {"dspsc", ARM_EXT_MAVERICKSC_REG}, - /* FIXME: At some point we need to add VFP register names. */ - /* Array terminator. */ - {NULL, 0} -}; - -#define BAD_ARGS _("Bad arguments to instruction") +#define BAD_ARGS _("bad arguments to instruction") #define BAD_PC _("r15 not allowed here") -#define BAD_FLAGS _("Instruction should not have flags") -#define BAD_COND _("Instruction is not conditional") +#define BAD_COND _("instruction is not conditional") #define ERR_NO_ACCUM _("acc0 expected") static struct hash_control * arm_ops_hsh = NULL; static struct hash_control * arm_tops_hsh = NULL; static struct hash_control * arm_cond_hsh = NULL; static struct hash_control * arm_shift_hsh = NULL; -static struct hash_control * arm_reg_hsh = NULL; static struct hash_control * arm_psr_hsh = NULL; /* This table describes all the machine specific pseudo-ops the assembler @@ -1438,6 +2106,12 @@ const pseudo_typeS md_pseudo_table[] = { 0, 0, 0 } }; +/* Other internal functions. */ +static int arm_parse_extension PARAMS ((char *, int *)); +static int arm_parse_cpu PARAMS ((char *)); +static int arm_parse_arch PARAMS ((char *)); +static int arm_parse_fpu PARAMS ((char *)); + /* Stuff needed to resolve the label ambiguity As: ... @@ -1507,7 +2181,7 @@ add_to_lit_pool () { if (next_literal_pool_place >= MAX_LITERAL_POOL_SIZE) { - inst.error = _("Literal Pool Overflow"); + inst.error = _("literal pool overflow"); return FAIL; } @@ -1649,7 +2323,7 @@ static void s_req (a) int a ATTRIBUTE_UNUSED; { - as_bad (_("Invalid syntax for .req directive.")); + as_bad (_("invalid syntax for .req directive")); } static void @@ -1724,10 +2398,10 @@ s_align (unused) temp = get_absolute_expression (); if (temp > max_alignment) - as_bad (_("Alignment too large: %d. assumed."), temp = max_alignment); + as_bad (_("alignment too large: %d assumed"), temp = max_alignment); else if (temp < 0) { - as_bad (_("Alignment negative. 0 assumed.")); + as_bad (_("alignment negative. 0 assumed.")); temp = 0; } @@ -1811,7 +2485,7 @@ s_thumb_set (equiv) if (*input_line_pointer != ',') { *end_name = 0; - as_bad (_("Expected comma after name \"%s\""), name); + as_bad (_("expected comma after name \"%s\""), name); *end_name = delim; ignore_rest_of_line (); return; @@ -1944,7 +2618,7 @@ opcode_select (width) case 32: if (thumb_mode) { - if ((cpu_variant & ARM_ANY) == ARM_EXT_V4T) + if ((cpu_variant & ARM_ALL) == ARM_EXT_V4T) as_bad (_("selected processor does not support ARM opcodes")); thumb_mode = 0; @@ -1998,12 +2672,12 @@ s_code (unused) static void end_of_line (str) - char * str; + char *str; { skip_whitespace (str); - if (* str != '\0') - inst.error = _("Garbage following instruction"); + if (*str != '\0' && !inst.error) + inst.error = _("garbage following instruction"); } static int @@ -2041,7 +2715,7 @@ reg_required_here (str, shift) int reg; char * start = * str; - if ((reg = arm_reg_parse (str)) != FAIL && int_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_RN].htab)) != FAIL) { if (shift >= 0) inst.instruction |= reg << shift; @@ -2053,7 +2727,7 @@ reg_required_here (str, shift) /* In the few cases where we might be able to accept something else this error can be overridden. */ - sprintf (buff, _("Register expected, not '%.100s'"), start); + sprintf (buff, _("register expected, not '%.100s'"), start); inst.error = buff; return FAIL; @@ -2134,36 +2808,41 @@ psr_required_here (str) static int co_proc_number (str) - char ** str; + char **str; { int processor, pchar; + char *start; - skip_whitespace (* str); + skip_whitespace (*str); + start = *str; /* The data sheet seems to imply that just a number on its own is valid here, but the RISC iX assembler seems to accept a prefix 'p'. We will accept either. */ - if (**str == 'p' || **str == 'P') - (*str)++; - - pchar = *(*str)++; - if (pchar >= '0' && pchar <= '9') + if ((processor = arm_reg_parse (str, all_reg_maps[REG_TYPE_CP].htab)) + == FAIL) { - processor = pchar - '0'; - if (**str >= '0' && **str <= '9') + *str = start; + + pchar = *(*str)++; + if (pchar >= '0' && pchar <= '9') { - processor = processor * 10 + *(*str)++ - '0'; - if (processor > 15) + processor = pchar - '0'; + if (**str >= '0' && **str <= '9') { - inst.error = _("Illegal co-processor number"); - return FAIL; + processor = processor * 10 + *(*str)++ - '0'; + if (processor > 15) + { + inst.error = _("illegal co-processor number"); + return FAIL; + } } } - } - else - { - inst.error = _("Bad or missing co-processor number"); - return FAIL; + else + { + inst.error = _("bad or missing co-processor number"); + return FAIL; + } } inst.instruction |= processor << 8; @@ -2208,16 +2887,15 @@ cp_reg_required_here (str, where) int reg; char * start = *str; - if ((reg = arm_reg_parse (str)) != FAIL && cp_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_CN].htab)) != FAIL) { - reg &= 15; inst.instruction |= reg << where; return reg; } /* In the few cases where we might be able to accept something else this error can be overridden. */ - inst.error = _("Co-processor register expected"); + inst.error = _("co-processor register expected"); /* Restore the start point. */ *str = start; @@ -2232,16 +2910,15 @@ fp_reg_required_here (str, where) int reg; char * start = * str; - if ((reg = arm_reg_parse (str)) != FAIL && fp_register (reg)) + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_FN].htab)) != FAIL) { - reg &= 7; inst.instruction |= reg << where; return reg; } /* In the few cases where we might be able to accept something else this error can be overridden. */ - inst.error = _("Floating point register expected"); + inst.error = _("floating point register expected"); /* Restore the start point. */ *str = start; @@ -2297,8 +2974,9 @@ cp_address_offset (str) } static int -cp_address_required_here (str) +cp_address_required_here (str, wb_ok) char ** str; + int wb_ok; { char * p = * str; int pre_inc = 0; @@ -2320,7 +2998,7 @@ cp_address_required_here (str) { p++; - if (skip_past_comma (& p) == SUCCESS) + if (wb_ok && skip_past_comma (& p) == SUCCESS) { /* [Rn], #expr */ write_back = WRITE_BACK; @@ -2362,7 +3040,7 @@ cp_address_required_here (str) skip_whitespace (p); - if (*p == '!') + if (wb_ok && *p == '!') { if (reg == REG_PC) { @@ -2393,20 +3071,17 @@ cp_address_required_here (str) } static void -do_nop (str, flags) +do_empty (str) char * str; - unsigned long flags; { /* Do nothing really. */ - inst.instruction |= flags; /* This is pointless. */ end_of_line (str); return; } static void -do_mrs (str, flags) +do_mrs (str) char *str; - unsigned long flags; { int skip = 0; @@ -2440,7 +3115,7 @@ do_mrs (str, flags) skip = 8; else { - inst.error = _("{C|S}PSR expected"); + inst.error = _("CPSR or SPSR expected"); return; } @@ -2448,7 +3123,6 @@ do_mrs (str, flags) inst.instruction |= SPSR_BIT; str += skip; - inst.instruction |= flags; end_of_line (str); } @@ -2457,9 +3131,8 @@ do_mrs (str, flags) "{C|S}PSR_f, #expression". */ static void -do_msr (str, flags) +do_msr (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -2477,7 +3150,6 @@ do_msr (str, flags) if (reg_required_here (& str, 0) != FAIL) { inst.error = NULL; - inst.instruction |= flags; end_of_line (str); return; } @@ -2511,7 +3183,7 @@ do_msr (str, flags) } #endif - flags |= INST_IMMEDIATE; + inst.instruction |= INST_IMMEDIATE; if (inst.reloc.exp.X_add_symbol) { @@ -2524,7 +3196,7 @@ do_msr (str, flags) if (value == (unsigned) FAIL) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return; } @@ -2532,7 +3204,6 @@ do_msr (str, flags) } inst.error = NULL; - inst.instruction |= flags; end_of_line (str); } @@ -2543,9 +3214,8 @@ do_msr (str, flags) SMLAL RdLo, RdHi, Rm, Rs. */ static void -do_mull (str, flags) +do_mull (str) char * str; - unsigned long flags; { int rdlo, rdhi, rm, rs; @@ -2589,15 +3259,13 @@ do_mull (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_mul (str, flags) +do_mul (str) char * str; - unsigned long flags; { int rd, rm; @@ -2645,15 +3313,13 @@ do_mul (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_mla (str, flags) +do_mla (str) char * str; - unsigned long flags; { int rd, rm; @@ -2703,7 +3369,6 @@ do_mla (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } @@ -2780,7 +3445,7 @@ ld_mode_required_here (string) if (skip_past_comma (& str) == SUCCESS) { /* [Rn],... (post inc) */ - if (ldst_extend (& str, 1) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return FAIL; } else /* [Rn] */ @@ -2807,7 +3472,7 @@ ld_mode_required_here (string) pre_inc = 1; - if (ldst_extend (& str, 1) == FAIL) + if (ldst_extend_v4 (&str) == FAIL) return FAIL; skip_whitespace (str); @@ -2858,9 +3523,8 @@ ld_mode_required_here (string) Error if any register is R15. */ static void -do_smla (str, flags) +do_smla (str) char * str; - unsigned long flags; { int rd, rm, rs, rn; @@ -2878,9 +3542,6 @@ do_smla (str, flags) else if (rd == REG_PC || rm == REG_PC || rs == REG_PC || rn == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2891,9 +3552,8 @@ do_smla (str, flags) Warning if Rdlo == Rdhi. */ static void -do_smlal (str, flags) +do_smlal (str) char * str; - unsigned long flags; { int rdlo, rdhi, rm, rs; @@ -2920,10 +3580,7 @@ do_smlal (str, flags) if (rdlo == rdhi) as_tsktsk (_("rdhi and rdlo must be different")); - if (flags) - inst.error = BAD_FLAGS; - else - end_of_line (str); + end_of_line (str); } /* ARM V5E (El Segundo) signed-multiply (argument parse) @@ -2931,9 +3588,8 @@ do_smlal (str, flags) Error if any register is R15. */ static void -do_smul (str, flags) +do_smul (str) char * str; - unsigned long flags; { int rd, rm, rs; @@ -2949,9 +3605,6 @@ do_smul (str, flags) else if (rd == REG_PC || rm == REG_PC || rs == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2961,9 +3614,8 @@ do_smul (str, flags) Error if any register is R15. */ static void -do_qadd (str, flags) +do_qadd (str) char * str; - unsigned long flags; { int rd, rm, rn; @@ -2979,9 +3631,6 @@ do_qadd (str, flags) else if (rd == REG_PC || rm == REG_PC || rn == REG_PC) inst.error = BAD_PC; - else if (flags) - inst.error = BAD_FLAGS; - else end_of_line (str); } @@ -2996,9 +3645,8 @@ do_qadd (str, flags) Result unpredicatable if Rd or Rn is R15. */ static void -do_co_reg2c (str, flags) +do_co_reg2c (str) char * str; - unsigned long flags; { int rd, rn; @@ -3038,7 +3686,7 @@ do_co_reg2c (str, flags) /* Unpredictable result if rd or rn is R15. */ if (rd == REG_PC || rn == REG_PC) as_tsktsk - (_("Warning: Instruction unpredictable when using r15")); + (_("Warning: instruction unpredictable when using r15")); if (skip_past_comma (& str) == FAIL || cp_reg_required_here (& str, 0) == FAIL) @@ -3048,9 +3696,6 @@ do_co_reg2c (str, flags) return; } - if (flags) - inst.error = BAD_COND; - end_of_line (str); } @@ -3060,18 +3705,11 @@ do_co_reg2c (str, flags) Error if Rd or Rm are R15. */ static void -do_clz (str, flags) +do_clz (str) char * str; - unsigned long flags; { int rd, rm; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if (((rd = reg_required_here (& str, 12)) == FAIL) @@ -3093,13 +3731,9 @@ do_clz (str, flags) Otherwise, it's the same as LDC/STC. */ static void -do_lstc2 (str, flags) +do_lstc2 (str) char * str; - unsigned long flags; { - if (flags) - inst.error = BAD_COND; - skip_whitespace (str); if (co_proc_number (& str) == FAIL) @@ -3114,7 +3748,7 @@ do_lstc2 (str, flags) inst.error = BAD_ARGS; } else if (skip_past_comma (& str) == FAIL - || cp_address_required_here (& str) == FAIL) + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; @@ -3129,9 +3763,8 @@ do_lstc2 (str, flags) Otherwise, it's the same as CDP. */ static void -do_cdp2 (str, flags) +do_cdp2 (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -3184,9 +3817,6 @@ do_cdp2 (str, flags) } } - if (flags) - inst.error = BAD_FLAGS; - end_of_line (str); } @@ -3197,9 +3827,8 @@ do_cdp2 (str, flags) Otherwise, it's the same as MCR/MRC. */ static void -do_co_reg2 (str, flags) +do_co_reg2 (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -3252,8 +3881,27 @@ do_co_reg2 (str, flags) } } - if (flags) - inst.error = BAD_COND; + end_of_line (str); +} + +/* ARM v5TEJ. Jump to Jazelle code. */ +static void +do_bxj (str) + char * str; +{ + int reg; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 0)) == FAIL) + { + inst.error = BAD_ARGS; + return; + } + + /* Note - it is not illegal to do a "bxj pc". Useless, but not illegal. */ + if (reg == REG_PC) + as_tsktsk (_("use of r15 in bxj is not really useful")); end_of_line (str); } @@ -3301,9 +3949,8 @@ do_t_bkpt (str) new one that can cope with setting one extra bit (the H bit). */ static void -do_branch25 (str, flags) +do_branch25 (str) char * str; - unsigned long flags ATTRIBUTE_UNUSED; { if (my_get_expression (& inst.reloc.exp, & str)) return; @@ -3356,19 +4003,12 @@ do_branch25 (str, flags) Also, the can be 25 bits, hence has its own reloc. */ static void -do_blx (str, flags) +do_blx (str) char * str; - unsigned long flags; { char * mystr = str; int rm; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (mystr); rm = reg_required_here (& mystr, 0); @@ -3381,7 +4021,7 @@ do_blx (str, flags) Use the condition code our caller put in inst.instruction. Pass ourselves off as a BX with a funny opcode. */ inst.instruction |= 0x012fff30; - do_bx (str, flags); + do_bx (str); } else { @@ -3396,7 +4036,7 @@ do_blx (str, flags) /* Process like a B/BL, but with a different reloc. Note that B/BL expecte fffffe, not 0, offset in the opcode table. */ - do_branch25 (str, flags); + do_branch25 (str); } } @@ -3448,13 +4088,11 @@ 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. - Note "flags" is nonzero if a flag was supplied (which is an error). */ + and it is an error if the caller tried to override that. */ static void -do_bkpt (str, flags) +do_bkpt (str) char * str; - unsigned long flags; { expressionS expr; unsigned long number; @@ -3489,9 +4127,6 @@ do_bkpt (str, flags) inst.instruction |= number & 0xf; end_of_line (str); - - if (flags) - inst.error = BAD_FLAGS; } /* Xscale multiply-accumulate (argument parse) @@ -3500,17 +4135,13 @@ do_bkpt (str, flags) MIAxycc acc0,Rm,Rs. */ static void -do_mia (str, flags) +do_xsc_mia (str) char * str; - unsigned long flags; { int rs; int rm; - if (flags) - as_bad (BAD_FLAGS); - - else if (accum0_required_here (& str) == FAIL) + if (accum0_required_here (& str) == FAIL) inst.error = ERR_NO_ACCUM; else if (skip_past_comma (& str) == FAIL @@ -3534,16 +4165,12 @@ do_mia (str, flags) MARcc acc0,RdLo,RdHi. */ static void -do_mar (str, flags) +do_xsc_mar (str) char * str; - unsigned long flags; { int rdlo, rdhi; - if (flags) - as_bad (BAD_FLAGS); - - else if (accum0_required_here (& str) == FAIL) + if (accum0_required_here (& str) == FAIL) inst.error = ERR_NO_ACCUM; else if (skip_past_comma (& str) == FAIL @@ -3567,19 +4194,12 @@ do_mar (str, flags) MRAcc RdLo,RdHi,acc0. */ static void -do_mra (str, flags) +do_xsc_mra (str) char * str; - unsigned long flags; { int rdlo; int rdhi; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if ((rdlo = reg_required_here (& str, 12)) == FAIL) @@ -3610,18 +4230,11 @@ do_mra (str, flags) Syntactically, like LDR with B=1, W=0, L=1. */ static void -do_pld (str, flags) +do_pld (str) char * str; - unsigned long flags; { int rd; - if (flags) - { - as_bad (BAD_FLAGS); - return; - } - skip_whitespace (str); if (* str != '[') @@ -3630,7 +4243,7 @@ do_pld (str, flags) return; } - ++ str; + ++str; skip_whitespace (str); if ((rd = reg_required_here (& str, 16)) == FAIL) @@ -3638,21 +4251,23 @@ do_pld (str, flags) skip_whitespace (str); - if (* str == ']') + if (*str == ']') { /* [Rn], ... ? */ - ++ str; + ++str; skip_whitespace (str); - if (skip_past_comma (& str) == SUCCESS) + /* Post-indexed addressing is not allowed with PLD. */ + if (skip_past_comma (&str) == SUCCESS) { - if (ldst_extend (& str, 0) == FAIL) - return; + inst.error + = _("post-indexed expression used in preload instruction"); + return; } - else if (* str == '!') /* [Rn]! */ + else if (*str == '!') /* [Rn]! */ { inst.error = _("writeback used in preload instruction"); - ++ str; + ++str; } else /* [Rn] */ inst.instruction |= INDEX_UP | PRE_INDEX; @@ -3665,7 +4280,7 @@ do_pld (str, flags) return; } - if (ldst_extend (& str, 0) == FAIL) + if (ldst_extend (&str) == FAIL) return; skip_whitespace (str); @@ -3698,52 +4313,22 @@ do_pld (str, flags) STRccD R, mode. */ static void -do_ldrd (str, flags) +do_ldrd (str) char * str; - unsigned long flags; { int rd; int rn; - if (flags != DOUBLE_LOAD_FLAG) - { - /* Change instruction pattern to normal ldr/str. */ - if (inst.instruction & 0x20) - inst.instruction = (inst.instruction & COND_MASK) | 0x04000000; /* str */ - else - inst.instruction = (inst.instruction & COND_MASK) | 0x04100000; /* ldr */ - - /* Perform a normal load/store instruction parse. */ - do_ldst (str, flags); + skip_whitespace (str); + if ((rd = reg_required_here (& str, 12)) == FAIL) + { + inst.error = BAD_ARGS; return; } - if ((cpu_variant & ARM_EXT_XSCALE) != ARM_EXT_XSCALE) - { - static char buff[128]; - - --str; - while (ISSPACE (*str)) - --str; - str -= 4; - - /* Deny all knowledge. */ - sprintf (buff, _("bad instruction '%.100s'"), str); - inst.error = buff; - return; - } - - skip_whitespace (str); - - if ((rd = reg_required_here (& str, 12)) == FAIL) - { - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (& str) == FAIL - || (rn = ld_mode_required_here (& str)) == FAIL) + if (skip_past_comma (& str) == FAIL + || (rn = ld_mode_required_here (& str)) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; @@ -3753,22 +4338,32 @@ do_ldrd (str, flags) /* inst.instruction has now been zapped with Rd and the addressing mode. */ if (rd & 1) /* Unpredictable result if Rd is odd. */ { - inst.error = _("Destination register must be even"); + inst.error = _("destination register must be even"); return; } - if (rd == REG_LR || rd == 12) + if (rd == REG_LR) { - inst.error = _("r12 or r14 not allowed here"); + inst.error = _("r14 not allowed here"); return; } if (((rd == rn) || (rd + 1 == rn)) - && - ((inst.instruction & WRITE_BACK) - || (!(inst.instruction & PRE_INDEX)))) + && ((inst.instruction & WRITE_BACK) + || (!(inst.instruction & PRE_INDEX)))) as_warn (_("pre/post-indexing used when modified address register is destination")); + /* For an index-register load, the index register must not overlap the + destination (even if not write-back). */ + if ((inst.instruction & V4_STR_BIT) == 0 + && (inst.instruction & HWOFFSET_IMM) == 0) + { + int rm = inst.instruction & 0x0000000f; + + if (rm == rd || (rm == rd + 1)) + as_warn (_("ldrd destination registers must not overlap index register")); + } + end_of_line (str); } @@ -3861,6 +4456,8 @@ walk_no_bignums (sp) return 0; } +static int in_my_get_expression = 0; + static int my_get_expression (ep, str) expressionS * ep; @@ -3871,7 +4468,17 @@ my_get_expression (ep, str) save_in = input_line_pointer; input_line_pointer = *str; + in_my_get_expression = 1; seg = expression (ep); + in_my_get_expression = 0; + + if (ep->X_op == O_illegal) + { + /* We found a bad expression in md_operand(). */ + *str = input_line_pointer; + input_line_pointer = save_in; + return 1; + } #ifdef OBJ_AOUT if (seg != absolute_section @@ -3896,7 +4503,7 @@ my_get_expression (ep, str) || (ep->X_op_symbol && walk_no_bignums (ep->X_op_symbol))))) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); *str = input_line_pointer; input_line_pointer = save_in; return 1; @@ -3907,6 +4514,20 @@ my_get_expression (ep, str) return 0; } +/* We handle all bad expressions here, so that we can report the faulty + instruction in the error message. */ +void +md_operand (expr) + expressionS *expr; +{ + if (in_my_get_expression) + { + expr->X_op = O_illegal; + if (inst.error == NULL) + inst.error = _("bad expression"); + } +} + /* UNRESTRICT should be one if is permitted for this instruction. */ @@ -3926,7 +4547,7 @@ decode_shift (str, unrestrict) if (p == * str) { - inst.error = _("Shift expression expected"); + inst.error = _("shift expression expected"); return FAIL; } @@ -3937,7 +4558,7 @@ decode_shift (str, unrestrict) if (shift == NULL) { - inst.error = _("Shift expression expected"); + inst.error = _("shift expression expected"); return FAIL; } @@ -3992,13 +4613,13 @@ decode_shift (str, unrestrict) about this though. */ if (num == 0) { - as_warn (_("Shift of 0 ignored.")); + as_warn (_("shift of 0 ignored.")); shift = & shift_names[0]; assert (shift->properties->index == SHIFT_LSL); } else { - inst.error = _("Invalid immediate shift"); + inst.error = _("invalid immediate shift"); return FAIL; } } @@ -4153,7 +4774,7 @@ data_op2 (str) if (expr.X_op != O_constant) { - inst.error = _("Constant expression expected"); + inst.error = _("constant expression expected"); return FAIL; } @@ -4162,7 +4783,7 @@ data_op2 (str) || (expr.X_add_number & 1) != 0 || ((unsigned) inst.reloc.exp.X_add_number) > 255) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return FAIL; } inst.instruction |= INST_IMMEDIATE; @@ -4182,7 +4803,7 @@ data_op2 (str) inst.reloc.exp.X_add_number)) == FAIL) { - inst.error = _("Invalid constant"); + inst.error = _("invalid constant"); return FAIL; } } @@ -4195,7 +4816,7 @@ data_op2 (str) } (*str)++; - inst.error = _("Register or shift expression expected"); + inst.error = _("register or shift expression expected"); return FAIL; } } @@ -4248,19 +4869,18 @@ fp_op2 (str) return SUCCESS; } - inst.error = _("Invalid floating point immediate expression"); + inst.error = _("invalid floating point immediate expression"); return FAIL; } inst.error = - _("Floating point register or immediate expression expected"); + _("floating point register or immediate expression expected"); return FAIL; } } static void -do_arit (str, flags) +do_arit (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4275,16 +4895,16 @@ do_arit (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_adr (str, flags) +do_adr (str) char * str; - unsigned long flags; { + /* This is a pseudo-op of the form "adr rd, label" to be converted + into a relative address of the form "add rd, pc, #label-.-8". */ skip_whitespace (str); if (reg_required_here (&str, 12) == FAIL @@ -4296,39 +4916,50 @@ do_adr (str, flags) return; } - if (flags & 0x00400000) - { - /* This is a pseudo-op of the form "adrl rd, label" to be converted - into a relative address of the form: - add rd, pc, #low(label-.-8)" - add rd, rd, #high(label-.-8)" */ - /* Frag hacking will turn this into a sub instruction if the offset turns - out to be negative. */ - inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE; - inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */ - inst.reloc.pc_rel = 1; - inst.instruction |= flags & ~0x00400000; - inst.size = INSN_SIZE * 2; - } - else + /* Frag hacking will turn this into a sub instruction if the offset turns + out to be negative. */ + inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; + inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */ + inst.reloc.pc_rel = 1; + + end_of_line (str); +} + +static void +do_adrl (str) + char * str; +{ + /* This is a pseudo-op of the form "adrl rd, label" to be converted + into a relative address of the form: + add rd, pc, #low(label-.-8)" + add rd, rd, #high(label-.-8)" */ + + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL + || skip_past_comma (&str) == FAIL + || my_get_expression (&inst.reloc.exp, &str)) { - /* This is a pseudo-op of the form "adr rd, label" to be converted - into a relative address of the form "add rd, pc, #label-.-8". */ - /* Frag hacking will turn this into a sub instruction if the offset turns - out to be negative. */ - inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE; - inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */ - inst.reloc.pc_rel = 1; - inst.instruction |= flags; + if (!inst.error) + inst.error = BAD_ARGS; + + return; } end_of_line (str); + /* Frag hacking will turn this into a sub instruction if the offset turns + out to be negative. */ + inst.reloc.type = BFD_RELOC_ARM_ADRL_IMMEDIATE; + inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */ + inst.reloc.pc_rel = 1; + inst.size = INSN_SIZE * 2; + + return; } static void -do_cmp (str, flags) +do_cmp (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4347,18 +4978,13 @@ do_cmp (str, flags) return; } - inst.instruction |= flags; - if ((flags & 0x0000f000) == 0) - inst.instruction |= CONDS_BIT; - end_of_line (str); return; } static void -do_mov (str, flags) +do_mov (str) char * str; - unsigned long flags; { skip_whitespace (str); @@ -4377,15 +5003,13 @@ do_mov (str, flags) return; } - inst.instruction |= flags; end_of_line (str); return; } static int -ldst_extend (str, hwse) +ldst_extend (str) char ** str; - int hwse; { int add = INDEX_UP; @@ -4401,8 +5025,7 @@ ldst_extend (str, hwse) { int value = inst.reloc.exp.X_add_number; - if ((hwse && (value < -255 || value > 255)) - || (value < -4095 || value > 4095)) + if (value < -4095 || value > 4095) { inst.error = _("address offset too large"); return FAIL; @@ -4414,23 +5037,11 @@ ldst_extend (str, hwse) add = 0; } - /* Halfword and signextension instructions have the - immediate value split across bits 11..8 and bits 3..0. */ - if (hwse) - inst.instruction |= (add | HWOFFSET_IMM - | ((value >> 4) << 8) | (value & 0xF)); - else - inst.instruction |= add | value; + inst.instruction |= add | value; } else { - if (hwse) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - } - else - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; inst.reloc.pc_rel = 0; } return SUCCESS; @@ -4447,62 +5058,34 @@ ldst_extend (str, hwse) if (reg_required_here (str, 0) == FAIL) return FAIL; - if (hwse) - inst.instruction |= add; - else - { - inst.instruction |= add | OFFSET_REG; - if (skip_past_comma (str) == SUCCESS) - return decode_shift (str, SHIFT_RESTRICT); - } + inst.instruction |= add | OFFSET_REG; + if (skip_past_comma (str) == SUCCESS) + return decode_shift (str, SHIFT_RESTRICT); return SUCCESS; } } static void -do_ldst (str, flags) +do_ldst (str) char * str; - unsigned long flags; { - int halfword = 0; int pre_inc = 0; int conflict_reg; int value; - /* This is not ideal, but it is the simplest way of dealing with the - ARM7T halfword instructions (since they use a different - encoding, but the same mnemonic): */ - halfword = (flags & 0x80000000) != 0; - if (halfword) - { - /* This is actually a load/store of a halfword, or a - signed-extension load. */ - if ((cpu_variant & ARM_EXT_V4) == 0) - { - inst.error - = _("Processor does not support halfwords or signed bytes"); - return; - } - - inst.instruction = ((inst.instruction & COND_MASK) - | (flags & ~COND_MASK)); - - flags = 0; - } - skip_whitespace (str); - if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) + if ((conflict_reg = reg_required_here (&str, 12)) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; return; } - if (skip_past_comma (& str) == FAIL) + if (skip_past_comma (&str) == FAIL) { - inst.error = _("Address expected"); + inst.error = _("address expected"); return; } @@ -4529,26 +5112,16 @@ do_ldst (str, flags) if (skip_past_comma (&str) == SUCCESS) { /* [Rn],... (post inc) */ - if (ldst_extend (&str, halfword) == FAIL) + if (ldst_extend (&str) == FAIL) return; if (conflict_reg) - { - if (flags & TRANS_BIT) - as_warn (_("Rn and Rd must be different in %s"), - ((inst.instruction & LOAD_BIT) - ? "LDRT" : "STRT")); - else - as_warn (_("%s register same as write-back base"), - ((inst.instruction & LOAD_BIT) - ? _("destination") : _("source"))); - } + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); } else { /* [Rn] */ - if (halfword) - inst.instruction |= HWOFFSET_IMM; - skip_whitespace (str); if (*str == '!') @@ -4561,16 +5134,8 @@ do_ldst (str, flags) inst.instruction |= WRITE_BACK; } - flags |= INDEX_UP; - if (flags & TRANS_BIT) - { - if (conflict_reg) - as_warn (_("Rn and Rd must be different in %s"), - ((inst.instruction & LOAD_BIT) - ? "LDRT" : "STRT")); - } - else - pre_inc = 1; + inst.instruction |= INDEX_UP; + pre_inc = 1; } } else @@ -4583,7 +5148,7 @@ do_ldst (str, flags) } pre_inc = 1; - if (ldst_extend (&str, halfword) == FAIL) + if (ldst_extend (&str) == FAIL) return; skip_whitespace (str); @@ -4609,6 +5174,12 @@ do_ldst (str, flags) } else if (*str == '=') { + if ((inst.instruction & LOAD_BIT) == 0) + { + inst.error = _("invalid pseudo operation"); + return; + } + /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ str++; @@ -4620,7 +5191,7 @@ do_ldst (str, flags) if (inst.reloc.exp.X_op != O_constant && inst.reloc.exp.X_op != O_symbol) { - inst.error = _("Constant expression expected"); + inst.error = _("constant expression expected"); return; } @@ -4632,20 +5203,22 @@ do_ldst (str, flags) { /* This can be done with a mov instruction. */ inst.instruction &= LITERAL_MASK; - inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); - inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + inst.instruction |= (INST_IMMEDIATE + | (OPCODE_MOV << DATA_OP_SHIFT)); + inst.instruction |= value & 0xfff; end_of_line (str); return; } - - value = validate_immediate (~ inst.reloc.exp.X_add_number); + + value = validate_immediate (~inst.reloc.exp.X_add_number); if (value != FAIL) { /* This can be done with a mvn instruction. */ inst.instruction &= LITERAL_MASK; - inst.instruction |= INST_IMMEDIATE | (OPCODE_MVN << DATA_OP_SHIFT); - inst.instruction |= (flags & COND_MASK) | (value & 0xfff); + inst.instruction |= (INST_IMMEDIATE + | (OPCODE_MVN << DATA_OP_SHIFT)); + inst.instruction |= value & 0xfff; end_of_line (str); return; } @@ -4660,14 +5233,7 @@ do_ldst (str, flags) } /* Change the instruction exp to point to the pool. */ - if (halfword) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; - } - else - inst.reloc.type = BFD_RELOC_ARM_LITERAL; - + inst.reloc.type = BFD_RELOC_ARM_LITERAL; inst.reloc.pc_rel = 1; inst.instruction |= (REG_PC << 16); pre_inc = 1; @@ -4677,13 +5243,7 @@ do_ldst (str, flags) if (my_get_expression (&inst.reloc.exp, &str)) return; - if (halfword) - { - inst.instruction |= HWOFFSET_IMM; - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; - } - else - inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM; #ifndef TE_WINCE /* PC rel adjust. */ inst.reloc.exp.X_add_number -= 8; @@ -4693,397 +5253,1346 @@ do_ldst (str, flags) pre_inc = 1; } - if (pre_inc && (flags & TRANS_BIT)) - inst.error = _("Pre-increment instruction with translate"); - - inst.instruction |= flags | (pre_inc ? PRE_INDEX : 0); + inst.instruction |= (pre_inc ? PRE_INDEX : 0); end_of_line (str); return; } -static long -reg_list (strp) - char ** strp; +static void +do_ldstt (str) + char * str; { - char * str = * strp; - long range = 0; - int another_range; - - /* We come back here if we get ranges concatenated by '+' or '|'. */ - do - { - another_range = 0; + int conflict_reg; - if (*str == '{') - { - int in_range = 0; - int cur_reg = -1; + skip_whitespace (str); - str++; - do - { - int reg; + if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } - skip_whitespace (str); + if (skip_past_comma (& str) == FAIL) + { + inst.error = _("address expected"); + return; + } - if ((reg = reg_required_here (& str, -1)) == FAIL) - return FAIL; + if (*str == '[') + { + int reg; - if (in_range) - { - int i; + str++; - if (reg <= cur_reg) - { - inst.error = _("Bad range in register list"); - return FAIL; - } + skip_whitespace (str); - for (i = cur_reg + 1; i < reg; i++) - { - if (range & (1 << i)) - as_tsktsk - (_("Warning: Duplicated register (r%d) in register list"), - i); - else - range |= 1 << i; - } - in_range = 0; - } + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; - if (range & (1 << reg)) - as_tsktsk (_("Warning: Duplicated register (r%d) in register list"), - reg); - else if (reg <= cur_reg) - as_tsktsk (_("Warning: Register range not in ascending order")); + /* ldrt/strt always use post-indexed addressing, so if the base is + the same as Rd, we warn. */ + if (conflict_reg == reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); - range |= 1 << reg; - cur_reg = reg; - } - while (skip_past_comma (&str) != FAIL - || (in_range = 1, *str++ == '-')); - str--; - skip_whitespace (str); + skip_whitespace (str); - if (*str++ != '}') - { - inst.error = _("Missing `}'"); - return FAIL; - } - } - else + if (*str == ']') { - expressionS expr; - - if (my_get_expression (&expr, &str)) - return FAIL; + str ++; - if (expr.X_op == O_constant) + if (skip_past_comma (&str) == SUCCESS) { - if (expr.X_add_number - != (expr.X_add_number & 0x0000ffff)) - { - inst.error = _("invalid register mask"); - return FAIL; - } - - if ((range & expr.X_add_number) != 0) - { - int regno = range & expr.X_add_number; - - regno &= -regno; - regno = (1 << regno) - 1; - as_tsktsk - (_("Warning: Duplicated register (r%d) in register list"), - regno); - } - - range |= expr.X_add_number; + /* [Rn],... (post inc) */ + if (ldst_extend (&str) == FAIL) + return; } else { - if (inst.reloc.type != 0) - { - inst.error = _("expression too complex"); - return FAIL; - } + /* [Rn] */ + skip_whitespace (str); - memcpy (&inst.reloc.exp, &expr, sizeof (expressionS)); - inst.reloc.type = BFD_RELOC_ARM_MULTI; - inst.reloc.pc_rel = 0; + /* Skip a write-back '!'. */ + if (*str == '!') + str++; + + inst.instruction |= INDEX_UP; } } - - skip_whitespace (str); - - if (*str == '|' || *str == '+') + else { - str++; - another_range = 1; + inst.error = _("post-indexed expression expected"); + return; } } - while (another_range); + else + { + inst.error = _("post-indexed expression expected"); + return; + } - *strp = str; - return range; + end_of_line (str); + return; } -static void -do_ldmstm (str, flags) - char * str; - unsigned long flags; +static int +ldst_extend_v4 (str) + char ** str; +{ + int add = INDEX_UP; + + switch (**str) + { + case '#': + case '$': + (*str)++; + if (my_get_expression (& inst.reloc.exp, str)) + return FAIL; + + if (inst.reloc.exp.X_op == O_constant) + { + int value = inst.reloc.exp.X_add_number; + + if (value < -255 || value > 255) + { + inst.error = _("address offset too large"); + return FAIL; + } + + if (value < 0) + { + value = -value; + add = 0; + } + + /* Halfword and signextension instructions have the + immediate value split across bits 11..8 and bits 3..0. */ + inst.instruction |= (add | HWOFFSET_IMM + | ((value >> 4) << 8) | (value & 0xF)); + } + else + { + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; + inst.reloc.pc_rel = 0; + } + return SUCCESS; + + case '-': + add = 0; + /* Fall through. */ + + case '+': + (*str)++; + /* Fall through. */ + + default: + if (reg_required_here (str, 0) == FAIL) + return FAIL; + + inst.instruction |= add; + return SUCCESS; + } +} + +/* Halfword and signed-byte load/store operations. */ +static void +do_ldstv4 (str) + char * str; +{ + int pre_inc = 0; + int conflict_reg; + int value; + + skip_whitespace (str); + + if ((conflict_reg = reg_required_here (& str, 12)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (& str) == FAIL) + { + inst.error = _("address expected"); + return; + } + + if (*str == '[') + { + int reg; + + str++; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; + + /* Conflicts can occur on stores as well as loads. */ + conflict_reg = (conflict_reg == reg); + + skip_whitespace (str); + + if (*str == ']') + { + str ++; + + if (skip_past_comma (&str) == SUCCESS) + { + /* [Rn],... (post inc) */ + if (ldst_extend_v4 (&str) == FAIL) + return; + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + } + else + { + /* [Rn] */ + inst.instruction |= HWOFFSET_IMM; + + skip_whitespace (str); + + if (*str == '!') + { + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + str++; + inst.instruction |= WRITE_BACK; + } + + inst.instruction |= INDEX_UP; + pre_inc = 1; + } + } + else + { + /* [Rn,...] */ + if (skip_past_comma (&str) == FAIL) + { + inst.error = _("pre-indexed expression expected"); + return; + } + + pre_inc = 1; + if (ldst_extend_v4 (&str) == FAIL) + return; + + skip_whitespace (str); + + if (*str++ != ']') + { + inst.error = _("missing ]"); + return; + } + + skip_whitespace (str); + + if (*str == '!') + { + if (conflict_reg) + as_warn (_("%s register same as write-back base"), + ((inst.instruction & LOAD_BIT) + ? _("destination") : _("source"))); + str++; + inst.instruction |= WRITE_BACK; + } + } + } + else if (*str == '=') + { + if ((inst.instruction & LOAD_BIT) == 0) + { + inst.error = _("invalid pseudo operation"); + return; + } + + /* XXX Does this work correctly for half-word/byte ops? */ + /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ + str++; + + skip_whitespace (str); + + if (my_get_expression (&inst.reloc.exp, &str)) + return; + + if (inst.reloc.exp.X_op != O_constant + && inst.reloc.exp.X_op != O_symbol) + { + inst.error = _("constant expression expected"); + return; + } + + if (inst.reloc.exp.X_op == O_constant) + { + value = validate_immediate (inst.reloc.exp.X_add_number); + + if (value != FAIL) + { + /* This can be done with a mov instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT); + inst.instruction |= value & 0xfff; + end_of_line (str); + return; + } + + value = validate_immediate (~ inst.reloc.exp.X_add_number); + + if (value != FAIL) + { + /* This can be done with a mvn instruction. */ + inst.instruction &= LITERAL_MASK; + inst.instruction |= INST_IMMEDIATE | (OPCODE_MVN << DATA_OP_SHIFT); + inst.instruction |= value & 0xfff; + end_of_line (str); + return; + } + } + + /* Insert into literal pool. */ + if (add_to_lit_pool () == FAIL) + { + if (!inst.error) + inst.error = _("literal pool insertion failed"); + return; + } + + /* Change the instruction exp to point to the pool. */ + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_HWLITERAL; + inst.reloc.pc_rel = 1; + inst.instruction |= (REG_PC << 16); + pre_inc = 1; + } + else + { + if (my_get_expression (&inst.reloc.exp, &str)) + return; + + inst.instruction |= HWOFFSET_IMM; + inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8; +#ifndef TE_WINCE + /* PC rel adjust. */ + inst.reloc.exp.X_add_number -= 8; +#endif + inst.reloc.pc_rel = 1; + inst.instruction |= (REG_PC << 16); + pre_inc = 1; + } + + inst.instruction |= (pre_inc ? PRE_INDEX : 0); + end_of_line (str); + return; +} + +static long +reg_list (strp) + char ** strp; +{ + char * str = * strp; + long range = 0; + int another_range; + + /* We come back here if we get ranges concatenated by '+' or '|'. */ + do + { + another_range = 0; + + if (*str == '{') + { + int in_range = 0; + int cur_reg = -1; + + str++; + do + { + int reg; + + skip_whitespace (str); + + if ((reg = reg_required_here (& str, -1)) == FAIL) + return FAIL; + + if (in_range) + { + int i; + + if (reg <= cur_reg) + { + inst.error = _("bad range in register list"); + return FAIL; + } + + for (i = cur_reg + 1; i < reg; i++) + { + if (range & (1 << i)) + as_tsktsk + (_("Warning: duplicated register (r%d) in register list"), + i); + else + range |= 1 << i; + } + in_range = 0; + } + + if (range & (1 << reg)) + as_tsktsk (_("Warning: duplicated register (r%d) in register list"), + reg); + else if (reg <= cur_reg) + as_tsktsk (_("Warning: register range not in ascending order")); + + range |= 1 << reg; + cur_reg = reg; + } + while (skip_past_comma (&str) != FAIL + || (in_range = 1, *str++ == '-')); + str--; + skip_whitespace (str); + + if (*str++ != '}') + { + inst.error = _("missing `}'"); + return FAIL; + } + } + else + { + expressionS expr; + + if (my_get_expression (&expr, &str)) + return FAIL; + + if (expr.X_op == O_constant) + { + if (expr.X_add_number + != (expr.X_add_number & 0x0000ffff)) + { + inst.error = _("invalid register mask"); + return FAIL; + } + + if ((range & expr.X_add_number) != 0) + { + int regno = range & expr.X_add_number; + + regno &= -regno; + regno = (1 << regno) - 1; + as_tsktsk + (_("Warning: duplicated register (r%d) in register list"), + regno); + } + + range |= expr.X_add_number; + } + else + { + if (inst.reloc.type != 0) + { + inst.error = _("expression too complex"); + return FAIL; + } + + memcpy (&inst.reloc.exp, &expr, sizeof (expressionS)); + inst.reloc.type = BFD_RELOC_ARM_MULTI; + inst.reloc.pc_rel = 0; + } + } + + skip_whitespace (str); + + if (*str == '|' || *str == '+') + { + str++; + another_range = 1; + } + } + while (another_range); + + *strp = str; + return range; +} + +static void +do_ldmstm (str) + char * str; { int base_reg; long range; - skip_whitespace (str); + skip_whitespace (str); + + if ((base_reg = reg_required_here (&str, 16)) == FAIL) + return; + + if (base_reg == REG_PC) + { + inst.error = _("r15 not allowed as base register"); + return; + } + + skip_whitespace (str); + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + str++; + } + + if (skip_past_comma (&str) == FAIL + || (range = reg_list (&str)) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + if (*str == '^') + { + str++; + inst.instruction |= LDM_TYPE_2_OR_3; + } + + inst.instruction |= range; + end_of_line (str); + return; +} + +static void +do_swi (str) + char * str; +{ + skip_whitespace (str); + + /* Allow optional leading '#'. */ + if (is_immediate_prefix (*str)) + str++; + + if (my_get_expression (& inst.reloc.exp, & str)) + return; + + inst.reloc.type = BFD_RELOC_ARM_SWI; + inst.reloc.pc_rel = 0; + end_of_line (str); + + return; +} + +static void +do_swap (str) + char * str; +{ + int reg; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 12)) == FAIL) + return; + + if (reg == REG_PC) + { + inst.error = _("r15 not allowed in swap"); + return; + } + + if (skip_past_comma (&str) == FAIL + || (reg = reg_required_here (&str, 0)) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (reg == REG_PC) + { + inst.error = _("r15 not allowed in swap"); + return; + } + + if (skip_past_comma (&str) == FAIL + || *str++ != '[') + { + inst.error = BAD_ARGS; + return; + } + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; + + if (reg == REG_PC) + { + inst.error = BAD_PC; + return; + } + + skip_whitespace (str); + + if (*str++ != ']') + { + inst.error = _("missing ]"); + return; + } + + end_of_line (str); + return; +} + +static void +do_branch (str) + char * str; +{ + if (my_get_expression (&inst.reloc.exp, &str)) + return; + +#ifdef OBJ_ELF + { + char * save_in; + + /* ScottB: February 5, 1998 - Check to see of PLT32 reloc + required for the instruction. */ + + /* arm_parse_reloc () works on input_line_pointer. + We actually want to parse the operands to the branch instruction + passed in 'str'. Save the input pointer and restore it later. */ + save_in = input_line_pointer; + input_line_pointer = str; + if (inst.reloc.exp.X_op == O_symbol + && *str == '(' + && arm_parse_reloc () == BFD_RELOC_ARM_PLT32) + { + inst.reloc.type = BFD_RELOC_ARM_PLT32; + inst.reloc.pc_rel = 0; + /* Modify str to point to after parsed operands, otherwise + end_of_line() will complain about the (PLT) left in str. */ + str = input_line_pointer; + } + else + { + inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; + inst.reloc.pc_rel = 1; + } + input_line_pointer = save_in; + } +#else + inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; + inst.reloc.pc_rel = 1; +#endif /* OBJ_ELF */ + + end_of_line (str); + return; +} + +static void +do_bx (str) + char * str; +{ + int reg; + + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 0)) == FAIL) + { + inst.error = BAD_ARGS; + return; + } + + /* Note - it is not illegal to do a "bx pc". Useless, but not illegal. */ + if (reg == REG_PC) + as_tsktsk (_("use of r15 in bx in ARM mode is not really useful")); + + end_of_line (str); +} + +static void +do_cdp (str) + char * str; +{ + /* Co-processor data operation. + Format: CDP{cond} CP#,,CRd,CRn,CRm{,} */ + skip_whitespace (str); + + if (co_proc_number (&str) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_opc_expr (&str, 20,4) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 12) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 16) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 0) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == SUCCESS) + { + if (cp_opc_expr (&str, 5, 3) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + } + + end_of_line (str); + return; +} + +static void +do_lstc (str) + char * str; +{ + /* Co-processor register load/store. + Format: */ + + skip_whitespace (str); + + if (co_proc_number (&str) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 12) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_address_required_here (&str, CP_WB_OK) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_co_reg (str) + char * str; +{ + /* Co-processor register transfer. + Format: {cond} CP#,,Rd,CRn,CRm{,} */ + + skip_whitespace (str); + + if (co_proc_number (&str) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_opc_expr (&str, 21, 3) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 12) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 16) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_reg_required_here (&str, 0) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == SUCCESS) + { + if (cp_opc_expr (&str, 5, 3) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + } + + end_of_line (str); + return; +} + +static void +do_fpa_ctrl (str) + char * str; +{ + /* FP control registers. + Format: {cond} Rn */ + + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); + return; +} + +static void +do_fpa_ldst (str) + char * str; +{ + skip_whitespace (str); + + if (fp_reg_required_here (&str, 12) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + if (skip_past_comma (&str) == FAIL + || cp_address_required_here (&str, CP_WB_OK) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + return; + } + + end_of_line (str); +} + +static void +do_fpa_ldmstm (str) + char * str; +{ + int num_regs; + + skip_whitespace (str); + + if (fp_reg_required_here (&str, 12) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } + + /* Get Number of registers to transfer. */ + if (skip_past_comma (&str) == FAIL + || my_get_expression (&inst.reloc.exp, &str)) + { + if (! inst.error) + inst.error = _("constant expression expected"); + return; + } + + if (inst.reloc.exp.X_op != O_constant) + { + inst.error = _("constant value required for number of registers"); + return; + } + + num_regs = inst.reloc.exp.X_add_number; + + if (num_regs < 1 || num_regs > 4) + { + inst.error = _("number of registers must be in the range [1:4]"); + return; + } + + switch (num_regs) + { + case 1: + inst.instruction |= CP_T_X; + break; + case 2: + inst.instruction |= CP_T_Y; + break; + case 3: + inst.instruction |= CP_T_Y | CP_T_X; + break; + case 4: + break; + default: + abort (); + } + + if (inst.instruction & (CP_T_Pre | CP_T_UD)) /* ea/fd format. */ + { + int reg; + int write_back; + int offset; - if ((base_reg = reg_required_here (&str, 16)) == FAIL) - return; + /* The instruction specified "ea" or "fd", so we can only accept + [Rn]{!}. The instruction does not really support stacking or + unstacking, so we have to emulate these by setting appropriate + bits and offsets. */ + if (skip_past_comma (&str) == FAIL + || *str != '[') + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } - if (base_reg == REG_PC) + str++; + skip_whitespace (str); + + if ((reg = reg_required_here (&str, 16)) == FAIL) + return; + + skip_whitespace (str); + + if (*str != ']') + { + inst.error = BAD_ARGS; + return; + } + + str++; + if (*str == '!') + { + write_back = 1; + str++; + if (reg == REG_PC) + { + inst.error = + _("r15 not allowed as base register with write-back"); + return; + } + } + else + write_back = 0; + + if (inst.instruction & CP_T_Pre) + { + /* Pre-decrement. */ + offset = 3 * num_regs; + if (write_back) + inst.instruction |= CP_T_WB; + } + else + { + /* Post-increment. */ + if (write_back) + { + inst.instruction |= CP_T_WB; + offset = 3 * num_regs; + } + else + { + /* No write-back, so convert this into a standard pre-increment + instruction -- aesthetically more pleasing. */ + inst.instruction |= CP_T_Pre | CP_T_UD; + offset = 0; + } + } + + inst.instruction |= offset; + } + else if (skip_past_comma (&str) == FAIL + || cp_address_required_here (&str, CP_WB_OK) == FAIL) { - inst.error = _("r15 not allowed as base register"); + if (! inst.error) + inst.error = BAD_ARGS; return; } + end_of_line (str); +} + +static void +do_fpa_dyadic (str) + char * str; +{ skip_whitespace (str); - if (*str == '!') + if (fp_reg_required_here (&str, 12) == FAIL) { - flags |= WRITE_BACK; - str++; + if (! inst.error) + inst.error = BAD_ARGS; + return; } if (skip_past_comma (&str) == FAIL - || (range = reg_list (&str)) == FAIL) + || fp_reg_required_here (&str, 16) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - if (*str == '^') + if (skip_past_comma (&str) == FAIL + || fp_op2 (&str) == FAIL) { - str++; - flags |= LDM_TYPE_2_OR_3; + if (! inst.error) + inst.error = BAD_ARGS; + return; } - inst.instruction |= flags | range; end_of_line (str); return; } static void -do_swi (str, flags) +do_fpa_monadic (str) char * str; - unsigned long flags; { skip_whitespace (str); - /* Allow optional leading '#'. */ - if (is_immediate_prefix (*str)) - str++; - - if (my_get_expression (& inst.reloc.exp, & str)) - return; + if (fp_reg_required_here (&str, 12) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } - inst.reloc.type = BFD_RELOC_ARM_SWI; - inst.reloc.pc_rel = 0; - inst.instruction |= flags; + if (skip_past_comma (&str) == FAIL + || fp_op2 (&str) == FAIL) + { + if (! inst.error) + inst.error = BAD_ARGS; + return; + } end_of_line (str); - return; } static void -do_swap (str, flags) +do_fpa_cmp (str) char * str; - unsigned long flags; { - int reg; - skip_whitespace (str); - if ((reg = reg_required_here (&str, 12)) == FAIL) - return; - - if (reg == REG_PC) + if (fp_reg_required_here (&str, 16) == FAIL) { - inst.error = _("r15 not allowed in swap"); + if (! inst.error) + inst.error = BAD_ARGS; return; } if (skip_past_comma (&str) == FAIL - || (reg = reg_required_here (&str, 0)) == FAIL) + || fp_op2 (&str) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } - if (reg == REG_PC) + end_of_line (str); + return; +} + +static void +do_fpa_from_reg (str) + char * str; +{ + skip_whitespace (str); + + if (fp_reg_required_here (&str, 16) == FAIL) { - inst.error = _("r15 not allowed in swap"); + if (! inst.error) + inst.error = BAD_ARGS; return; } if (skip_past_comma (&str) == FAIL - || *str++ != '[') + || reg_required_here (&str, 12) == FAIL) { - inst.error = BAD_ARGS; + if (! inst.error) + inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_fpa_to_reg (str) + char * str; +{ skip_whitespace (str); - if ((reg = reg_required_here (&str, 16)) == FAIL) + if (reg_required_here (&str, 12) == FAIL) return; - if (reg == REG_PC) + if (skip_past_comma (&str) == FAIL + || fp_reg_required_here (&str, 0) == FAIL) { - inst.error = BAD_PC; + if (! inst.error) + inst.error = BAD_ARGS; return; } - skip_whitespace (str); + end_of_line (str); + return; +} - if (*str++ != ']') +static int +vfp_sp_reg_required_here (str, pos) + char **str; + enum vfp_sp_reg_pos pos; +{ + int reg; + char *start = *str; + + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) != FAIL) { - inst.error = _("missing ]"); - return; + switch (pos) + { + case VFP_REG_Sd: + inst.instruction |= ((reg >> 1) << 12) | ((reg & 1) << 22); + break; + + case VFP_REG_Sn: + inst.instruction |= ((reg >> 1) << 16) | ((reg & 1) << 7); + break; + + case VFP_REG_Sm: + inst.instruction |= ((reg >> 1) << 0) | ((reg & 1) << 5); + break; + + default: + abort (); + } + return reg; } - inst.instruction |= flags; - end_of_line (str); - return; + /* In the few cases where we might be able to accept something else + this error can be overridden. */ + inst.error = _(all_reg_maps[REG_TYPE_SN].expected); + + /* Restore the start point. */ + *str = start; + return FAIL; } -static void -do_branch (str, flags) - char * str; - unsigned long flags ATTRIBUTE_UNUSED; +static int +vfp_dp_reg_required_here (str, pos) + char **str; + enum vfp_sp_reg_pos pos; { - if (my_get_expression (&inst.reloc.exp, &str)) - return; + int reg; + char *start = *str; -#ifdef OBJ_ELF - { - char * save_in; + if ((reg = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) != FAIL) + { + switch (pos) + { + case VFP_REG_Dd: + inst.instruction |= reg << 12; + break; - /* ScottB: February 5, 1998 - Check to see of PLT32 reloc - required for the instruction. */ + case VFP_REG_Dn: + inst.instruction |= reg << 16; + break; - /* arm_parse_reloc () works on input_line_pointer. - We actually want to parse the operands to the branch instruction - passed in 'str'. Save the input pointer and restore it later. */ - save_in = input_line_pointer; - input_line_pointer = str; - if (inst.reloc.exp.X_op == O_symbol - && *str == '(' - && arm_parse_reloc () == BFD_RELOC_ARM_PLT32) - { - inst.reloc.type = BFD_RELOC_ARM_PLT32; - inst.reloc.pc_rel = 0; - /* Modify str to point to after parsed operands, otherwise - end_of_line() will complain about the (PLT) left in str. */ - str = input_line_pointer; - } - else - { - inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; - inst.reloc.pc_rel = 1; - } - input_line_pointer = save_in; - } -#else - inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH; - inst.reloc.pc_rel = 1; -#endif /* OBJ_ELF */ + case VFP_REG_Dm: + inst.instruction |= reg << 0; + break; + + default: + abort (); + } + return reg; + } + + /* In the few cases where we might be able to accept something else + this error can be overridden. */ + inst.error = _(all_reg_maps[REG_TYPE_DN].expected); - end_of_line (str); - return; + /* Restore the start point. */ + *str = start; + return FAIL; } static void -do_bx (str, flags) - char * str; - unsigned long flags ATTRIBUTE_UNUSED; +do_vfp_sp_monadic (str) + char *str; { - int reg; - skip_whitespace (str); - if ((reg = reg_required_here (&str, 0)) == FAIL) + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) { - inst.error = BAD_ARGS; + if (! inst.error) + inst.error = BAD_ARGS; return; } - /* Note - it is not illegal to do a "bx pc". Useless, but not illegal. */ - if (reg == REG_PC) - as_tsktsk (_("Use of r15 in bx in ARM mode is not really useful")); - end_of_line (str); + return; } static void -do_cdp (str, flags) - char * str; - unsigned long flags ATTRIBUTE_UNUSED; +do_vfp_dp_monadic (str) + char *str; { - /* Co-processor data operation. - Format: CDP{cond} CP#,,CRd,CRn,CRm{,} */ skip_whitespace (str); - if (co_proc_number (&str) == FAIL) + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_sp_dyadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_opc_expr (&str, 20,4) == FAIL) + || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_dp_dyadic (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 12) == FAIL) + || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_reg_from_sp (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 16) == FAIL) + || vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_sp_reg2 (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 0) == FAIL) + || reg_required_here (&str, 16) == FAIL + || skip_past_comma (&str) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } - if (skip_past_comma (&str) == SUCCESS) + /* We require exactly two consecutive SP registers. */ + if (vfp_sp_reg_list (&str, VFP_REG_Sm) != 2) { - if (cp_opc_expr (&str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } + if (! inst.error) + inst.error = _("only two consecutive VFP SP registers allowed here"); } end_of_line (str); @@ -5091,123 +6600,185 @@ do_cdp (str, flags) } static void -do_lstc (str, flags) - char * str; - unsigned long flags; +do_vfp_sp_from_reg (str) + char *str; { - /* Co-processor register load/store. - Format: */ - skip_whitespace (str); - if (co_proc_number (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } + if (vfp_sp_reg_required_here (&str, VFP_REG_Sn) == FAIL) + return; if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 12) == FAIL) + || reg_required_here (&str, 12) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_reg_from_dp (str) + char *str; +{ + skip_whitespace (str); + + if (reg_required_here (&str, 12) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + || vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_co_reg (str, flags) - char * str; - unsigned long flags; +do_vfp_reg2_from_dp (str) + char *str; { - /* Co-processor register transfer. - Format: {cond} CP#,,Rd,CRn,CRm{,} */ - skip_whitespace (str); - if (co_proc_number (&str) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; - } + if (reg_required_here (&str, 12) == FAIL) + return; if (skip_past_comma (&str) == FAIL - || cp_opc_expr (&str, 21, 3) == FAIL) + || reg_required_here (&str, 16) == FAIL + || skip_past_comma (&str) == FAIL + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_dp_from_reg (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dn) == FAIL) + return; + if (skip_past_comma (&str) == FAIL || reg_required_here (&str, 12) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } + end_of_line (str); + return; +} + +static void +do_vfp_dp_from_reg2 (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) + return; + if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 16) == FAIL) + || reg_required_here (&str, 12) == FAIL + || skip_past_comma (&str) == FAIL + || reg_required_here (&str, 16)) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } - if (skip_past_comma (&str) == FAIL - || cp_reg_required_here (&str, 0) == FAIL) + end_of_line (str); + return; +} + +static const struct vfp_reg * +vfp_psr_parse (str) + char **str; +{ + char *start = *str; + char c; + char *p; + const struct vfp_reg *vreg; + + p = start; + + /* Find the end of the current token. */ + do { - if (!inst.error) - inst.error = BAD_ARGS; - return; + c = *p++; } + while (ISALPHA (c)); - if (skip_past_comma (&str) == SUCCESS) - { - if (cp_opc_expr (&str, 5, 3) == FAIL) - { - if (!inst.error) - inst.error = BAD_ARGS; - return; + /* Mark it. */ + *--p = 0; + + for (vreg = vfp_regs + 0; + vreg < vfp_regs + sizeof (vfp_regs) / sizeof (struct vfp_reg); + vreg++) + { + if (strcmp (start, vreg->name) == 0) + { + *p = c; + *str = p; + return vreg; } } - if (flags) + + *p = c; + return NULL; +} + +static int +vfp_psr_required_here (str) + char **str; +{ + char *start = *str; + const struct vfp_reg *vreg; + + vreg = vfp_psr_parse (str); + + if (vreg) { - inst.error = BAD_COND; + inst.instruction |= vreg->regno; + return SUCCESS; } - end_of_line (str); - return; + inst.error = _("VFP system register expected"); + + *str = start; + return FAIL; } static void -do_fpa_ctrl (str, flags) - char * str; - unsigned long flags ATTRIBUTE_UNUSED; +do_vfp_reg_from_ctrl (str) + char *str; { - /* FP control registers. - Format: {cond} Rn */ - skip_whitespace (str); if (reg_required_here (&str, 12) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || vfp_psr_required_here (&str) == FAIL) { - if (!inst.error) + if (! inst.error) inst.error = BAD_ARGS; return; } @@ -5217,30 +6788,33 @@ do_fpa_ctrl (str, flags) } static void -do_fpa_ldst (str, flags) - char * str; - unsigned long flags ATTRIBUTE_UNUSED; +do_vfp_ctrl_from_reg (str) + char *str; { skip_whitespace (str); - switch (inst.suffix) + if (vfp_psr_required_here (&str) == FAIL) + return; + + if (skip_past_comma (&str) == FAIL + || reg_required_here (&str, 12) == FAIL) { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= CP_T_X; - break; - case SUFF_E: - inst.instruction |= CP_T_Y; - break; - case SUFF_P: - inst.instruction |= CP_T_X | CP_T_Y; - break; - default: - abort (); + if (! inst.error) + inst.error = BAD_ARGS; + return; } - if (fp_reg_required_here (&str, 12) == FAIL) + end_of_line (str); + return; +} + +static void +do_vfp_sp_ldst (str) + char *str; +{ + skip_whitespace (str); + + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; @@ -5248,7 +6822,7 @@ do_fpa_ldst (str, flags) } if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + || cp_address_required_here (&str, CP_NO_WB) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; @@ -5256,325 +6830,456 @@ do_fpa_ldst (str, flags) } end_of_line (str); + return; } static void -do_fpa_ldmstm (str, flags) - char * str; - unsigned long flags; +do_vfp_dp_ldst (str) + char *str; { - int num_regs; - skip_whitespace (str); - if (fp_reg_required_here (&str, 12) == FAIL) + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) { - if (! inst.error) + if (!inst.error) inst.error = BAD_ARGS; return; } - /* Get Number of registers to transfer. */ if (skip_past_comma (&str) == FAIL - || my_get_expression (&inst.reloc.exp, &str)) + || cp_address_required_here (&str, CP_NO_WB) == FAIL) { - if (! inst.error) - inst.error = _("constant expression expected"); + if (!inst.error) + inst.error = BAD_ARGS; return; } - if (inst.reloc.exp.X_op != O_constant) - { - inst.error = _("Constant value required for number of registers"); - return; - } + end_of_line (str); + return; +} - num_regs = inst.reloc.exp.X_add_number; +/* Parse and encode a VFP SP register list, storing the initial + register in position POS and returning the range as the result. If + the string is invalid return FAIL (an invalid range). */ +static long +vfp_sp_reg_list (str, pos) + char **str; + enum vfp_sp_reg_pos pos; +{ + long range = 0; + int base_reg = 0; + int new_base; + long base_bits = 0; + int count = 0; + long tempinst; + unsigned long mask = 0; + int warned = 0; - if (num_regs < 1 || num_regs > 4) + if (**str != '{') + return FAIL; + + (*str)++; + skip_whitespace (*str); + + tempinst = inst.instruction; + + do { - inst.error = _("number of registers must be in the range [1:4]"); - return; + inst.instruction = 0; + + if ((new_base = vfp_sp_reg_required_here (str, pos)) == FAIL) + return FAIL; + + if (count == 0 || base_reg > new_base) + { + base_reg = new_base; + base_bits = inst.instruction; + } + + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + if ((mask >> new_base) != 0 && ! warned) + { + as_tsktsk (_("register list not in ascending order")); + warned = 1; + } + + mask |= 1 << new_base; + count++; + + skip_whitespace (*str); + + if (**str == '-') /* We have the start of a range expression */ + { + int high_range; + + (*str)++; + + if ((high_range + = arm_reg_parse (str, all_reg_maps[REG_TYPE_SN].htab)) + == FAIL) + { + inst.error = _(all_reg_maps[REG_TYPE_SN].expected); + return FAIL; + } + + if (high_range <= new_base) + { + inst.error = _("register range not in ascending order"); + return FAIL; + } + + for (new_base++; new_base <= high_range; new_base++) + { + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + mask |= 1 << new_base; + count++; + } + } } + while (skip_past_comma (str) != FAIL); - switch (num_regs) + if (**str != '}') { - case 1: - inst.instruction |= CP_T_X; - break; - case 2: - inst.instruction |= CP_T_Y; - break; - case 3: - inst.instruction |= CP_T_Y | CP_T_X; - break; - case 4: - break; - default: - abort (); + inst.error = _("invalid register list"); + return FAIL; } - if (flags) - { - int reg; - int write_back; - int offset; + (*str)++; - /* The instruction specified "ea" or "fd", so we can only accept - [Rn]{!}. The instruction does not really support stacking or - unstacking, so we have to emulate these by setting appropriate - bits and offsets. */ - if (skip_past_comma (&str) == FAIL - || *str != '[') + range = count; + + /* Sanity check -- should have raised a parse error above. */ + if (count == 0 || count > 32) + abort(); + + /* Final test -- the registers must be consecutive. */ + while (count--) + { + if ((mask & (1 << base_reg++)) == 0) { - if (! inst.error) - inst.error = BAD_ARGS; - return; + inst.error = _("non-contiguous register range"); + return FAIL; } + } - str++; - skip_whitespace (str); + inst.instruction = tempinst | base_bits; + return range; +} - if ((reg = reg_required_here (&str, 16)) == FAIL) - return; +static long +vfp_dp_reg_list (str) + char **str; +{ + long range = 0; + int base_reg = 0; + int new_base; + int count = 0; + long tempinst; + unsigned long mask = 0; + int warned = 0; - skip_whitespace (str); + if (**str != '{') + return FAIL; - if (*str != ']') + (*str)++; + skip_whitespace (*str); + + tempinst = inst.instruction; + + do + { + inst.instruction = 0; + + if ((new_base = vfp_dp_reg_required_here (str, VFP_REG_Dd)) == FAIL) + return FAIL; + + if (count == 0 || base_reg > new_base) { - inst.error = BAD_ARGS; - return; + base_reg = new_base; + range = inst.instruction; } - str++; - if (*str == '!') + if (mask & (1 << new_base)) { - write_back = 1; - str++; - if (reg == REG_PC) - { - inst.error = - _("R15 not allowed as base register with write-back"); - return; - } + inst.error = _("invalid register list"); + return FAIL; } - else - write_back = 0; - if (flags & CP_T_Pre) + if ((mask >> new_base) != 0 && ! warned) { - /* Pre-decrement. */ - offset = 3 * num_regs; - if (write_back) - flags |= CP_T_WB; + as_tsktsk (_("register list not in ascending order")); + warned = 1; } - else + + mask |= 1 << new_base; + count++; + + skip_whitespace (*str); + + if (**str == '-') /* We have the start of a range expression */ { - /* Post-increment. */ - if (write_back) + int high_range; + + (*str)++; + + if ((high_range + = arm_reg_parse (str, all_reg_maps[REG_TYPE_DN].htab)) + == FAIL) { - flags |= CP_T_WB; - offset = 3 * num_regs; + inst.error = _(all_reg_maps[REG_TYPE_DN].expected); + return FAIL; } - else + + if (high_range <= new_base) { - /* No write-back, so convert this into a standard pre-increment - instruction -- aesthetically more pleasing. */ - flags = CP_T_Pre | CP_T_UD; - offset = 0; + inst.error = _("register range not in ascending order"); + return FAIL; + } + + for (new_base++; new_base <= high_range; new_base++) + { + if (mask & (1 << new_base)) + { + inst.error = _("invalid register list"); + return FAIL; + } + + mask |= 1 << new_base; + count++; } } + } + while (skip_past_comma (str) != FAIL); - inst.instruction |= flags | offset; + if (**str != '}') + { + inst.error = _("invalid register list"); + return FAIL; } - else if (skip_past_comma (&str) == FAIL - || cp_address_required_here (&str) == FAIL) + + (*str)++; + + range |= 2 * count; + + /* Sanity check -- should have raised a parse error above. */ + if (count == 0 || count > 16) + abort(); + + /* Final test -- the registers must be consecutive. */ + while (count--) { - if (! inst.error) - inst.error = BAD_ARGS; - return; + if ((mask & (1 << base_reg++)) == 0) + { + inst.error = _("non-contiguous register range"); + return FAIL; + } } - end_of_line (str); + inst.instruction = tempinst; + return range; } static void -do_fpa_dyadic (str, flags) - char * str; - unsigned long flags; +vfp_sp_ldstm(str, ldstm_type) + char *str; + enum vfp_ldstm_type ldstm_type; { + long range; + + skip_whitespace (str); + + if (reg_required_here (&str, 16) == FAIL) + return; + skip_whitespace (str); - switch (inst.suffix) + if (*str == '!') { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); + inst.instruction |= WRITE_BACK; + str++; } - - if (fp_reg_required_here (&str, 12) == FAIL) + else if (ldstm_type != VFP_LDSTMIA) { - if (! inst.error) - inst.error = BAD_ARGS; + inst.error = _("this addressing mode requires base-register writeback"); return; } if (skip_past_comma (&str) == FAIL - || fp_reg_required_here (&str, 16) == FAIL) + || (range = vfp_sp_reg_list (&str, VFP_REG_Sd)) == FAIL) { - if (! inst.error) + if (!inst.error) inst.error = BAD_ARGS; return; } + inst.instruction |= range; + end_of_line (str); +} + +static void +vfp_dp_ldstm(str, ldstm_type) + char *str; + enum vfp_ldstm_type ldstm_type; +{ + long range; + + skip_whitespace (str); + + if (reg_required_here (&str, 16) == FAIL) + return; + + skip_whitespace (str); + + if (*str == '!') + { + inst.instruction |= WRITE_BACK; + str++; + } + else if (ldstm_type != VFP_LDSTMIA && ldstm_type != VFP_LDSTMIAX) + { + inst.error = _("this addressing mode requires base-register writeback"); + return; + } + if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) + || (range = vfp_dp_reg_list (&str)) == FAIL) { - if (! inst.error) + if (!inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; + if (ldstm_type == VFP_LDSTMIAX || ldstm_type == VFP_LDSTMDBX) + range += 1; + + inst.instruction |= range; end_of_line (str); - return; } static void -do_fpa_monadic (str, flags) - char * str; - unsigned long flags; +do_vfp_sp_ldstmia (str) + char *str; +{ + vfp_sp_ldstm (str, VFP_LDSTMIA); +} + +static void +do_vfp_sp_ldstmdb (str) + char *str; +{ + vfp_sp_ldstm (str, VFP_LDSTMDB); +} + +static void +do_vfp_dp_ldstmia (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMIA); +} + +static void +do_vfp_dp_ldstmdb (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMDB); +} + +static void +do_vfp_xp_ldstmia (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMIAX); +} + +static void +do_vfp_xp_ldstmdb (str) + char *str; +{ + vfp_dp_ldstm (str, VFP_LDSTMDBX); +} + +static void +do_vfp_sp_compare_z (str) + char *str; { skip_whitespace (str); - switch (inst.suffix) + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); - } - - if (fp_reg_required_here (&str, 12) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) - { - if (! inst.error) + if (!inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fpa_cmp (str, flags) - char * str; - unsigned long flags; +do_vfp_dp_compare_z (str) + char *str; { skip_whitespace (str); - if (fp_reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } - - if (skip_past_comma (&str) == FAIL - || fp_op2 (&str) == FAIL) + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) { - if (! inst.error) + if (!inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fpa_from_reg (str, flags) - char * str; - unsigned long flags; +do_vfp_dp_sp_cvt (str) + char *str; { skip_whitespace (str); - switch (inst.suffix) - { - case SUFF_S: - break; - case SUFF_D: - inst.instruction |= 0x00000080; - break; - case SUFF_E: - inst.instruction |= 0x00080000; - break; - default: - abort (); - } - - if (fp_reg_required_here (&str, 16) == FAIL) - { - if (! inst.error) - inst.error = BAD_ARGS; - return; - } + if (vfp_dp_reg_required_here (&str, VFP_REG_Dd) == FAIL) + return; if (skip_past_comma (&str) == FAIL - || reg_required_here (&str, 12) == FAIL) + || vfp_sp_reg_required_here (&str, VFP_REG_Sm) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } static void -do_fpa_to_reg (str, flags) - char * str; - unsigned long flags; +do_vfp_sp_dp_cvt (str) + char *str; { skip_whitespace (str); - if (reg_required_here (&str, 12) == FAIL) + if (vfp_sp_reg_required_here (&str, VFP_REG_Sd) == FAIL) return; if (skip_past_comma (&str) == FAIL - || fp_reg_required_here (&str, 0) == FAIL) + || vfp_dp_reg_required_here (&str, VFP_REG_Dm) == FAIL) { if (! inst.error) inst.error = BAD_ARGS; return; } - inst.instruction |= flags; end_of_line (str); return; } @@ -5881,7 +7586,7 @@ thumb_shift (str, shift) if (shift_value > 32 || (shift_value == 32 && shift == THUMB_LSL)) { - inst.error = _("Invalid immediate for shift"); + inst.error = _("invalid immediate for shift"); return; } @@ -6040,6 +7745,12 @@ thumb_load_store (str, load_store, size) } else if (*str == '=') { + if (load_store != THUMB_LOAD) + { + inst.error = _("invalid pseudo operation"); + return; + } + /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */ str++; @@ -6105,12 +7816,12 @@ thumb_load_store (str, load_store, size) } else if (Rb == REG_PC && load_store != THUMB_LOAD) { - inst.error = _("R15 based store not allowed"); + inst.error = _("r15 based store not allowed"); return; } else if (Ro != FAIL) { - inst.error = _("Invalid base register for register offset"); + inst.error = _("invalid base register for register offset"); return; } @@ -6163,7 +7874,7 @@ thumb_load_store (str, load_store, size) if (offset & ~(0x1f << size)) { - inst.error = _("Invalid offset"); + inst.error = _("invalid offset"); return; } inst.instruction |= (offset >> size) << 6; @@ -6190,387 +7901,471 @@ thumb_load_store (str, load_store, size) end_of_line (str); } -/* Given a register and a register type, return 1 if - the register is of the given type, else return 0. */ - -static int -cirrus_valid_reg (reg, regtype) - int reg; - enum cirrus_regtype regtype; -{ - switch (regtype) - { - case CIRRUS_REGTYPE_ANY: - return 1; - - case CIRRUS_REGTYPE_MVF: - return cirrus_mvf_register (reg); - - case CIRRUS_REGTYPE_MVFX: - return cirrus_mvfx_register (reg); - - case CIRRUS_REGTYPE_MVD: - return cirrus_mvd_register (reg); - - case CIRRUS_REGTYPE_MVDX: - return cirrus_mvdx_register (reg); - - case CIRRUS_REGTYPE_MVAX: - return cirrus_mvax_register (reg); - - case CIRRUS_REGTYPE_DSPSC: - return ARM_EXT_MAVERICKsc_register (reg); - } - - return 0; -} - /* A register must be given at this point. - If the register is a Cirrus register, convert it's reg# appropriately. - Shift is the place to put it in inst.instruction. - regtype is type register type expected, and is: - CIRRUS_REGTYPE_MVF - CIRRUS_REGTYPE_MVFX - CIRRUS_REGTYPE_MVD - CIRRUS_REGTYPE_MVDX - CIRRUS_REGTYPE_MVAX - CIRRUS_REGTYPE_DSPSC - Restores input start point on err. Returns the reg#, or FAIL. */ static int -cirrus_reg_required_here (str, shift, regtype) +mav_reg_required_here (str, shift, regtype) char ** str; int shift; - enum cirrus_regtype regtype; + enum arm_reg_type regtype; { - static char buff [135]; /* XXX */ - int reg; - char * start = * str; - - if ((reg = arm_reg_parse (str)) != FAIL - && (int_register (reg) - || cirrus_register (reg))) - { - int orig_reg = reg; - - /* Calculate actual register # for opcode. */ - if (cirrus_register (reg) - && !ARM_EXT_MAVERICKsc_register (reg)) /* Leave this one as is. */ - { - if (reg >= 130) - reg -= 130; - else if (reg >= 110) - reg -= 110; - else if (reg >= 90) - reg -= 90; - else if (reg >= 70) - reg -= 70; - else if (reg >= 50) - reg -= 50; - } - - if (!cirrus_valid_reg (orig_reg, regtype)) - { - sprintf (buff, _("invalid register type at '%.100s'"), start); - inst.error = buff; - return FAIL; - } + int reg; + char *start = *str; + if ((reg = arm_reg_parse (str, all_reg_maps[regtype].htab)) != FAIL) + { if (shift >= 0) inst.instruction |= reg << shift; - return orig_reg; + return reg; } - /* Restore the start point, we may have got a reg of the wrong class. */ + /* Restore the start point. */ *str = start; /* In the few cases where we might be able to accept something else this error can be overridden. */ - sprintf (buff, _("Cirrus register expected, not '%.100s'"), start); - inst.error = buff; + inst.error = _(all_reg_maps[regtype].expected); return FAIL; } -/* Cirrus Instructions. */ +/* Cirrus Maverick Instructions. */ /* Wrapper functions. */ static void -do_c_binops_1 (str, flags) +do_mav_binops_1a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVF); +} + +static void +do_mav_binops_1b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVD); +} + +static void +do_mav_binops_1c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_RN, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1d (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_binops_1e (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVD); +} + +static void +do_mav_binops_1f (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVF); +} + +static void +do_mav_binops_1g (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVD); +} + +static void +do_mav_binops_1h (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1i (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1j (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVF, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1k (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVD, REG_TYPE_MVDX); +} + +static void +do_mav_binops_1l (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVF); +} + +static void +do_mav_binops_1m (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVD); +} + +static void +do_mav_binops_1n (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_binops_1o (str) + char * str; +{ + do_mav_binops (str, MAV_MODE1, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_binops_2a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVF, REG_TYPE_RN); +} + +static void +do_mav_binops_2b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVD, REG_TYPE_RN); +} + +static void +do_mav_binops_2c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE2, REG_TYPE_MVDX, REG_TYPE_RN); +} + +static void +do_mav_binops_3a (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVFX); +} + +static void +do_mav_binops_3b (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVFX, REG_TYPE_MVAX); +} + +static void +do_mav_binops_3c (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVAX, REG_TYPE_MVDX); +} + +static void +do_mav_binops_3d (str) + char * str; +{ + do_mav_binops (str, MAV_MODE3, REG_TYPE_MVDX, REG_TYPE_MVAX); +} + +static void +do_mav_triple_4a (str) + char * str; +{ + do_mav_triple (str, MAV_MODE4, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_RN); +} + +static void +do_mav_triple_4b (str) + char * str; +{ + do_mav_triple (str, MAV_MODE4, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_RN); +} + +static void +do_mav_triple_5a (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_triple_5b (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVD, REG_TYPE_MVD); +} + +static void +do_mav_triple_5c (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVFX, REG_TYPE_MVFX); +} + +static void +do_mav_triple_5d (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_RN, REG_TYPE_MVDX, REG_TYPE_MVDX); +} + +static void +do_mav_triple_5e (str) + char * str; +{ + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVF, REG_TYPE_MVF, REG_TYPE_MVF); +} + +static void +do_mav_triple_5f (str) char * str; - unsigned long flags; { - do_c_binops (str, flags, CIRRUS_MODE1); + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVD, REG_TYPE_MVD, REG_TYPE_MVD); } static void -do_c_binops_2 (str, flags) +do_mav_triple_5g (str) char * str; - unsigned long flags; { - do_c_binops (str, flags, CIRRUS_MODE2); + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVFX, REG_TYPE_MVFX, REG_TYPE_MVFX); } static void -do_c_binops_3 (str, flags) +do_mav_triple_5h (str) char * str; - unsigned long flags; { - do_c_binops (str, flags, CIRRUS_MODE3); + do_mav_triple (str, MAV_MODE5, REG_TYPE_MVDX, REG_TYPE_MVDX, REG_TYPE_MVDX); } static void -do_c_triple_4 (str, flags) +do_mav_quad_6a (str) char * str; - unsigned long flags; { - do_c_triple (str, flags, CIRRUS_MODE4); + do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVFX, REG_TYPE_MVFX, + REG_TYPE_MVFX); } static void -do_c_triple_5 (str, flags) +do_mav_quad_6b (str) char * str; - unsigned long flags; { - do_c_triple (str, flags, CIRRUS_MODE5); + do_mav_quad (str, MAV_MODE6, REG_TYPE_MVAX, REG_TYPE_MVAX, REG_TYPE_MVFX, + REG_TYPE_MVFX); } +/* cfmvsc32 DSPSC,MVFX[15:0]. */ static void -do_c_quad_6 (str, flags) +do_mav_dspsc_1 (str) char * str; - unsigned long flags; { - do_c_quad (str, flags, CIRRUS_MODE6); + skip_whitespace (str); + + /* cfmvsc32. */ + if (mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, 16, REG_TYPE_MVFX) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + + return; + } + + end_of_line (str); } -static void -do_c_dspsc_1 (str, flags) - char * str; - unsigned long flags; -{ - do_c_dspsc (str, flags, CIRRUS_MODE1); -} +/* cfmv32sc MVFX[15:0],DSPSC. */ +static void +do_mav_dspsc_2 (str) + char * str; +{ + skip_whitespace (str); + + /* cfmv32sc. */ + if (mav_reg_required_here (&str, 0, REG_TYPE_MVFX) == FAIL + || skip_past_comma (&str) == FAIL + || mav_reg_required_here (&str, -1, REG_TYPE_DSPSC) == FAIL) + { + if (!inst.error) + inst.error = BAD_ARGS; + + return; + } -static void -do_c_dspsc_2 (str, flags) - char * str; - unsigned long flags; -{ - do_c_dspsc (str, flags, CIRRUS_MODE2); + end_of_line (str); } static void -do_c_shift_1 (str, flags) +do_mav_shift_1 (str) char * str; - unsigned long flags; { - do_c_shift (str, flags, CIRRUS_MODE1); + do_mav_shift (str, REG_TYPE_MVFX, REG_TYPE_MVFX); } static void -do_c_shift_2 (str, flags) +do_mav_shift_2 (str) char * str; - unsigned long flags; { - do_c_shift (str, flags, CIRRUS_MODE2); + do_mav_shift (str, REG_TYPE_MVDX, REG_TYPE_MVDX); } static void -do_c_ldst_1 (str, flags) +do_mav_ldst_1 (str) char * str; - unsigned long flags; { - do_c_ldst (str, flags, CIRRUS_MODE1); + do_mav_ldst (str, REG_TYPE_MVF); } static void -do_c_ldst_2 (str, flags) +do_mav_ldst_2 (str) char * str; - unsigned long flags; { - do_c_ldst (str, flags, CIRRUS_MODE2); + do_mav_ldst (str, REG_TYPE_MVD); } static void -do_c_ldst_3 (str, flags) +do_mav_ldst_3 (str) char * str; - unsigned long flags; { - do_c_ldst (str, flags, CIRRUS_MODE3); + do_mav_ldst (str, REG_TYPE_MVFX); } static void -do_c_ldst_4 (str, flags) +do_mav_ldst_4 (str) char * str; - unsigned long flags; { - do_c_ldst (str, flags, CIRRUS_MODE4); + do_mav_ldst (str, REG_TYPE_MVDX); } /* Isnsn like "foo X,Y". */ static void -do_c_binops (str, flags, mode) +do_mav_binops (str, mode, reg0, reg1) char * str; - unsigned long flags; int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; { - int shift1, shift2; + int shift0, shift1; - shift1 = mode & 0xff; - shift2 = (mode >> 8) & 0xff; + shift0 = mode & 0xff; + shift1 = (mode >> 8) & 0xff; skip_whitespace (str); - if (cirrus_reg_required_here (&str, shift1, CIRRUS_REGTYPE_ANY) == FAIL + if (mav_reg_required_here (&str, shift0, reg0) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift2, CIRRUS_REGTYPE_ANY) == FAIL) + || mav_reg_required_here (&str, shift1, reg1) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; } else end_of_line (str); - - inst.instruction |= flags; - return; } /* Isnsn like "foo X,Y,Z". */ static void -do_c_triple (str, flags, mode) +do_mav_triple (str, mode, reg0, reg1, reg2) char * str; - unsigned long flags; int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; + enum arm_reg_type reg2; { - int shift1, shift2, shift3; + int shift0, shift1, shift2; - shift1 = mode & 0xff; - shift2 = (mode >> 8) & 0xff; - shift3 = (mode >> 16) & 0xff; + shift0 = mode & 0xff; + shift1 = (mode >> 8) & 0xff; + shift2 = (mode >> 16) & 0xff; skip_whitespace (str); - if (cirrus_reg_required_here (&str, shift1, CIRRUS_REGTYPE_ANY) == FAIL + if (mav_reg_required_here (&str, shift0, reg0) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift2, CIRRUS_REGTYPE_ANY) == FAIL + || mav_reg_required_here (&str, shift1, reg1) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift3, CIRRUS_REGTYPE_ANY) == FAIL) + || mav_reg_required_here (&str, shift2, reg2) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; } else end_of_line (str); - - inst.instruction |= flags; - return; } /* Isnsn like "foo W,X,Y,Z". where W=MVAX[0:3] and X,Y,Z=MVFX[0:15]. */ static void -do_c_quad (str, flags, mode) +do_mav_quad (str, mode, reg0, reg1, reg2, reg3) char * str; - unsigned long flags; int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; + enum arm_reg_type reg2; + enum arm_reg_type reg3; { - int shift1, shift2, shift3, shift4; - enum cirrus_regtype rt; + int shift0, shift1, shift2, shift3; - rt = (inst.instruction << 4 == 0xe2006000 - || inst.instruction << 4 == 0xe3006000) ? CIRRUS_REGTYPE_MVAX - : CIRRUS_REGTYPE_MVFX; - - shift1 = mode & 0xff; - shift2 = (mode >> 8) & 0xff; - shift3 = (mode >> 16) & 0xff; - shift4 = (mode >> 24) & 0xff; + shift0= mode & 0xff; + shift1 = (mode >> 8) & 0xff; + shift2 = (mode >> 16) & 0xff; + shift3 = (mode >> 24) & 0xff; skip_whitespace (str); - if (cirrus_reg_required_here (&str, shift1, CIRRUS_REGTYPE_MVAX) == FAIL + if (mav_reg_required_here (&str, shift0, reg0) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift2, rt) == FAIL + || mav_reg_required_here (&str, shift1, reg1) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift3, CIRRUS_REGTYPE_MVFX) == FAIL + || mav_reg_required_here (&str, shift2, reg2) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, shift4, CIRRUS_REGTYPE_MVFX) == FAIL) + || mav_reg_required_here (&str, shift3, reg3) == FAIL) { if (!inst.error) inst.error = BAD_ARGS; } else end_of_line (str); - - inst.instruction |= flags; - return; -} - -/* cfmvsc32 DSPSC,MVFX[15:0]. - cfmv32sc MVFX[15:0],DSPSC. */ - -static void -do_c_dspsc (str, flags, mode) - char * str; - unsigned long flags; - int mode; -{ - int error; - - skip_whitespace (str); - - error = 0; - - if (mode == CIRRUS_MODE1) - { - /* cfmvsc32. */ - if (cirrus_reg_required_here (&str, -1, CIRRUS_REGTYPE_DSPSC) == FAIL - || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, 16, CIRRUS_REGTYPE_MVFX) == FAIL) - error = 1; - } - else - { - /* cfmv32sc. */ - if (cirrus_reg_required_here (&str, 0, CIRRUS_REGTYPE_MVFX) == FAIL - || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, -1, CIRRUS_REGTYPE_DSPSC) == FAIL) - error = 1; - } - - if (error) - { - if (!inst.error) - inst.error = BAD_ARGS; - } - else - { - inst.instruction |= flags; - end_of_line (str); - } - - return; } -/* Cirrus shift immediate instructions. +/* Maverick shift immediate instructions. cfsh32 MVFX[15:0],MVFX[15:0],Shift[6:0]. cfsh64 MVDX[15:0],MVDX[15:0],Shift[6:0]. */ static void -do_c_shift (str, flags, mode) +do_mav_shift (str, reg0, reg1) char * str; - unsigned long flags; - int mode; + enum arm_reg_type reg0; + enum arm_reg_type reg1; { int error; int imm, neg = 0; @@ -6579,15 +8374,9 @@ do_c_shift (str, flags, mode) error = 0; - if (cirrus_reg_required_here (&str, 12, - (mode == CIRRUS_MODE1) - ? CIRRUS_REGTYPE_MVFX - : CIRRUS_REGTYPE_MVDX) == FAIL + if (mav_reg_required_here (&str, 12, reg0) == FAIL || skip_past_comma (&str) == FAIL - || cirrus_reg_required_here (&str, 16, - (mode == CIRRUS_MODE1) - ? CIRRUS_REGTYPE_MVFX - : CIRRUS_REGTYPE_MVDX) == FAIL + || mav_reg_required_here (&str, 16, reg1) == FAIL || skip_past_comma (&str) == FAIL) { if (!inst.error) @@ -6636,15 +8425,11 @@ do_c_shift (str, flags, mode) imm = (imm & 0xf) | ((imm & 0x70) << 1); inst.instruction |= imm; - inst.instruction |= flags; - end_of_line (str); - - return; } static int -cirrus_parse_offset (str, negative) +mav_parse_offset (str, negative) char ** str; int *negative; { @@ -6684,38 +8469,31 @@ cirrus_parse_offset (str, negative) return *negative ? -offset : offset; } -/* Cirrus load/store instructions. +/* Maverick load/store instructions. CRd,[Rn,]{!}. CRd,[Rn],. */ static void -do_c_ldst (str, flags, mode) +do_mav_ldst (str, reg0) char * str; - unsigned long flags; - int mode; + enum arm_reg_type reg0; { int offset, negative; - enum cirrus_regtype rt; - - rt = mode == CIRRUS_MODE1 ? CIRRUS_REGTYPE_MVF - : mode == CIRRUS_MODE2 ? CIRRUS_REGTYPE_MVD - : mode == CIRRUS_MODE3 ? CIRRUS_REGTYPE_MVFX - : mode == CIRRUS_MODE4 ? CIRRUS_REGTYPE_MVDX : CIRRUS_REGTYPE_MVF; skip_whitespace (str); - if (cirrus_reg_required_here (& str, 12, rt) == FAIL - || skip_past_comma (& str) == FAIL + if (mav_reg_required_here (&str, 12, reg0) == FAIL + || skip_past_comma (&str) == FAIL || *str++ != '[' - || reg_required_here (& str, 16) == FAIL) + || reg_required_here (&str, 16) == FAIL) goto fail_ldst; - if (skip_past_comma (& str) == SUCCESS) + if (skip_past_comma (&str) == SUCCESS) { /* You are here: "]{!}". */ inst.instruction |= PRE_INDEX; - offset = cirrus_parse_offset (&str, &negative); + offset = mav_parse_offset (&str, &negative); if (inst.error) return; @@ -6742,7 +8520,7 @@ do_c_ldst (str, flags, mode) } if (skip_past_comma (&str) == FAIL - || (offset = cirrus_parse_offset (&str, &negative), inst.error)) + || (offset = mav_parse_offset (&str, &negative), inst.error)) goto fail_ldst; inst.instruction |= CP_T_WB; /* Post indexed, set bit W. */ @@ -6754,8 +8532,6 @@ do_c_ldst (str, flags, mode) inst.instruction |= CP_T_UD; /* Postive, so set bit U. */ inst.instruction |= offset >> 2; - inst.instruction |= flags; - end_of_line (str); return; @@ -6965,7 +8741,7 @@ do_t_ldmstm (str) return; if (*str != '!') - as_warn (_("Inserted missing '!': load/store multiple always writes back base register")); + as_warn (_("inserted missing '!': load/store multiple always writes back base register")); else str++; @@ -6981,7 +8757,7 @@ do_t_ldmstm (str) { /* This really doesn't seem worth it. */ inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("Expression too complex"); + inst.error = _("expression too complex"); return; } @@ -7033,7 +8809,7 @@ do_t_lds (str) || *str++ != ']') { if (! inst.error) - inst.error = _("Syntax: ldrs[b] Rd, [Rb, Ro]"); + inst.error = _("syntax: ldrs[b] Rd, [Rb, Ro]"); return; } @@ -7081,7 +8857,7 @@ do_t_push_pop (str) { /* This really doesn't seem worth it. */ inst.reloc.type = BFD_RELOC_NONE; - inst.error = _("Expression too complex"); + inst.error = _("expression too complex"); return; } @@ -7178,10 +8954,11 @@ do_t_adr (str) } static void -insert_reg (entry) - int entry; +insert_reg (r, htab) + const struct reg_entry *r; + struct hash_control *htab; { - int len = strlen (reg_table[entry].name) + 2; + int len = strlen (r->name) + 2; char * buf = (char *) xmalloc (len); char * buf2 = (char *) xmalloc (len); int i = 0; @@ -7190,21 +8967,35 @@ insert_reg (entry) buf[i++] = REGISTER_PREFIX; #endif - strcpy (buf + i, reg_table[entry].name); + strcpy (buf + i, r->name); for (i = 0; buf[i]; i++) buf2[i] = TOUPPER (buf[i]); buf2[i] = '\0'; - hash_insert (arm_reg_hsh, buf, (PTR) & reg_table[entry]); - hash_insert (arm_reg_hsh, buf2, (PTR) & reg_table[entry]); + hash_insert (htab, buf, (PTR) r); + hash_insert (htab, buf2, (PTR) r); +} + +static void +build_reg_hsh (map) + struct reg_map *map; +{ + const struct reg_entry *r; + + if ((map->htab = hash_new ()) == NULL) + as_fatal (_("virtual memory exhausted")); + + for (r = map->names; r->name != NULL; r++) + insert_reg (r, map->htab); } static void -insert_reg_alias (str, regnum) +insert_reg_alias (str, regnum, htab) char *str; int regnum; + struct hash_control *htab; { struct reg_entry *new = (struct reg_entry *) xmalloc (sizeof (struct reg_entry)); @@ -7214,9 +9005,95 @@ insert_reg_alias (str, regnum) new->name = name; new->number = regnum; - hash_insert (arm_reg_hsh, name, (PTR) new); + hash_insert (htab, name, (PTR) new); } +/* Look for the .req directive. This is of the form: + + newname .req existing_name + + If we find one, or if it looks sufficiently like one that we want to + handle any error here, return non-zero. Otherwise return zero. */ +static int +create_register_alias (newname, p) + char *newname; + char *p; +{ + char *q; + char c; + + q = p; + skip_whitespace (q); + + c = *p; + *p = '\0'; + + if (*q && !strncmp (q, ".req ", 5)) + { + char *copy_of_str; + char *r; + +#ifdef IGNORE_OPCODE_CASE + newname = original_case_string; +#endif + copy_of_str = newname; + + q += 4; + skip_whitespace (q); + + for (r = q; *r != '\0'; r++) + if (*r == ' ') + break; + + if (r != q) + { + enum arm_reg_type new_type, old_type; + int old_regno; + char d = *r; + + *r = '\0'; + old_type = arm_reg_parse_any (q); + *r = d; + + new_type = arm_reg_parse_any (newname); + + if (new_type == REG_TYPE_MAX) + { + if (old_type != REG_TYPE_MAX) + { + old_regno = arm_reg_parse (&q, all_reg_maps[old_type].htab); + insert_reg_alias (newname, old_regno, + all_reg_maps[old_type].htab); + } + else + as_warn (_("register '%s' does not exist\n"), q); + } + else if (old_type == REG_TYPE_MAX) + { + as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"), + copy_of_str, q); + } + else + { + /* Do not warn about redefinitions to the same alias. */ + if (new_type != old_type + || (arm_reg_parse (&q, all_reg_maps[old_type].htab) + != arm_reg_parse (&q, all_reg_maps[new_type].htab))) + as_warn (_("ignoring redefinition of register alias '%s'"), + copy_of_str); + + } + } + else + as_warn (_("ignoring incomplete .req pseuso op")); + + *p = c; + return 1; + } + *p = c; + return 0; +} + static void set_constant_flonums () { @@ -7227,6 +9104,54 @@ set_constant_flonums () abort (); } +/* Iterate over the base tables to create the instruction patterns. */ +static void +build_arm_ops_hsh () +{ + unsigned int i; + unsigned int j; + static struct obstack insn_obstack; + + obstack_begin (&insn_obstack, 4000); + + for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++) + { + const struct asm_opcode *insn = insns + i; + + if (insn->cond_offset != 0) + { + /* Insn supports conditional execution. Build the varaints + and insert them in the hash table. */ + for (j = 0; j < sizeof (conds) / sizeof (struct asm_cond); j++) + { + unsigned len = strlen (insn->template); + struct asm_opcode *new; + char *template; + + new = obstack_alloc (&insn_obstack, sizeof (struct asm_opcode)); + /* All condition codes are two characters. */ + template = obstack_alloc (&insn_obstack, len + 3); + + strncpy (template, insn->template, insn->cond_offset); + strcpy (template + insn->cond_offset, conds[j].template); + if (len > insn->cond_offset) + strcpy (template + insn->cond_offset + 2, + insn->template + insn->cond_offset); + new->template = template; + new->cond_offset = 0; + new->variant = insn->variant; + new->parms = insn->parms; + new->value = (insn->value & ~COND_MASK) | conds[j].value; + + hash_insert (arm_ops_hsh, new->template, (PTR) new); + } + } + /* Finally, insert the unconditional insn in the table directly; + no need to build a copy. */ + hash_insert (arm_ops_hsh, insn->template, (PTR) insn); + } +} + void md_begin () { @@ -7237,12 +9162,10 @@ md_begin () || (arm_tops_hsh = hash_new ()) == NULL || (arm_cond_hsh = hash_new ()) == NULL || (arm_shift_hsh = hash_new ()) == NULL - || (arm_reg_hsh = hash_new ()) == NULL || (arm_psr_hsh = hash_new ()) == NULL) - as_fatal (_("Virtual memory exhausted")); + as_fatal (_("virtual memory exhausted")); - for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++) - hash_insert (arm_ops_hsh, insns[i].template, (PTR) (insns + i)); + build_arm_ops_hsh (); for (i = 0; i < sizeof (tinsns) / sizeof (struct thumb_opcode); i++) hash_insert (arm_tops_hsh, tinsns[i].template, (PTR) (tinsns + i)); for (i = 0; i < sizeof (conds) / sizeof (struct asm_cond); i++) @@ -7252,11 +9175,55 @@ md_begin () for (i = 0; i < sizeof (psrs) / sizeof (struct asm_psr); i++) hash_insert (arm_psr_hsh, psrs[i].template, (PTR) (psrs + i)); - for (i = 0; reg_table[i].name; i++) - insert_reg (i); + for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) + build_reg_hsh (all_reg_maps + i); set_constant_flonums (); + /* Set the cpu variant based on the command-line options. We prefer + -mcpu= over -march= if both are set (as for GCC); and we prefer + -mfpu= over any other way of setting the floating point unit. + Use of legacy options with new options are faulted. */ + if (legacy_cpu != -1) + { + if (mcpu_cpu_opt != -1 || march_cpu_opt != -1) + as_bad (_("use of old and new-style options to set CPU type")); + + mcpu_cpu_opt = legacy_cpu; + } + else if (mcpu_cpu_opt == -1) + mcpu_cpu_opt = march_cpu_opt; + + if (legacy_fpu != -1) + { + if (mfpu_opt != -1) + as_bad (_("use of old and new-style options to set FPU type")); + + mfpu_opt = legacy_fpu; + } + else if (mfpu_opt == -1) + { + if (mcpu_fpu_opt != -1) + mfpu_opt = mcpu_fpu_opt; + else + mfpu_opt = march_fpu_opt; + } + + if (mfpu_opt == -1) + { + if (mcpu_cpu_opt == -1) + mfpu_opt = FPU_DEFAULT; + else if (mcpu_cpu_opt & ARM_EXT_V5) + mfpu_opt = FPU_ARCH_VFP_V2; + else + mfpu_opt = FPU_ARCH_FPA; + } + + if (mcpu_cpu_opt == -1) + mcpu_cpu_opt = CPU_DEFAULT; + + cpu_variant = mcpu_cpu_opt | mfpu_opt; + #if defined OBJ_COFF || defined OBJ_ELF { unsigned int flags = 0; @@ -7266,7 +9233,12 @@ md_begin () if (support_interwork) flags |= F_INTERWORK; if (uses_apcs_float) flags |= F_APCS_FLOAT; if (pic_code) flags |= F_PIC; - if ((cpu_variant & FPU_ANY) == FPU_NONE) flags |= F_SOFT_FLOAT; + if ((cpu_variant & FPU_ANY) == FPU_NONE + || (cpu_variant & FPU_ANY) == FPU_ARCH_VFP) /* VFP layout only. */ + flags |= F_SOFT_FLOAT; + /* Using VFP conventions (even if soft-float). */ + if (cpu_variant & FPU_VFP_EXT_NONE) flags |= F_VFP_FLOAT; + bfd_set_private_flags (stdoutput, flags); @@ -7308,11 +9280,10 @@ md_begin () default: mach = bfd_mach_arm_4; break; - } /* Catch special cases. */ - if (cpu_variant & ARM_EXT_XSCALE) + if (cpu_variant & ARM_CEXT_XSCALE) mach = bfd_mach_arm_XScale; else if (cpu_variant & ARM_EXT_V5E) mach = bfd_mach_arm_5TE; @@ -7436,7 +9407,7 @@ md_atof (type, litP, sizeP) default: *sizeP = 0; - return _("Bad call to MD_ATOF()"); + return _("bad call to MD_ATOF()"); } t = atof_ieee (input_line_pointer, type, words); @@ -7454,14 +9425,21 @@ md_atof (type, litP, sizeP) } else { - /* For a 4 byte float the order of elements in `words' is 1 0. For an - 8 byte float the order is 1 0 3 2. */ - for (i = 0; i < prec; i += 2) - { - md_number_to_chars (litP, (valueT) words[i + 1], 2); - md_number_to_chars (litP + 2, (valueT) words[i], 2); - litP += 4; - } + if (cpu_variant & FPU_ARCH_VFP) + for (i = prec - 1; i >= 0; i--) + { + md_number_to_chars (litP, (valueT) words[i], 2); + litP += 2; + } + else + /* For a 4 byte float the order of elements in `words' is 1 0. + For an 8 byte float the order is 1 0 3 2. */ + for (i = 0; i < prec; i += 2) + { + md_number_to_chars (litP, (valueT) words[i + 1], 2); + md_number_to_chars (litP + 2, (valueT) words[i], 2); + litP += 4; + } } return 0; @@ -7542,8 +9520,9 @@ md_undefined_symbol (name) advance the pointer. */ static int -arm_reg_parse (ccp) +arm_reg_parse (ccp, htab) register char ** ccp; + struct hash_control *htab; { char * start = * ccp; char c; @@ -7569,7 +9548,7 @@ arm_reg_parse (ccp) c = *p++; *--p = 0; - reg = (struct reg_entry *) hash_find (arm_reg_hsh, start); + reg = (struct reg_entry *) hash_find (htab, start); *p = c; if (reg) @@ -7581,6 +9560,22 @@ arm_reg_parse (ccp) return FAIL; } +/* Search for the following register name in each of the possible reg name + tables. Return the classification if found, or REG_TYPE_MAX if not + present. */ +static enum arm_reg_type +arm_reg_parse_any (cp) + char *cp; +{ + int i; + + for (i = (int) REG_TYPE_FIRST; i < (int) REG_TYPE_MAX; i++) + if (arm_reg_parse (&cp, all_reg_maps[i].htab) != FAIL) + return (enum arm_reg_type) i; + + return REG_TYPE_MAX; +} + void md_apply_fix3 (fixP, valP, seg) fixS * fixP; @@ -7678,7 +9673,7 @@ md_apply_fix3 (fixP, valP, seg) else { as_bad_where (fixP->fx_file, fixP->fx_line, - _("Unable to compute ADRL instructions for PC offset of 0x%lx"), + _("unable to compute ADRL instructions for PC offset of 0x%lx"), value); break; } @@ -7788,7 +9783,7 @@ md_apply_fix3 (fixP, valP, seg) { if (((unsigned long) value) > 0xff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid swi expression")); + _("invalid swi expression")); newval = md_chars_to_number (buf, THUMB_SIZE) & 0xff00; newval |= value; md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7797,7 +9792,7 @@ md_apply_fix3 (fixP, valP, seg) { if (((unsigned long) value) > 0x00ffffff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid swi expression")); + _("invalid swi expression")); newval = md_chars_to_number (buf, INSN_SIZE) & 0xff000000; newval |= value; md_number_to_chars (buf, newval, INSN_SIZE); @@ -7807,7 +9802,7 @@ md_apply_fix3 (fixP, valP, seg) case BFD_RELOC_ARM_MULTI: if (((unsigned long) value) > 0xffff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid expression in load/store multiple")); + _("invalid expression in load/store multiple")); newval = value | md_chars_to_number (buf, INSN_SIZE); md_number_to_chars (buf, newval, INSN_SIZE); break; @@ -7860,7 +9855,7 @@ md_apply_fix3 (fixP, valP, seg) if (! fixP->fx_done) #endif as_bad_where (fixP->fx_file, fixP->fx_line, - _("gas can't handle same-section branch dest >= 0x04000000")); + _("GAS can't handle same-section branch dest >= 0x04000000")); } value >>= 2; @@ -7902,7 +9897,7 @@ md_apply_fix3 (fixP, valP, seg) value += diff; if ((value & ~0xff) && ((value & ~0xff) != ~0xff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch out of range")); + _("branch out of range")); newval = (newval & 0xff00) | ((value & 0x1ff) >> 1); } md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7918,7 +9913,7 @@ md_apply_fix3 (fixP, valP, seg) value += diff; if ((value & ~0x7ff) && ((value & ~0x7ff) != ~0x7ff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch out of range")); + _("branch out of range")); newval = (newval & 0xf800) | ((value & 0xfff) >> 1); } md_number_to_chars (buf, newval, THUMB_SIZE); @@ -7941,7 +9936,7 @@ md_apply_fix3 (fixP, valP, seg) value += diff; if ((value & ~0x3fffff) && ((value & ~0x3fffff) != ~0x3fffff)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Branch with link out of range")); + _("branch with link out of range")); newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12); newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1); @@ -8017,7 +10012,7 @@ md_apply_fix3 (fixP, valP, seg) sign = value >= 0; if (value < -1023 || value > 1023 || (value & 3)) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Illegal value for co-processor offset")); + _("illegal value for co-processor offset")); if (value < 0) value = -value; newval = md_chars_to_number (buf, INSN_SIZE) & 0xff7fff00; @@ -8041,13 +10036,13 @@ md_apply_fix3 (fixP, valP, seg) if ((fixP->fx_frag->fr_address + fixP->fx_where + value) & 3) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, target not word aligned (0x%08X)"), + _("invalid offset, target not word aligned (0x%08X)"), (unsigned int) (fixP->fx_frag->fr_address + fixP->fx_where + value)); if ((value + 2) & ~0x3fe) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); /* Round up, since pc will be rounded down. */ newval |= (value + 2) >> 2; @@ -8056,28 +10051,28 @@ md_apply_fix3 (fixP, valP, seg) case 9: /* SP load/store. */ if (value & ~0x3fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value >> 2; break; case 6: /* Word load/store. */ if (value & ~0x7c) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 4; /* 6 - 2. */ break; case 7: /* Byte load/store. */ if (value & ~0x1f) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 6; break; case 8: /* Halfword load/store. */ if (value & ~0x3e) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid offset, value too big (0x%08lX)"), value); + _("invalid offset, value too big (0x%08lX)"), value); newval |= value << 5; /* 6 - 1. */ break; @@ -8116,7 +10111,7 @@ md_apply_fix3 (fixP, valP, seg) { if (value & ~0x1fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate for stack address calculation")); + _("invalid immediate for stack address calculation")); newval = subtract ? T_OPCODE_SUB_ST : T_OPCODE_ADD_ST; newval |= value >> 2; } @@ -8125,7 +10120,7 @@ md_apply_fix3 (fixP, valP, seg) if (subtract || value & ~0x3fc) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate for address calculation (value = 0x%08lX)"), + _("invalid immediate for address calculation (value = 0x%08lX)"), (unsigned long) value); newval = (rs == REG_PC ? T_OPCODE_ADD_PC : T_OPCODE_ADD_SP); newval |= rd << 8; @@ -8135,7 +10130,7 @@ md_apply_fix3 (fixP, valP, seg) { if (value & ~0xff) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid 8bit immediate")); + _("invalid 8bit immediate")); newval = subtract ? T_OPCODE_SUB_I8 : T_OPCODE_ADD_I8; newval |= (rd << 8) | value; } @@ -8143,7 +10138,7 @@ md_apply_fix3 (fixP, valP, seg) { if (value & ~0x7) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid 3bit immediate")); + _("invalid 3bit immediate")); newval = subtract ? T_OPCODE_SUB_I3 : T_OPCODE_ADD_I3; newval |= rd | (rs << 3) | (value << 6); } @@ -8159,7 +10154,7 @@ md_apply_fix3 (fixP, valP, seg) case 0x05: /* 8bit immediate CMP. */ if (value < 0 || value > 255) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Invalid immediate: %ld is too large"), + _("invalid immediate: %ld is too large"), (long) value); newval |= value; break; @@ -8174,7 +10169,7 @@ md_apply_fix3 (fixP, valP, seg) /* 5bit shift value (0..31). */ if (value < 0 || value > 31) as_bad_where (fixP->fx_file, fixP->fx_line, - _("Illegal Thumb shift value: %ld"), (long) value); + _("illegal Thumb shift value: %ld"), (long) value); newval = md_chars_to_number (buf, THUMB_SIZE) & 0xf03f; newval |= value << 6; md_number_to_chars (buf, newval, THUMB_SIZE); @@ -8188,7 +10183,7 @@ md_apply_fix3 (fixP, valP, seg) case BFD_RELOC_NONE: default: as_bad_where (fixP->fx_file, fixP->fx_line, - _("Bad relocation fixup type (%d)"), fixP->fx_r_type); + _("bad relocation fixup type (%d)"), fixP->fx_r_type); } } @@ -8259,7 +10254,7 @@ tc_gen_reloc (section, fixp) /* If this is called then the a literal has been referenced across a section boundary - possibly due to an implicit dump. */ as_bad_where (fixp->fx_file, fixp->fx_line, - _("Literal referenced across section boundary (Implicit dump?)")); + _("literal referenced across section boundary (Implicit dump?)")); return NULL; #ifdef OBJ_ELF @@ -8272,7 +10267,7 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_ARM_IMMEDIATE: as_bad_where (fixp->fx_file, fixp->fx_line, - _("Internal_relocation (type %d) not fixed up (IMMEDIATE)"), + _("internal relocation (type %d) not fixed up (IMMEDIATE)"), fixp->fx_r_type); return NULL; @@ -8283,7 +10278,7 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_ARM_OFFSET_IMM: as_bad_where (fixp->fx_file, fixp->fx_line, - _("Internal_relocation (type %d) not fixed up (OFFSET_IMM)"), + _("internal_relocation (type %d) not fixed up (OFFSET_IMM)"), fixp->fx_r_type); return NULL; @@ -8307,7 +10302,7 @@ tc_gen_reloc (section, fixp) default: type = _(""); break; } as_bad_where (fixp->fx_file, fixp->fx_line, - _("Cannot represent %s relocation in this object file format"), + _("cannot represent %s relocation in this object file format"), type); return NULL; } @@ -8328,7 +10323,7 @@ tc_gen_reloc (section, fixp) if (reloc->howto == NULL) { as_bad_where (fixp->fx_file, fixp->fx_line, - _("Can not represent %s relocation in this object file format"), + _("cannot represent %s relocation in this object file format"), bfd_get_reloc_code_name (code)); return NULL; } @@ -8351,13 +10346,14 @@ md_estimate_size_before_relax (fragP, se } static void -output_inst PARAMS ((void)) +output_inst (str) + const char *str; { char * to = NULL; if (inst.error) { - as_bad (inst.error); + as_bad ("%s -- `%s'", inst.error, str); return; } @@ -8392,10 +10388,9 @@ void md_assemble (str) char * str; { - char c; - char * p; - char * q; - char * start; + char c; + char *p; + char *start; /* Align the instruction. This may not be the right thing to do but ... */ @@ -8425,7 +10420,7 @@ md_assemble (str) if (p == str) { - as_bad (_("No operator -- statement `%s'\n"), str); + as_bad (_("no operator -- statement `%s'\n"), str); return; } @@ -8441,245 +10436,84 @@ md_assemble (str) if (opcode) { /* Check that this instruction is supported for this CPU. */ - if (thumb_mode == 1 && (opcode->variants & cpu_variant) == 0) - { - as_bad (_("selected processor does not support this opcode")); - return; - } - - inst.instruction = opcode->value; - inst.size = opcode->size; - (*opcode->parms) (p); - output_inst (); - return; - } - } - else - { - const struct asm_opcode * opcode; - unsigned long cond_code; - - inst.size = INSN_SIZE; - /* P now points to the end of the opcode, probably white space, but we - have to break the opcode up in case it contains condionals and flags; - keep trying with progressively smaller basic instructions until one - matches, or we run out of opcode. */ - q = (p - str > LONGEST_INST) ? str + LONGEST_INST : p; - - for (; q != str; q--) - { - c = *q; - *q = '\0'; - - opcode = (const struct asm_opcode *) hash_find (arm_ops_hsh, str); - *q = c; - - if (opcode && opcode->template) + if (thumb_mode == 1 && (opcode->variant & cpu_variant) == 0) { - unsigned long flag_bits = 0; - char * r; - - /* Check that this instruction is supported for this CPU. */ - if ((opcode->variants & cpu_variant) == 0) - goto try_shorter; - - inst.instruction = opcode->value; - if (q == p) /* Just a simple opcode. */ - { - if (opcode->comp_suffix) - { - if (*opcode->comp_suffix != '\0') - as_bad (_("Opcode `%s' must have suffix from list: <%s>"), - str, opcode->comp_suffix); - else - /* Not a conditional instruction. */ - (*opcode->parms) (q, 0); - } - else - { - /* A conditional instruction with default condition. */ - inst.instruction |= COND_ALWAYS; - (*opcode->parms) (q, 0); - } - output_inst (); - return; - } - - /* Not just a simple opcode. Check if extra is a - conditional. */ - r = q; - if (p - r >= 2) - { - const struct asm_cond *cond; - char d = *(r + 2); - - *(r + 2) = '\0'; - cond = (const struct asm_cond *) hash_find (arm_cond_hsh, r); - *(r + 2) = d; - if (cond) - { - if (cond->value == 0xf0000000) - as_tsktsk ( -_("Warning: Use of the 'nv' conditional is deprecated\n")); - - cond_code = cond->value; - r += 2; - } - else - cond_code = COND_ALWAYS; - } - else - cond_code = COND_ALWAYS; - - /* Apply the conditional, or complain it's not allowed. */ - if (opcode->comp_suffix && *opcode->comp_suffix == '\0') - { - /* Instruction isn't conditional. */ - if (cond_code != COND_ALWAYS) - { - as_bad (_("Opcode `%s' is unconditional\n"), str); - return; - } - } - else - /* Instruction is conditional: set the condition into it. */ - inst.instruction |= cond_code; - - /* If there is a compulsory suffix, it should come here - before any optional flags. */ - if (opcode->comp_suffix && *opcode->comp_suffix != '\0') - { - const char *s = opcode->comp_suffix; - - while (*s) - { - inst.suffix++; - if (*r == *s) - break; - s++; - } - - if (*s == '\0') - { - as_bad (_("Opcode `%s' must have suffix from <%s>\n"), - str, opcode->comp_suffix); - return; - } - - r++; - } - - /* The remainder, if any should now be flags for the instruction; - Scan these checking each one found with the opcode. */ - if (r != p) - { - char d; - const struct asm_flg *flag = opcode->flags; - - if (flag) - { - int flagno; - - d = *p; - *p = '\0'; - - for (flagno = 0; flag[flagno].template; flagno++) - { - if (streq (r, flag[flagno].template)) - { - flag_bits |= flag[flagno].set_bits; - break; - } - } - - *p = d; - if (! flag[flagno].template) - goto try_shorter; - } - else - goto try_shorter; - } - - (*opcode->parms) (p, flag_bits); - output_inst (); - return; - } - - try_shorter: - ; - } - } - - /* It wasn't an instruction, but it might be a register alias of the form - alias .req reg. */ - q = p; - skip_whitespace (q); - - c = *p; - *p = '\0'; - - if (*q && !strncmp (q, ".req ", 4)) - { - int reg; - char * copy_of_str; - char * r; - -#ifdef IGNORE_OPCODE_CASE - str = original_case_string; -#endif - copy_of_str = str; - - q += 4; - skip_whitespace (q); - - for (r = q; *r != '\0'; r++) - if (*r == ' ') - break; - - if (r != q) - { - int regnum; - char d = *r; + as_bad (_("selected processor does not support `%s'"), str); + return; + } - *r = '\0'; - regnum = arm_reg_parse (& q); - *r = d; + inst.instruction = opcode->value; + inst.size = opcode->size; + (*opcode->parms) (p); + output_inst (str); + return; + } + } + else + { + const struct asm_opcode * opcode; - reg = arm_reg_parse (& str); + c = *p; + *p = '\0'; + opcode = (const struct asm_opcode *) hash_find (arm_ops_hsh, str); + *p = c; - if (reg == FAIL) + if (opcode) + { + /* Check that this instruction is supported for this CPU. */ + if ((opcode->variant & cpu_variant) == 0) { - if (regnum != FAIL) - insert_reg_alias (str, regnum); - else - as_warn (_("register '%s' does not exist\n"), q); + as_bad (_("selected processor does not support `%s'"), str); + return; } - else if (regnum != FAIL) - { - if (reg != regnum) - as_warn (_("ignoring redefinition of register alias '%s'"), - copy_of_str); - /* Do not warn about redefinitions to the same alias. */ - } - else - as_warn (_("ignoring redefinition of register alias '%s' to non-existant register '%s'"), - copy_of_str, q); + inst.instruction = opcode->value; + inst.size = INSN_SIZE; + (*opcode->parms) (p); + output_inst (str); + return; } - else - as_warn (_("ignoring incomplete .req pseuso op")); - - *p = c; - return; } - *p = c; + /* It wasn't an instruction, but it might be a register alias of the form + alias .req reg. */ + if (create_register_alias (str, p)) + return; + as_bad (_("bad instruction `%s'"), start); } /* md_parse_option Invocation line includes a switch not recognized by the base assembler. - See if it's a processor-specific option. These are: + 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). + The new options try to make the interface as compatible as + possible with GCC. + + New options (supported) are: + + -mcpu= Assemble for selected processor + -march= Assemble for selected architecture + -mfpu= Assemble for selected FPU. + -EB/-mbig-endian Big-endian + -EL/-mlittle-endian Little-endian + -k Generate PIC code + -mthumb Start in Thumb mode + -mthumb-interwork Code supports ARM/Thumb interworking + + For now we will also provide support for + + -mapcs-32 32-bit Program counter + -mapcs-26 26-bit Program counter + -macps-float Floats passed in FP registers + -mapcs-reentrant Reentrant code + -matpcs + (sometime these will probably be replaced with -mapcs= + and -matpcs=) + + The remaining options are only supported for back-wards compatibility. Cpu variants, the arm part is optional: -m[arm]1 Currently not supported. -m[arm]2, -m[arm]250 Arm 2 and Arm 250 processor @@ -8688,7 +10522,6 @@ _("Warning: Use of the 'nv' conditional -m[arm]7[xx][t][[d]m] Arm 7 processors -m[arm]8[10] Arm 8 processors -m[arm]9[20][tdmi] Arm 9 processors - -marm9e Allow Cirrus/DSP instructions -mstrongarm[110[0]] StrongARM processors -mxscale XScale processors -m[arm]v[2345[t[e]]] Arm architectures @@ -8696,383 +10529,567 @@ _("Warning: Use of the 'nv' conditional FP variants: -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions -mfpe-old (No float load/store multiples) + -mvfpxd VFP Single precision + -mvfp All VFP -mno-fpu Disable all floating point instructions - Run-time endian selection: - -EB big endian cpu - -EL little endian cpu - ARM Procedure Calling Standard: - -mapcs-32 32 bit APCS - -mapcs-26 26 bit APCS - -mapcs-float Pass floats in float regs - -mapcs-reentrant Position independent code - -mthumb-interwork Code supports Arm/Thumb interworking - -matpcs ARM/Thumb Procedure Call Standard - -moabi Old ELF ABI */ -const char * md_shortopts = "m:k"; + The following CPU names are recognized: + arm1, arm2, arm250, arm3, arm6, arm600, arm610, arm620, + arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, arm70, arm700, + arm700i, arm710 arm710t, arm720, arm720t, arm740t, arm710c, + arm7100, arm7500, arm7500fe, arm7tdmi, arm8, arm810, arm9, + arm920, arm920t, arm940t, arm946, arm966, arm9tdmi, arm9e, + arm10t arm10e, arm1020t, arm1020e, arm10200e, + strongarm, strongarm110, strongarm1100, strongarm1110, xscale. + + */ + +CONST char * md_shortopts = "m:k"; -struct option md_longopts[] = -{ #ifdef ARM_BI_ENDIAN #define OPTION_EB (OPTION_MD_BASE + 0) - {"EB", no_argument, NULL, OPTION_EB}, #define OPTION_EL (OPTION_MD_BASE + 1) - {"EL", no_argument, NULL, OPTION_EL}, -#ifdef OBJ_ELF -#define OPTION_OABI (OPTION_MD_BASE +2) - {"oabi", no_argument, NULL, OPTION_OABI}, +#else +#if TARGET_BYTES_BIG_ENDIAN +#define OPTION_EB (OPTION_MD_BASE + 0) +#else +#define OPTION_EL (OPTION_MD_BASE + 1) +#endif #endif + +struct option md_longopts[] = +{ +#ifdef OPTION_EB + {"EB", no_argument, NULL, OPTION_EB}, +#endif +#ifdef OPTION_EL + {"EL", no_argument, NULL, OPTION_EL}, #endif {NULL, no_argument, NULL, 0} }; size_t md_longopts_size = sizeof (md_longopts); -int -md_parse_option (c, arg) - int c; - char * arg; +struct arm_option_table { - char * str = arg; + char *option; /* Option name to match. */ + char *help; /* Help information. */ + int *var; /* Variable to change. */ + int value; /* What to change it to. */ + char *deprecated; /* If non-null, print this message. */ +}; - switch (c) +struct arm_option_table arm_opts[] = +{ + {"k", N_("generate PIC code"), &pic_code, 1, NULL}, + {"mthumb", N_("assemble Thumb code"), &thumb_mode, 1, NULL}, + {"mthumb-interwork", N_("support ARM/Thumb interworking"), + &support_interwork, 1, NULL}, + {"moabi", N_("use old ABI (ELF only)"), &target_oabi, 1, NULL}, + {"mapcs-32", N_("code uses 32-bit program counter"), &uses_apcs_26, 0, NULL}, + {"mapcs-26", N_("code uses 26-bit program counter"), &uses_apcs_26, 1, NULL}, + {"mapcs-float", N_("floating point args are in fp regs"), &uses_apcs_float, + 1, NULL}, + {"mapcs-reentrant", N_("re-entrant code"), &pic_code, 1, NULL}, + {"matpcs", N_("code is ATPCS conformant"), &atpcs, 1, NULL}, + {"mbig-endian", N_("assemble for big-endian"), &target_big_endian, 1, NULL}, + {"mlittle-endian", N_("assemble for little-endian"), &target_big_endian, 1, + NULL}, + + /* These are recognized by the assembler, but have no affect on code. */ + {"mapcs-frame", N_("use frame pointer"), NULL, 0, NULL}, + {"mapcs-stack-check", N_("use stack size checking"), NULL, 0, NULL}, + + /* DON'T add any new processors to this list -- we want the whole list + to go away... Add them to the processors table instead. */ + {"marm1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, + {"m1", NULL, &legacy_cpu, ARM_ARCH_V1, N_("use -mcpu=arm1")}, + {"marm2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, + {"m2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -mcpu=arm2")}, + {"marm250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, + {"m250", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm250")}, + {"marm3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, + {"m3", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -mcpu=arm3")}, + {"marm6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, + {"m6", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm6")}, + {"marm600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, + {"m600", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm600")}, + {"marm610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, + {"m610", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm610")}, + {"marm620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, + {"m620", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm620")}, + {"marm7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, + {"m7", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7")}, + {"marm70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, + {"m70", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm70")}, + {"marm700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, + {"m700", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700")}, + {"marm700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, + {"m700i", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm700i")}, + {"marm710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, + {"m710", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710")}, + {"marm710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, + {"m710c", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm710c")}, + {"marm720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, + {"m720", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm720")}, + {"marm7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, + {"m7d", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7d")}, + {"marm7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, + {"m7di", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7di")}, + {"marm7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, + {"m7m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7m")}, + {"marm7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, + {"m7dm", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dm")}, + {"marm7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, + {"m7dmi", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -mcpu=arm7dmi")}, + {"marm7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, + {"m7100", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7100")}, + {"marm7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, + {"m7500", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500")}, + {"marm7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, + {"m7500fe", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -mcpu=arm7500fe")}, + {"marm7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"m7t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"marm7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"m7tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm7tdmi")}, + {"marm710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, + {"m710t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm710t")}, + {"marm720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, + {"m720t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm720t")}, + {"marm740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, + {"m740t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm740t")}, + {"marm8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, + {"m8", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm8")}, + {"marm810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, + {"m810", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=arm810")}, + {"marm9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, + {"m9", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9")}, + {"marm9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, + {"m9tdmi", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm9tdmi")}, + {"marm920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, + {"m920", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm920")}, + {"marm940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, + {"m940", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -mcpu=arm940")}, + {"mstrongarm", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -mcpu=strongarm")}, + {"mstrongarm110", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm110")}, + {"mstrongarm1100", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm1100")}, + {"mstrongarm1110", NULL, &legacy_cpu, ARM_ARCH_V4, + N_("use -mcpu=strongarm1110")}, + {"mxscale", NULL, &legacy_cpu, ARM_ARCH_XSCALE, N_("use -mcpu=xscale")}, + {"mall", NULL, &legacy_cpu, ARM_ANY, N_("use -mcpu=all")}, + + /* Architecture variants -- don't add any more to this list either. */ + {"mv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, + {"marmv2", NULL, &legacy_cpu, ARM_ARCH_V2, N_("use -march=armv2")}, + {"mv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, + {"marmv2a", NULL, &legacy_cpu, ARM_ARCH_V2S, N_("use -march=armv2a")}, + {"mv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, + {"marmv3", NULL, &legacy_cpu, ARM_ARCH_V3, N_("use -march=armv3")}, + {"mv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, + {"marmv3m", NULL, &legacy_cpu, ARM_ARCH_V3M, N_("use -march=armv3m")}, + {"mv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, + {"marmv4", NULL, &legacy_cpu, ARM_ARCH_V4, N_("use -march=armv4")}, + {"mv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, + {"marmv4t", NULL, &legacy_cpu, ARM_ARCH_V4T, N_("use -march=armv4t")}, + {"mv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, + {"marmv5", NULL, &legacy_cpu, ARM_ARCH_V5, N_("use -march=armv5")}, + {"mv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, + {"marmv5t", NULL, &legacy_cpu, ARM_ARCH_V5T, N_("use -march=armv5t")}, + {"mv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, + {"marmv5e", NULL, &legacy_cpu, ARM_ARCH_V5TE, N_("use -march=armv5te")}, + + /* Floating point variants -- don't add any more to this list either. */ + {"mfpe-old", NULL, &legacy_fpu, FPU_ARCH_FPE, N_("use -mfpu=fpe")}, + {"mfpa10", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa10")}, + {"mfpa11", NULL, &legacy_fpu, FPU_ARCH_FPA, N_("use -mfpu=fpa11")}, + {"mno-fpu", NULL, &legacy_fpu, 0, + N_("use either -mfpu=softfpa or -mfpu=softvfp")}, + + {NULL, NULL, NULL, 0, NULL} +}; + +struct arm_cpu_option_table +{ + char *name; + int value; + /* For some CPUs we assume an FPU unless the user explicitly sets + -mfpu=... */ + int default_fpu; +}; + +/* This list should, at a minimum, contain all the cpu names + recognized by GCC. */ +static struct arm_cpu_option_table arm_cpus[] = +{ + {"all", ARM_ANY, FPU_ARCH_FPA}, + {"arm1", ARM_ARCH_V1, FPU_ARCH_FPA}, + {"arm2", ARM_ARCH_V2, FPU_ARCH_FPA}, + {"arm250", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"arm3", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"arm6", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm60", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm600", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm610", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm620", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7m", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm7d", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7dm", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm7di", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7dmi", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"arm70", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm700", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm700i", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm710", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm710t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm720", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm720t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm740t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm710c", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7100", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7500", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7500fe", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"arm7t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm7tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm8", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"arm810", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm110", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1100", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"strongarm1110", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"arm9", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm920", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm920t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm922t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm940t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"arm9tdmi", ARM_ARCH_V4T, FPU_ARCH_FPA}, + /* For V5 or later processors we default to using VFP; but the user + should really set the FPU type explicitly. */ + {"arm9e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm9e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm926ej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP_V2}, + {"arm946e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm946e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm966e-r0", ARM_ARCH_V5TExP, FPU_ARCH_VFP_V2}, + {"arm966e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm10t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, + {"arm10e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm1020", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + {"arm1020t", ARM_ARCH_V5T, FPU_ARCH_VFP_V1}, + {"arm1020e", ARM_ARCH_V5TE, FPU_ARCH_VFP_V2}, + /* ??? XSCALE is really an architecture. */ + {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, + {"i80200", ARM_ARCH_XSCALE, FPU_ARCH_VFP_V2}, + /* Maverick */ + {"ep9312", ARM_ARCH_V4T | ARM_CEXT_MAVERICK, FPU_NONE}, + {NULL, 0, 0} +}; + +struct arm_arch_option_table +{ + char *name; + int value; + int default_fpu; +}; + +/* This list should, at a minimum, contain all the architecture names + recognized by GCC. */ +static struct arm_arch_option_table arm_archs[] = +{ + {"all", ARM_ANY, FPU_ARCH_FPA}, + {"armv1", ARM_ARCH_V1, FPU_ARCH_FPA}, + {"armv2", ARM_ARCH_V2, FPU_ARCH_FPA}, + {"armv2a", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"armv2s", ARM_ARCH_V2S, FPU_ARCH_FPA}, + {"armv3", ARM_ARCH_V3, FPU_ARCH_FPA}, + {"armv3m", ARM_ARCH_V3M, FPU_ARCH_FPA}, + {"armv4", ARM_ARCH_V4, FPU_ARCH_FPA}, + {"armv4xm", ARM_ARCH_V4xM, FPU_ARCH_FPA}, + {"armv4t", ARM_ARCH_V4T, FPU_ARCH_FPA}, + {"armv4txm", ARM_ARCH_V4TxM, FPU_ARCH_FPA}, + {"armv5", ARM_ARCH_V5, FPU_ARCH_VFP}, + {"armv5t", ARM_ARCH_V5T, FPU_ARCH_VFP}, + {"armv5txm", ARM_ARCH_V5TxM, FPU_ARCH_VFP}, + {"armv5te", ARM_ARCH_V5TE, FPU_ARCH_VFP}, + {"armv5texp", ARM_ARCH_V5TExP, FPU_ARCH_VFP}, + {"armv5tej", ARM_ARCH_V5TEJ, FPU_ARCH_VFP}, + {"xscale", ARM_ARCH_XSCALE, FPU_ARCH_VFP}, + {NULL, 0, 0} +}; + +/* ISA extensions in the co-processor space. */ +struct arm_arch_extension_table +{ + char *name; + int value; +}; + +static struct arm_arch_extension_table arm_extensions[] = +{ + {"maverick", ARM_CEXT_MAVERICK}, + {"xscale", ARM_CEXT_XSCALE}, + {NULL, 0} +}; + +struct arm_fpu_option_table +{ + char *name; + int value; +}; + +/* This list should, at a minimum, contain all the fpu names + recognized by GCC. */ +static struct arm_fpu_option_table arm_fpus[] = +{ + {"softfpa", FPU_NONE}, + {"fpe", FPU_ARCH_FPE}, + {"fpe2", FPU_ARCH_FPE}, + {"fpe3", FPU_ARCH_FPA}, /* Third release supports LFM/SFM. */ + {"fpa", FPU_ARCH_FPA}, + {"fpa10", FPU_ARCH_FPA}, + {"fpa11", FPU_ARCH_FPA}, + {"arm7500fe", FPU_ARCH_FPA}, + {"softvfp", FPU_ARCH_VFP}, + {"softvfp+vfp", FPU_ARCH_VFP_V2}, + {"vfp", FPU_ARCH_VFP_V2}, + {"vfp9", FPU_ARCH_VFP_V2}, + {"vfp10", FPU_ARCH_VFP_V2}, + {"vfp10-r0", FPU_ARCH_VFP_V1}, + {"vfpxd", FPU_ARCH_VFP_V1xD}, + {"arm1020t", FPU_ARCH_VFP_V1}, + {"arm1020e", FPU_ARCH_VFP_V2}, + {NULL, 0} +}; + +struct arm_long_option_table +{ + char *option; /* Substring to match. */ + char *help; /* Help information. */ + int (*func) PARAMS ((char *subopt)); /* Function to decode sub-option. */ + char *deprecated; /* If non-null, print this message. */ +}; + +static int +arm_parse_extension (str, opt_p) + char *str; + int *opt_p; +{ + while (str != NULL && *str != 0) { -#ifdef ARM_BI_ENDIAN - case OPTION_EB: - target_big_endian = 1; - break; - case OPTION_EL: - target_big_endian = 0; - break; -#endif + struct arm_arch_extension_table *opt; + char *ext; + int optlen; - case 'm': - switch (*str) + if (*str != '+') { - case 'f': - if (streq (str, "fpa10") || streq (str, "fpa11")) - cpu_variant = (cpu_variant & ~FPU_ANY) | FPU_ARCH_FPA; - else if (streq (str, "fpe-old")) - cpu_variant = (cpu_variant & ~FPU_ANY) | FPU_ARCH_FPE; - else - goto bad; - break; + as_bad (_("invalid architectural extension")); + return 0; + } - case 'n': - if (streq (str, "no-fpu")) - cpu_variant &= ~FPU_ANY; - break; + str++; + ext = strchr (str, '+'); -#ifdef OBJ_ELF - case 'o': - if (streq (str, "oabi")) - target_oabi = true; - break; -#endif + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - case 't': - /* Limit assembler to generating only Thumb instructions: */ - if (streq (str, "thumb")) - { - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_EXT_V4T; - cpu_variant = (cpu_variant & ~FPU_ANY) | FPU_NONE; - thumb_mode = 1; - } - else if (streq (str, "thumb-interwork")) - { - if ((cpu_variant & ARM_EXT_V4T) == 0) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4T; -#if defined OBJ_COFF || defined OBJ_ELF - support_interwork = true; -#endif - } - else - goto bad; - break; + if (optlen == 0) + { + as_bad (_("missing architectural extension")); + return 0; + } - default: - if (streq (str, "all")) - { - cpu_variant = ARM_ALL | FPU_DEFAULT; - return 1; - } -#if defined OBJ_COFF || defined OBJ_ELF - if (! strncmp (str, "apcs-", 5)) - { - /* GCC passes on all command line options starting "-mapcs-..." - to us, so we must parse them here. */ + for (opt = arm_extensions; opt->name != NULL; opt++) + if (strncmp (opt->name, str, optlen) == 0) + { + *opt_p |= opt->value; + break; + } - str += 5; + if (opt->name == NULL) + { + as_bad (_("unknown architectural extnsion `%s'"), str); + return 0; + } - if (streq (str, "32")) - { - uses_apcs_26 = false; - return 1; - } - else if (streq (str, "26")) - { - uses_apcs_26 = true; - return 1; - } - else if (streq (str, "frame")) - { - /* Stack frames are being generated - does not affect - linkage of code. */ - return 1; - } - else if (streq (str, "stack-check")) - { - /* Stack checking is being performed - does not affect - linkage, but does require that the functions - __rt_stkovf_split_small and __rt_stkovf_split_big be - present in the final link. */ + str = ext; + }; - return 1; - } - else if (streq (str, "float")) - { - /* Floating point arguments are being passed in the floating - point registers. This does affect linking, since this - version of the APCS is incompatible with the version that - passes floating points in the integer registers. */ + return 1; +} - uses_apcs_float = true; - return 1; - } - else if (streq (str, "reentrant")) - { - /* Reentrant code has been generated. This does affect - linking, since there is no point in linking reentrant/ - position independent code with absolute position code. */ - pic_code = true; - return 1; - } +static int +arm_parse_cpu (str) + char *str; +{ + struct arm_cpu_option_table *opt; + char *ext = strchr (str, '+'); + int optlen; - as_bad (_("Unrecognised APCS switch -m%s"), arg); - return 0; - } + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - if (! strcmp (str, "atpcs")) - { - atpcs = true; - return 1; - } -#endif - /* Strip off optional "arm". */ - if (! strncmp (str, "arm", 3)) - str += 3; - - switch (*str) - { - case '1': - if (streq (str, "1")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_1; - else - goto bad; - break; + if (optlen == 0) + { + as_bad (_("missing cpu name `%s'"), str); + return 0; + } - case '2': - if (streq (str, "2")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2; - else if (streq (str, "250")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_250; - else - goto bad; - break; + for (opt = arm_cpus; opt->name != NULL; opt++) + if (strncmp (opt->name, str, optlen) == 0) + { + mcpu_cpu_opt = opt->value; + mcpu_fpu_opt = opt->default_fpu; - case '3': - if (streq (str, "3")) - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3; - else - goto bad; - break; + if (ext != NULL) + return arm_parse_extension (ext, &mcpu_cpu_opt); - case '6': - switch (strtol (str, NULL, 10)) - { - case 6: - case 60: - case 600: - case 610: - case 620: - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_6; - break; - default: - goto bad; - } - break; + return 1; + } - case '7': - /* Eat the processor name. */ - switch (strtol (str, & str, 10)) - { - case 7: - case 70: - case 700: - case 710: - case 720: - case 7100: - case 7500: - break; - default: - goto bad; - } - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7; - for (; *str; str++) - { - switch (*str) - { - case 't': - cpu_variant |= ARM_ARCH_V4T; - break; - - case 'm': - cpu_variant |= ARM_EXT_V3M; - break; - - case 'f': /* fe => fp enabled cpu. */ - if (str[1] == 'e') - ++ str; - else - goto bad; + as_bad (_("unknown cpu `%s'"), str); + return 0; +} - case 'c': /* Left over from 710c processor name. */ - case 'd': /* Debug. */ - case 'i': /* Embedded ICE. */ - /* Included for completeness in ARM processor naming. */ - break; +static int +arm_parse_arch (str) + char *str; +{ + struct arm_arch_option_table *opt; + char *ext = strchr (str, '+'); + int optlen; - default: - goto bad; - } - } - break; + if (ext != NULL) + optlen = ext - str; + else + optlen = strlen (str); - case '8': - if (streq (str, "8") || streq (str, "810")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_8 | ARM_ARCH_V4; - else - goto bad; - break; + if (optlen == 0) + { + as_bad (_("missing architecture name `%s'"), str); + return 0; + } - case '9': - if (streq (str, "9")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else if (streq (str, "920")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4; - else if (streq (str, "920t")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else if (streq (str, "9tdmi")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T; - else if (streq (str, "9e")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_9 | ARM_ARCH_V4T | ARM_EXT_MAVERICK; - else - goto bad; - break; - case 's': - if (streq (str, "strongarm") - || streq (str, "strongarm110") - || streq (str, "strongarm1100")) - cpu_variant = (cpu_variant & ~ARM_ANY) - | ARM_8 | ARM_ARCH_V4; - else - goto bad; - break; + for (opt = arm_archs; opt->name != NULL; opt++) + if (strcmp (opt->name, str) == 0) + { + march_cpu_opt = opt->value; + march_fpu_opt = opt->default_fpu; - case 'x': - if (streq (str, "xscale")) - cpu_variant = ARM_9 | ARM_ARCH_XSCALE; - else - goto bad; - break; - - case 'v': - /* Select variant based on architecture rather than - processor. */ - switch (*++str) - { - case '2': - switch (*++str) - { - case 'a': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_3; - break; - case 0: - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_2; - break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + if (ext != NULL) + return arm_parse_extension (ext, &march_cpu_opt); - case '3': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7; + return 1; + } - switch (*++str) - { - case 'm': cpu_variant |= ARM_EXT_V3M; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + as_bad (_("unknown architecture `%s'\n"), str); + return 0; +} - case '4': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7 | ARM_ARCH_V4; +static int +arm_parse_fpu (str) + char *str; +{ + struct arm_fpu_option_table *opt; - switch (*++str) - { - case 't': cpu_variant |= ARM_EXT_V4T; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + for (opt = arm_fpus; opt->name != NULL; opt++) + if (strcmp (opt->name, str) == 0) + { + mfpu_opt = opt->value; + return 1; + } - case '5': - cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_9 | ARM_ARCH_V5; - switch (*++str) - { - case 't': cpu_variant |= ARM_EXT_V4T; break; - case 'e': cpu_variant |= ARM_EXT_V5E; break; - case 0: break; - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; + as_bad (_("unknown floating point format `%s'\n"), str); + return 0; +} - default: - as_bad (_("Invalid architecture variant -m%s"), arg); - break; - } - break; +struct arm_long_option_table arm_long_opts[] = +{ + {"mcpu=", N_("\t assemble for CPU "), + arm_parse_cpu, NULL}, + {"march=", N_("\t assemble for architecture "), + arm_parse_arch, NULL}, + {"mfpu=", N_("\t assemble for FPU architecture "), + arm_parse_fpu, NULL}, + {NULL, NULL, 0, NULL} +}; - default: - bad: - as_bad (_("Invalid processor variant -m%s"), arg); - return 0; - } - } +int +md_parse_option (c, arg) + int c; + char * arg; +{ + struct arm_option_table *opt; + struct arm_long_option_table *lopt; + + switch (c) + { +#ifdef OPTION_EB + case OPTION_EB: + target_big_endian = 1; break; +#endif -#if defined OBJ_ELF || defined OBJ_COFF - case 'k': - pic_code = 1; +#ifdef OPTION_EL + case OPTION_EL: + target_big_endian = 0; break; #endif + case 'a': + /* Listing option. Just ignore these, we don't support additional + ones. */ + return 0; + default: + for (opt = arm_opts; opt->option != NULL; opt++) + { + if (c == opt->option[0] + && ((arg == NULL && opt->option[1] == 0) + || strcmp (arg, opt->option + 1) == 0)) + { +#if WARN_DEPRECATED + /* If the option is deprecated, tell the user. */ + if (opt->deprecated != NULL) + as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, + arg ? arg : "", _(opt->deprecated)); +#endif + + if (opt->var != NULL) + *opt->var = opt->value; + + return 1; + } + } + + for (lopt = arm_long_opts; lopt->option != NULL; lopt++) + { + /* These options are expected to have an argument. */ + if (c == lopt->option[0] + && arg != NULL + && strncmp (arg, lopt->option + 1, + strlen (lopt->option + 1)) == 0) + { +#if WARN_DEPRECATED + /* If the option is deprecated, tell the user. */ + if (lopt->deprecated != NULL) + as_tsktsk (_("option `-%c%s' is deprecated: %s"), c, arg, + _(lopt->deprecated)); +#endif + + /* Call the sup-option parser. */ + return (*lopt->func)(arg + strlen (lopt->option) - 1); + } + } + + as_bad (_("unrecognized option `-%c%s'"), c, arg ? arg : ""); return 0; } @@ -9083,33 +11100,27 @@ void md_show_usage (fp) FILE * fp; { + struct arm_option_table *opt; + struct arm_long_option_table *lopt; + + fprintf (fp, _(" ARM-specific assembler options:\n")); + + for (opt = arm_opts; opt->option != NULL; opt++) + if (opt->help != NULL) + fprintf (fp, " -%-23s%s\n", opt->option, _(opt->help)); + + for (lopt = arm_long_opts; lopt->option != NULL; lopt++) + if (lopt->help != NULL) + fprintf (fp, " -%s%s\n", lopt->option, _(lopt->help)); + +#ifdef OPTION_EB fprintf (fp, _("\ - ARM Specific Assembler Options:\n\ - -m[arm][] select processor variant\n\ - -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] select architecture variant\n\ - -marm9e allow Cirrus/DSP instructions\n\ - -mthumb only allow Thumb instructions\n\ - -mthumb-interwork mark the assembled code as supporting interworking\n\ - -mall allow any instruction\n\ - -mfpa10, -mfpa11 select floating point architecture\n\ - -mfpe-old don't allow floating-point multiple instructions\n\ - -mno-fpu don't allow any floating-point instructions.\n\ - -k generate PIC code.\n")); -#if defined OBJ_COFF || defined OBJ_ELF - fprintf (fp, _("\ - -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to use\n\ - -matpcs use ARM/Thumb Procedure Calling Standard\n\ - -mapcs-float floating point args are passed in FP regs\n\ - -mapcs-reentrant the code is position independent/reentrant\n")); -#endif -#ifdef OBJ_ELF - fprintf (fp, _("\ - -moabi support the old ELF ABI\n")); + -EB assemble code for a big-endian cpu\n")); #endif -#ifdef ARM_BI_ENDIAN + +#ifdef OPTION_EL fprintf (fp, _("\ - -EB assemble code for a big endian cpu\n\ - -EL assemble code for a little endian cpu\n")); + -EL assemble code for a little-endian cpu\n")); #endif } diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-arm.h binutils-2.11.93.0.2/gas/config/tc-arm.h --- binutils-2.11.92.0.12.3/gas/config/tc-arm.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-arm.h Sun Feb 3 11:22:31 2002 @@ -169,8 +169,6 @@ void armelf_frob_symbol PARAMS ((symbolS #define OPTIONAL_REGISTER_PREFIX '%' -#define md_operand(x) - #define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L')) #define LOCAL_LABELS_FB 1 #ifdef OBJ_ELF diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-d10v.c binutils-2.11.93.0.2/gas/config/tc-d10v.c --- binutils-2.11.92.0.12.3/gas/config/tc-d10v.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-d10v.c Sun Feb 3 11:22:31 2002 @@ -457,6 +457,13 @@ get_operands (exp) else { exp[numops].X_add_number = OPERAND_ATSIGN; + if (*p == '+') + { + numops++; + exp[numops].X_op = O_absent; + exp[numops].X_add_number = OPERAND_PLUS; + p++; + } post = postfix (p); } numops++; @@ -794,22 +801,14 @@ write_2_short (opcode1, insn1, opcode2, else if (opcode2->unit == MU) insn = FM00 | (insn2 << 15) | insn1; else - { - insn = FM00 | (insn1 << 15) | insn2; - /* Advance over dummy fixup since packed insn1 in L. */ - fx = fx->next; - } + insn = FM00 | (insn1 << 15) | insn2; } else if (opcode1->unit == IU) /* Reverse sequential with IU opcode1 on right and done first. */ insn = FM10 | (insn2 << 15) | insn1; else - { - /* Sequential with non-IU opcode1 on left and done first. */ - insn = FM01 | (insn1 << 15) | insn2; - /* Advance over dummy fixup since packed insn1 in L. */ - fx = fx->next; - } + /* Sequential with non-IU opcode1 on left and done first. */ + insn = FM01 | (insn1 << 15) | insn2; break; case PACK_PARALLEL: @@ -833,11 +832,7 @@ write_2_short (opcode1, insn1, opcode2, insn = FM00 | (insn2 << 15) | insn1; } else - { - insn = FM00 | (insn1 << 15) | insn2; - /* Advance over dummy fixup since packed insn1 in L. */ - fx = fx->next; - } + insn = FM00 | (insn1 << 15) | insn2; break; case PACK_LEFT_RIGHT: @@ -853,8 +848,6 @@ write_2_short (opcode1, insn1, opcode2, as_fatal (_("IU instruction may not be in the left container")); if (opcode1->exec_type & ALONE) as_warn (_("Instruction in R container is squashed by flow control instruction in L container.")); - /* Advance over dummy fixup. */ - fx = fx->next; break; case PACK_RIGHT_LEFT: @@ -870,8 +863,6 @@ write_2_short (opcode1, insn1, opcode2, as_fatal (_("MU instruction may not be in the right container")); if (opcode2->exec_type & ALONE) as_warn (_("Instruction in R container is squashed by flow control instruction in L container.")); - /* Advance over dummy fixup. */ - fx = fx->next; break; default: @@ -881,13 +872,8 @@ write_2_short (opcode1, insn1, opcode2, f = frag_more (4); number_to_chars_bigendian (f, insn, 4); - /* Process fixup chains. - Note that the packing code above advanced fx conditionally. - dlindsay@cygnus.com: There's something subtle going on here involving - _dummy_first_bfd_reloc_code_real. This is related to the - difference between BFD_RELOC_D10V_10_PCREL_R and _L, ie whether - a fixup is done in the L or R container. A bug in this code - can pass Plum Hall fine, yet still affect hand-written assembler. */ + /* Process fixup chains. fx refers to insn2 when j == 0, and to + insn1 when j == 1. Yes, it's reversed. */ for (j = 0; j < 2; j++) { @@ -899,7 +885,18 @@ write_2_short (opcode1, insn1, opcode2, if (fx->fix[i].size == 2) where += 2; - if ((fx->fix[i].reloc == BFD_RELOC_D10V_10_PCREL_R) && (j == 0)) + if (fx->fix[i].reloc == BFD_RELOC_D10V_10_PCREL_R + /* A BFD_RELOC_D10V_10_PCREL_R relocation applied to + the instruction in the L container has to be + adjusted to BDF_RELOC_D10V_10_PCREL_L. When + j==0, we're processing insn2's operands, so we + want to mark the operand if insn2 is *not* in the + R container. When j==1, we're processing insn1's + operands, so we want to mark the operand if insn2 + *is* in the R container. Note that, if two + instructions are identical, we're never going to + swap them, so the test is safe. */ + && j == ((insn & 0x7fff) == insn2)) fx->fix[i].operand |= 1024; if (fx->fix[i].reloc == BFD_RELOC_D10V_18) @@ -1276,7 +1273,8 @@ find_opcode (opcode, myops) if (X_op != O_register || (num & ~flags & (OPERAND_GPR | OPERAND_ACC0 | OPERAND_ACC1 - | OPERAND_FFLAG | OPERAND_CFLAG | OPERAND_CONTROL))) + | OPERAND_FFLAG | OPERAND_CFLAG | OPERAND_CONTROL)) + || ((flags & OPERAND_SP) && ! (num & OPERAND_SP))) { as_bad (_("bad opcode or operands")); return 0; @@ -1385,7 +1383,8 @@ find_opcode (opcode, myops) || (num & ~flags & (OPERAND_GPR | OPERAND_ACC0 | OPERAND_ACC1 | OPERAND_FFLAG | OPERAND_CFLAG - | OPERAND_CONTROL))) + | OPERAND_CONTROL)) + || ((flags & OPERAND_SP) && ! (num & OPERAND_SP))) { match = 0; break; @@ -1461,6 +1460,9 @@ find_opcode (opcode, myops) if ((d10v_operands[opcode->operands[i]].flags & OPERAND_EVEN) && (myops[i].X_add_number & 1)) as_fatal (_("Register number must be EVEN")); + if ((d10v_operands[opcode->operands[i]].flags & OPERAND_NOSP) + && (myops[i].X_add_number & OPERAND_SP)) + as_bad (_("Unsupported use of sp")); if (myops[i].X_op == O_register) { if (!(d10v_operands[opcode->operands[i]].flags & OPERAND_REG)) diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-h8300.c binutils-2.11.93.0.2/gas/config/tc-h8300.c --- binutils-2.11.92.0.12.3/gas/config/tc-h8300.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-h8300.c Sun Feb 3 11:22:31 2002 @@ -813,6 +813,14 @@ check_operand (operand, width, string) fit a 16 bit address truncated into an 8 bit address of something like bset. */ } + else if (strcmp (string, "@") == 0 + && width == 0xffff + && (operand->exp.X_add_number & 0xff8000) == 0xff8000) + { + /* Just ignore this one - which happens when trying to + fit a 24 bit address truncated into a 16 bit address + of something like mov.w. */ + } else { as_warn (_("operand %s0x%lx out of range."), string, diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-hppa.c binutils-2.11.93.0.2/gas/config/tc-hppa.c --- binutils-2.11.92.0.12.3/gas/config/tc-hppa.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-hppa.c Sun Feb 3 11:22:31 2002 @@ -1810,6 +1810,7 @@ pa_ip (str) { /* Handle a completer for an indexing load or store. */ + case 'X': case 'x': { int uu = 0; @@ -1848,6 +1849,7 @@ pa_ip (str) } /* Handle a short load/store completer. */ + case 'M': case 'm': case 'q': case 'J': @@ -1887,9 +1889,9 @@ pa_ip (str) else if (*args == 'e') break; - /* 'J', 'm' and 'q' are the same, except for where they + /* 'J', 'm', 'M' and 'q' are the same, except for where they encode the before/after field. */ - if (*args == 'm') + if (*args == 'm' || *args == 'M') { opcode |= m << 5; INSERT_FIELD_AND_CONTINUE (opcode, a, 13); @@ -1915,6 +1917,7 @@ pa_ip (str) } /* Handle a stbys completer. */ + case 'A': case 's': { int a = 0; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-hppa.h binutils-2.11.93.0.2/gas/config/tc-hppa.h --- binutils-2.11.92.0.12.3/gas/config/tc-hppa.h Fri Mar 9 11:16:55 2001 +++ binutils-2.11.93.0.2/gas/config/tc-hppa.h Sun Feb 3 11:22:31 2002 @@ -68,7 +68,7 @@ #define TARGET_FORMAT "som" #endif -#ifdef TE_LINUX +#if defined(TE_LINUX) || defined(TE_NetBSD) /* Define to compile in an extra assembler option, -c, which enables a warning (once per file) when a comment is encountered. The hppa comment char is a `;' which tends to occur in random C asm diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-i386.c binutils-2.11.93.0.2/gas/config/tc-i386.c --- binutils-2.11.92.0.12.3/gas/config/tc-i386.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-i386.c Sun Feb 3 11:22:31 2002 @@ -48,8 +48,12 @@ #define SCALE1_WHEN_NO_INDEX 1 #endif +#ifndef true #define true 1 +#endif +#ifndef false #define false 0 +#endif static unsigned int mode_from_disp_size PARAMS ((unsigned int)); static int fits_in_signed_byte PARAMS ((offsetT)); diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-ia64.c binutils-2.11.93.0.2/gas/config/tc-ia64.c --- binutils-2.11.92.0.12.3/gas/config/tc-ia64.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-ia64.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* tc-ia64.c -- Assembler for the HP/Intel IA-64 architecture. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of GAS, the GNU Assembler. @@ -719,6 +719,7 @@ static enum operand_match_result operand expressionS *e)); static int parse_operand PARAMS ((expressionS *e)); static struct ia64_opcode * parse_operands PARAMS ((struct ia64_opcode *)); +static int errata_nop_necessary_p PARAMS ((struct slot *, enum ia64_unit)); static void build_insn PARAMS ((struct slot *, bfd_vma *)); static void emit_one_bundle PARAMS ((void)); static void fix_insn PARAMS ((fixS *, const struct ia64_operand *, valueT)); @@ -732,6 +733,7 @@ static void add_qp_imply PARAMS((int p1, static void clear_qp_branch_flag PARAMS((valueT mask)); static void clear_qp_mutex PARAMS((valueT mask)); static void clear_qp_implies PARAMS((valueT p1_mask, valueT p2_mask)); +static int has_suffix_p PARAMS((const char *, const char *)); static void clear_register_values PARAMS ((void)); static void print_dependency PARAMS ((const char *action, int depind)); static void instruction_serialization PARAMS ((void)); @@ -867,8 +869,8 @@ static int generate_unwind_image PARAMS stack, so this must be a macro... */ #define make_unw_section_name(special, text_name, result) \ { \ - char *_prefix = special_section_name[special]; \ - char *_suffix = text_name; \ + const char *_prefix = special_section_name[special]; \ + const char *_suffix = text_name; \ size_t _prefix_len, _suffix_len; \ char *_result; \ if (strncmp (text_name, ".gnu.linkonce.t.", \ @@ -948,23 +950,28 @@ ia64_elf_section_type (str, len) const char *str; size_t len; { - len = sizeof (ELF_STRING_ia64_unwind_info) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind_info, len) == 0) +#define STREQ(s) ((len == sizeof (s) - 1) && (strncmp (str, s, sizeof (s) - 1) == 0)) + + if (STREQ (ELF_STRING_ia64_unwind_info)) return SHT_PROGBITS; - len = sizeof (ELF_STRING_ia64_unwind_info_once) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind_info_once, len) == 0) + if (STREQ (ELF_STRING_ia64_unwind_info_once)) return SHT_PROGBITS; - len = sizeof (ELF_STRING_ia64_unwind) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind, len) == 0) + if (STREQ (ELF_STRING_ia64_unwind)) return SHT_IA_64_UNWIND; - len = sizeof (ELF_STRING_ia64_unwind_once) - 1; - if (strncmp (str, ELF_STRING_ia64_unwind_once, len) == 0) + if (STREQ (ELF_STRING_ia64_unwind_once)) return SHT_IA_64_UNWIND; + if (STREQ ("init_array")) + return SHT_INIT_ARRAY; + + if (STREQ ("fini_array")) + return SHT_FINI_ARRAY; + return -1; +#undef STREQ } static unsigned int @@ -2789,6 +2796,7 @@ static int setup_unwind_header (int size, unsigned char **mem) { int x, extra = 0; + valueT flag_value; /* pad to pointer-size boundry. */ x = size % md.pointer_size; @@ -2801,13 +2809,22 @@ setup_unwind_header (int size, unsigned /* Clear the padding area and personality. */ memset (*mem + 8 + size, 0 , extra + md.pointer_size); + /* Initialize the header area. */ + if (unwind.personality_routine) + { + if (md.flags & EF_IA_64_ABI64) + flag_value = (bfd_vma) 3 << 32; + else + /* 32-bit unwind info block. */ + flag_value = (bfd_vma) 0x1003 << 32; + } + else + flag_value = 0; - md_number_to_chars (*mem, (((bfd_vma) 1 << 48) /* version */ - | (unwind.personality_routine - ? ((bfd_vma) 3 << 32) /* U & E handler flags */ - : 0) - | ((size + extra) / md.pointer_size)), /* length */ + md_number_to_chars (*mem, (((bfd_vma) 1 << 48) /* Version. */ + | flag_value /* U & E handler flags. */ + | ((size + extra) / md.pointer_size)), /* Length. */ 8); return extra; @@ -3218,6 +3235,7 @@ generate_unwind_image (text_name) unsigned char *where; char *sec_name; expressionS exp; + bfd_reloc_code_real_type reloc; make_unw_section_name (SPECIAL_SECTION_UNWIND_INFO, text_name, sec_name); set_section (sec_name); @@ -3247,8 +3265,24 @@ generate_unwind_image (text_name) exp.X_op = O_symbol; exp.X_add_symbol = unwind.personality_routine; exp.X_add_number = 0; - fix_new_exp (frag_now, frag_now_fix () - 8, 8, - &exp, 0, BFD_RELOC_IA64_LTOFF_FPTR64LSB); + + if (md.flags & EF_IA_64_BE) + { + if (md.flags & EF_IA_64_ABI64) + reloc = BFD_RELOC_IA64_LTOFF_FPTR64MSB; + else + reloc = BFD_RELOC_IA64_LTOFF_FPTR32MSB; + } + else + { + if (md.flags & EF_IA_64_ABI64) + reloc = BFD_RELOC_IA64_LTOFF_FPTR64LSB; + else + reloc = BFD_RELOC_IA64_LTOFF_FPTR32LSB; + } + + fix_new_exp (frag_now, frag_now_fix () - md.pointer_size, + md.pointer_size, & exp, 0, reloc); unwind.personality_routine = 0; } } @@ -6310,6 +6344,13 @@ IA-64 options:\n\ stream); } +void +ia64_after_parse_args () +{ + if (debug_type == DEBUG_STABS) + as_fatal (_("--gstabs is not supported for ia64")); +} + /* Return true if TYPE fits in TEMPL at SLOT. */ static int @@ -6605,9 +6646,7 @@ ia64_init (argc, argv) int argc ATTRIBUTE_UNUSED; char **argv ATTRIBUTE_UNUSED; { - md.flags = EF_IA_64_ABI64; - if (TARGET_BYTES_BIG_ENDIAN) - md.flags |= EF_IA_64_BE; + md.flags = MD_FLAGS_DEFAULT; } /* Return a string for the target object file format. */ @@ -6620,14 +6659,18 @@ ia64_target_format () if (md.flags & EF_IA_64_BE) { if (md.flags & EF_IA_64_ABI64) -#ifdef TE_AIX50 +#if defined(TE_AIX50) return "elf64-ia64-aix-big"; +#elif defined(TE_HPUX) + return "elf64-ia64-hpux-big"; #else return "elf64-ia64-big"; #endif else -#ifdef TE_AIX50 +#if defined(TE_AIX50) return "elf32-ia64-aix-big"; +#elif defined(TE_HPUX) + return "elf32-ia64-hpux-big"; #else return "elf32-ia64-big"; #endif @@ -8622,6 +8665,19 @@ add_qp_mutex (mask) qp_mutexes[qp_mutexeslen++].prmask = mask; } +static int +has_suffix_p (name, suffix) + const char *name; + const char *suffix; +{ + size_t namelen = strlen (name); + size_t sufflen = strlen (suffix); + + if (namelen <= sufflen) + return 0; + return strcmp (name + namelen - sufflen, suffix) == 0; +} + static void clear_register_values () { @@ -8739,21 +8795,19 @@ note_register_values (idesc) } /* In general, clear mutexes and implies which include P1 or P2, with the following exceptions. */ - else if (strstr (idesc->name, ".or.andcm") != NULL) + else if (has_suffix_p (idesc->name, ".or.andcm") + || has_suffix_p (idesc->name, ".and.orcm")) { add_qp_mutex (p1mask | p2mask); clear_qp_implies (p2mask, p1mask); } - else if (strstr (idesc->name, ".and.orcm") != NULL) - { - add_qp_mutex (p1mask | p2mask); - clear_qp_implies (p1mask, p2mask); - } - else if (strstr (idesc->name, ".and") != NULL) + else if (has_suffix_p (idesc->name, ".andcm") + || has_suffix_p (idesc->name, ".and")) { clear_qp_implies (0, p1mask | p2mask); } - else if (strstr (idesc->name, ".or") != NULL) + else if (has_suffix_p (idesc->name, ".orcm") + || has_suffix_p (idesc->name, ".or")) { clear_qp_mutex (p1mask | p2mask); clear_qp_implies (p1mask | p2mask, 0); @@ -8761,7 +8815,7 @@ note_register_values (idesc) else { clear_qp_implies (p1mask | p2mask, p1mask | p2mask); - if (strstr (idesc->name, ".unc") != NULL) + if (has_suffix_p (idesc->name, ".unc")) { add_qp_mutex (p1mask | p2mask); if (CURR_SLOT.qp_regno != 0) @@ -10004,6 +10058,9 @@ ia64_gen_real_reloc_type (sym, r_type) } break; + case FUNC_IPLT_RELOC: + break; + default: abort (); } diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-ia64.h binutils-2.11.93.0.2/gas/config/tc-ia64.h --- binutils-2.11.92.0.12.3/gas/config/tc-ia64.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-ia64.h Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* tc-ia64.h -- Header file for tc-ia64.c. - Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by David Mosberger-Tang This file is part of GAS, the GNU Assembler. @@ -28,9 +28,11 @@ #ifdef TE_HPUX #define md_number_to_chars number_to_chars_bigendian #define TARGET_BYTES_BIG_ENDIAN 1 +#define MD_FLAGS_DEFAULT EF_IA_64_BE #else #define md_number_to_chars number_to_chars_littleendian #define TARGET_BYTES_BIG_ENDIAN 0 +#define MD_FLAGS_DEFAULT EF_IA_64_ABI64 #endif /* TE_HPUX */ /* We need to set the default object file format in ia64_init and not in @@ -86,6 +88,7 @@ extern int ia64_elf_section_type PARAMS extern long ia64_pcrel_from_section PARAMS ((struct fix *fix, segT sec)); extern void ia64_md_do_align PARAMS ((int, const char *, int, int)); extern void ia64_handle_align PARAMS ((fragS *f)); +extern void ia64_after_parse_args PARAMS ((void)); #define md_end() ia64_end_of_source () #define md_start_line_hook() ia64_start_line () @@ -114,12 +117,15 @@ extern void ia64_handle_align PARAMS ((f #define md_do_align(n,f,l,m,j) ia64_md_do_align (n,f,l,m) #define HANDLE_ALIGN(f) ia64_handle_align (f) #define md_elf_section_type(str,len) ia64_elf_section_type (str, len) +#define md_after_parse_args() ia64_after_parse_args () #define MAX_MEM_FOR_RS_ALIGN_CODE (15 + 16) #define WORKING_DOT_WORD /* don't do broken word processing for now */ #define ELF_TC_SPECIAL_SECTIONS \ +{ ".init_array",SHT_INIT_ARRAY, SHF_ALLOC + SHF_WRITE }, \ +{ ".fini_array",SHT_FINI_ARRAY, SHF_ALLOC + SHF_WRITE }, \ { ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, \ { ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_IA_64_SHORT }, diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-m68k.c binutils-2.11.93.0.2/gas/config/tc-m68k.c --- binutils-2.11.92.0.12.3/gas/config/tc-m68k.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-m68k.c Sun Feb 3 11:22:31 2002 @@ -471,7 +471,8 @@ static const int n_archs = sizeof (archs How far Backward this mode will reach: How many bytes this mode will add to the size of the frag Which mode to go to if the offset won't fit in this one - */ + + Please check tc-m68k.h:md_prepare_relax_scan if changing this table. */ relax_typeS md_relax_table[] = { { 127, -128, 0, TAB (BRANCHBWL, SHORT) }, @@ -4674,7 +4675,7 @@ md_estimate_size_before_relax (fragP, se { fragS *l; - for (l = fragP->fr_next; l != sym_frag; l = l->fr_next) + for (l = fragP->fr_next; l && l != sym_frag; l = l->fr_next) if (l->fr_fix != 0) break; if (l == sym_frag) diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-m68k.h binutils-2.11.93.0.2/gas/config/tc-m68k.h --- binutils-2.11.92.0.12.3/gas/config/tc-m68k.h Thu Jul 26 18:02:55 2001 +++ binutils-2.11.93.0.2/gas/config/tc-m68k.h Sun Feb 3 11:22:31 2002 @@ -227,11 +227,14 @@ extern int m68k_parse_long_option PARAMS extern struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table -/* Copied from write.c */ -/* This was formerly called M68K_AIM_KLUDGE. */ +/* We can't do a byte jump to the next instruction, so in that case + force word mode by faking AIM. */ #define md_prepare_relax_scan(fragP, address, aim, this_state, this_type) \ - if (aim==0 && this_state== 4) { /* hard encoded from tc-m68k.c */ \ - aim=this_type->rlx_forward+1; /* Force relaxation into word mode */ \ - } + do \ + { \ + if (aim == 0 && this_type->rlx_forward == 127) \ + aim = 128; \ + } \ + while (0) #define DWARF2_LINE_MIN_INSN_LENGTH 2 diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-mips.c binutils-2.11.93.0.2/gas/config/tc-mips.c --- binutils-2.11.92.0.12.3/gas/config/tc-mips.c Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/gas/config/tc-mips.c Sun Feb 3 11:22:31 2002 @@ -174,10 +174,10 @@ struct mips_set_options }; /* True if -mgp32 was passed. */ -static int file_mips_gp32 = 0; +static int file_mips_gp32 = -1; /* True if -mfp32 was passed. */ -static int file_mips_fp32 = 0; +static int file_mips_fp32 = -1; /* This is the struct we use to hold the current set of options. Note that we must set the isa field to ISA_UNKNOWN and the mips16 field to @@ -407,15 +407,23 @@ static offsetT mips_cprestore_offset = - /* Similiar for NewABI PIC code, where $gp is callee-saved. NewABI has some more optimizations, it can use a register value instead of a memory-saved - offset and even an other than GP as global pointer. */ + offset and even an other register than $gp as global pointer. */ static offsetT mips_cpreturn_offset = -1; static int mips_cpreturn_register = -1; static int mips_gp_register = GP; +/* Whether mips_cprestore_offset has been set in the current function + (or whether it has already been warned about, if not). */ +static int mips_cprestore_valid = 0; + /* This is the register which holds the stack frame, as set by the .frame pseudo-op. This is needed to implement .cprestore. */ static int mips_frame_reg = SP; +/* Whether mips_frame_reg has been set in the current function + (or whether it has already been warned about, if not). */ +static int mips_frame_reg_valid = 0; + /* To output NOP instructions correctly, we need to keep information about the previous two instructions. */ @@ -694,6 +702,7 @@ static void mips16_ip PARAMS ((char *str static void mips16_immed PARAMS ((char *, unsigned int, int, offsetT, boolean, boolean, boolean, unsigned long *, boolean *, unsigned short *)); +static int my_getPercentOp PARAMS ((char **, unsigned int *, int *)); static int my_getSmallParser PARAMS ((char **, unsigned int *, int *)); static int my_getSmallExpression PARAMS ((expressionS *, char *)); static void my_getExpression PARAMS ((expressionS *, char *)); @@ -1056,6 +1065,46 @@ md_begin () "Use -march instead of -mcpu.")); } +#if 1 + /* For backward compatibility, let -mipsN set various defaults. */ + /* This code should go away, to be replaced with something rather more + draconian. Until GCC 3.1 has been released for some reasonable + amount of time, however, we need to support this. */ + if (mips_opts.isa != ISA_UNKNOWN) + { + /* Translate -mipsN to the appropriate settings of file_mips_gp32 + and file_mips_fp32. Tag binaries as using the mipsN ISA. */ + if (file_mips_gp32 < 0) + { + if (ISA_HAS_64BIT_REGS (mips_opts.isa)) + file_mips_gp32 = 0; + else + file_mips_gp32 = 1; + } + if (file_mips_fp32 < 0) + { + if (ISA_HAS_64BIT_REGS (mips_opts.isa)) + file_mips_fp32 = 0; + else + file_mips_fp32 = 1; + } + + ci = mips_cpu_info_from_isa (mips_opts.isa); + assert (ci != NULL); + /* -mipsN has higher priority than -mcpu but lower than -march. */ + if (mips_arch == CPU_UNKNOWN) + mips_arch = ci->cpu; + + /* Default mips_abi. */ + if (mips_opts.abi == NO_ABI) + { + if (mips_opts.isa == ISA_MIPS1 || mips_opts.isa == ISA_MIPS2) + mips_opts.abi = O32_ABI; + else if (mips_opts.isa == ISA_MIPS3 || mips_opts.isa == ISA_MIPS4) + mips_opts.abi = O64_ABI; + } + } + if (mips_arch == CPU_UNKNOWN && mips_cpu != CPU_UNKNOWN) { ci = mips_cpu_info_from_cpu (mips_cpu); @@ -1065,10 +1114,36 @@ md_begin () "-mtune instead.")); } + /* Set tune from -mcpu, not from -mipsN. */ + if (mips_tune == CPU_UNKNOWN && mips_cpu != CPU_UNKNOWN) + { + ci = mips_cpu_info_from_cpu (mips_cpu); + assert (ci != NULL); + mips_tune = ci->cpu; + } + /* At this point, mips_arch will either be CPU_UNKNOWN if no ARCH was specified on the command line, or some other value if one was. Similarly, mips_opts.isa will be ISA_UNKNOWN if not specified on the command line, or will be set otherwise if one was. */ + + if (mips_arch != CPU_UNKNOWN && mips_opts.isa != ISA_UNKNOWN) + /* Handled above. */; +#else + if (mips_arch == CPU_UNKNOWN && mips_cpu != CPU_UNKNOWN) + { + ci = mips_cpu_info_from_cpu (mips_cpu); + assert (ci != NULL); + mips_arch = ci->cpu; + as_warn (_("The -mcpu option is deprecated. Please use -march and " + "-mtune instead.")); + } + + /* At this point, mips_arch will either be CPU_UNKNOWN if no ARCH was + specified on the command line, or some other value if one was. + Similarly, mips_opts.isa will be ISA_UNKNOWN if not specified on + the command line, or will be set otherwise if one was. */ + if (mips_arch != CPU_UNKNOWN && mips_opts.isa != ISA_UNKNOWN) { /* We have to check if the isa is the default isa of arch. Otherwise @@ -1089,6 +1164,7 @@ md_begin () mips_arch = ci->cpu; } } +#endif else if (mips_arch != CPU_UNKNOWN && mips_opts.isa == ISA_UNKNOWN) { /* We have ARCH, we need ISA. */ @@ -1150,6 +1226,11 @@ md_begin () if (! bfd_set_arch_mach (stdoutput, bfd_arch_mips, mips_arch)) as_warn (_("Could not set architecture and machine")); + if (file_mips_gp32 < 0) + file_mips_gp32 = 0; + if (file_mips_fp32 < 0) + file_mips_fp32 = 0; + file_mips_isa = mips_opts.isa; file_mips_abi = mips_opts.abi; mips_opts.gp32 = file_mips_gp32; @@ -1974,6 +2055,10 @@ append_insn (place, ip, address_expr, re if ((address_expr->X_add_number & 3) != 0) as_bad (_("jump to misaligned address (0x%lx)"), (unsigned long) address_expr->X_add_number); + if (address_expr->X_add_number & ~0xfffffff + || address_expr->X_add_number > 0x7fffffc) + as_bad (_("jump address range overflow (0x%lx)"), + (unsigned long) address_expr->X_add_number); ip->insn_opcode |= (address_expr->X_add_number >> 2) & 0x3ffffff; break; @@ -1981,6 +2066,10 @@ append_insn (place, ip, address_expr, re if ((address_expr->X_add_number & 3) != 0) as_bad (_("jump to misaligned address (0x%lx)"), (unsigned long) address_expr->X_add_number); + if (address_expr->X_add_number & ~0xfffffff + || address_expr->X_add_number > 0x7fffffc) + as_bad (_("jump address range overflow (0x%lx)"), + (unsigned long) address_expr->X_add_number); ip->insn_opcode |= (((address_expr->X_add_number & 0x7c0000) << 3) | ((address_expr->X_add_number & 0xf800000) >> 7) @@ -2886,7 +2975,7 @@ macro_build (place, counter, ep, name, f case 'j': case 'o': *r = (bfd_reloc_code_real_type) va_arg (args, int); - assert (*r == BFD_RELOC_MIPS_GPREL + assert (*r == BFD_RELOC_GPREL16 || *r == BFD_RELOC_MIPS_LITERAL || *r == BFD_RELOC_MIPS_HIGHER || *r == BFD_RELOC_HI16_S @@ -3331,7 +3420,8 @@ load_register (counter, reg, ep, dbl) if (HAVE_32BIT_GPRS) { - as_bad (_("Number larger than 32 bits")); + as_bad (_("Number (0x%lx) larger than 32 bits"), + (unsigned long) ep->X_add_number); macro_build ((char *) NULL, counter, ep, "addiu", "t,r,j", reg, 0, (int) BFD_RELOC_LO16); return; @@ -3366,7 +3456,7 @@ load_register (counter, reg, ep, dbl) int shift, bit; unsigned long hi, lo; - if (hi32.X_add_number == 0xffffffff) + if (hi32.X_add_number == (offsetT) 0xffffffff) { if ((lo32.X_add_number & 0xffff8000) == 0xffff8000) { @@ -3505,27 +3595,27 @@ load_register (counter, reg, ep, dbl) { expressionS mid16; - if ((freg == 0) && (lo32.X_add_number == 0xffffffff)) + if ((freg == 0) && (lo32.X_add_number == (offsetT) 0xffffffff)) { macro_build ((char *) NULL, counter, &lo32, "lui", "t,u", reg, (int) BFD_RELOC_HI16); - macro_build ((char *) NULL, counter, NULL, "dsrl32", "d,w,<", reg, - reg, 0); + macro_build ((char *) NULL, counter, (expressionS *) NULL, + "dsrl32", "d,w,<", reg, reg, 0); return; } if (freg != 0) { - macro_build ((char *) NULL, counter, NULL, "dsll", "d,w,<", reg, - freg, 16); + macro_build ((char *) NULL, counter, (expressionS *) NULL, "dsll", + "d,w,<", reg, freg, 16); freg = reg; } mid16 = lo32; mid16.X_add_number >>= 16; macro_build ((char *) NULL, counter, &mid16, "ori", "t,r,i", reg, freg, (int) BFD_RELOC_LO16); - macro_build ((char *) NULL, counter, NULL, "dsll", "d,w,<", reg, - reg, 16); + macro_build ((char *) NULL, counter, (expressionS *) NULL, "dsll", + "d,w,<", reg, reg, 16); freg = reg; } if ((lo32.X_add_number & 0xffff) != 0) @@ -3561,7 +3651,7 @@ load_address (counter, reg, ep, dbl, use if (mips_pic == NO_PIC) { /* If this is a reference to a GP relative symbol, we want - addiu $reg,$gp, (BFD_RELOC_MIPS_GPREL) + addiu $reg,$gp, (BFD_RELOC_GPREL16) Otherwise we want lui $reg, (BFD_RELOC_HI16_S) addiu $reg,$reg, (BFD_RELOC_LO16) @@ -3584,7 +3674,7 @@ load_address (counter, reg, ep, dbl, use dsll $reg,16 daddiu $reg, (BFD_RELOC_LO16) */ - if (HAVE_64BIT_ADDRESSES) + if (dbl) { p = NULL; @@ -3631,18 +3721,17 @@ load_address (counter, reg, ep, dbl, use { frag_grow (20); macro_build ((char *) NULL, counter, ep, - HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", - "t,r,j", reg, GP, (int) BFD_RELOC_MIPS_GPREL); + dbl ? "daddiu" : "addiu", "t,r,j", reg, 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), - ep->X_add_symbol, (offsetT) 0, (char *) NULL); + ep->X_add_symbol, 0, NULL); } macro_build_lui (p, counter, ep, reg); if (p != NULL) p += 4; - macro_build (p, counter, ep, - HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", + macro_build (p, counter, ep, dbl ? "daddiu" : "addiu", "t,r,j", reg, reg, (int) BFD_RELOC_LO16); } } @@ -3705,15 +3794,13 @@ load_address (counter, reg, ep, dbl, use macro_build ((char *) NULL, counter, ep, "lui", "t,u", reg, (int) BFD_RELOC_MIPS_GOT_HI16); macro_build ((char *) NULL, counter, (expressionS *) NULL, - HAVE_32BIT_ADDRESSES ? "addu" : "daddu", - "d,v,t", reg, reg, GP); - macro_build ((char *) NULL, counter, ep, - HAVE_32BIT_ADDRESSES ? "lw" : "ld", + dbl ? "daddu" : "addu", "d,v,t", reg, reg, GP); + macro_build ((char *) NULL, counter, ep, dbl ? "ld" : "lw", "t,o(b)", reg, (int) BFD_RELOC_MIPS_GOT_LO16, reg); p = frag_var (rs_machine_dependent, 12 + off, 0, RELAX_ENCODE (12, 12 + off, off, 8 + off, 0, mips_opts.warn_about_macros), - ep->X_add_symbol, (offsetT) 0, (char *) NULL); + ep->X_add_symbol, 0, NULL); if (off > 0) { /* We need a nop before loading from $gp. This special @@ -3723,31 +3810,29 @@ load_address (counter, reg, ep, dbl, use macro_build (p, counter, (expressionS *) NULL, "nop", ""); p += 4; } - macro_build (p, counter, ep, HAVE_32BIT_ADDRESSES ? "lw" : "ld", + macro_build (p, counter, ep, dbl ? "ld" : "lw", "t,o(b)", reg, (int) BFD_RELOC_MIPS_GOT16, GP); p += 4; macro_build (p, counter, (expressionS *) NULL, "nop", ""); p += 4; - macro_build (p, counter, ep, HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", + macro_build (p, counter, ep, dbl ? "daddiu" : "addiu", "t,r,j", reg, reg, (int) BFD_RELOC_LO16); if (ex.X_add_number != 0) { if (ex.X_add_number < -0x8000 || ex.X_add_number >= 0x8000) as_bad (_("PIC code offset overflow (max 16 signed bits)")); ex.X_op = O_constant; - macro_build ((char *) NULL, counter, &ex, - HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", + macro_build ((char *) NULL, counter, &ex, dbl ? "daddiu" : "addiu", "t,r,j", reg, reg, (int) BFD_RELOC_LO16); } } else if (mips_pic == EMBEDDED_PIC) { /* We always do - addiu $reg,$gp, (BFD_RELOC_MIPS_GPREL) + addiu $reg,$gp, (BFD_RELOC_GPREL16) */ - macro_build ((char *) NULL, counter, ep, - HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", - "t,r,j", reg, GP, (int) BFD_RELOC_MIPS_GPREL); + macro_build ((char *) NULL, counter, ep, dbl ? "daddiu" : "addiu", + "t,r,j", reg, GP, (int) BFD_RELOC_GPREL16); } else abort (); @@ -4064,7 +4149,7 @@ macro (ip) if (sreg == 0 || (HAVE_32BIT_GPRS && imm_expr.X_op == O_constant - && imm_expr.X_add_number == 0xffffffff)) + && imm_expr.X_add_number == (offsetT) 0xffffffff)) goto do_false; if (imm_expr.X_op != O_constant) as_bad (_("Unsupported large constant")); @@ -4209,7 +4294,7 @@ macro (ip) if (sreg == 0 || (HAVE_32BIT_GPRS && imm_expr.X_op == O_constant - && imm_expr.X_add_number == 0xffffffff)) + && imm_expr.X_add_number == (offsetT) 0xffffffff)) goto do_true; if (imm_expr.X_op != O_constant) as_bad (_("Unsupported large constant")); @@ -4551,7 +4636,7 @@ macro (ip) else if (mips_pic == NO_PIC) { /* If this is a reference to a GP relative symbol, we want - addiu $tempreg,$gp, (BFD_RELOC_MIPS_GPREL) + addiu $tempreg,$gp, (BFD_RELOC_GPREL16) Otherwise we want lui $tempreg, (BFD_RELOC_HI16_S) addiu $tempreg,$tempreg, (BFD_RELOC_LO16) @@ -4621,12 +4706,11 @@ macro (ip) frag_grow (20); macro_build ((char *) NULL, &icnt, &offset_expr, HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", - "t,r,j", tempreg, GP, (int) BFD_RELOC_MIPS_GPREL); + "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, (offsetT) 0, - (char *) NULL); + offset_expr.X_add_symbol, 0, NULL); } macro_build_lui (p, &icnt, &offset_expr, tempreg); if (p != NULL) @@ -4982,11 +5066,11 @@ macro (ip) else if (mips_pic == EMBEDDED_PIC) { /* We use - addiu $tempreg,$gp, (BFD_RELOC_MIPS_GPREL) + addiu $tempreg,$gp, (BFD_RELOC_GPREL16) */ macro_build ((char *) NULL, &icnt, &offset_expr, HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", - "t,r,j", tempreg, GP, (int) BFD_RELOC_MIPS_GPREL); + "t,r,j", tempreg, GP, (int) BFD_RELOC_GPREL16); } else abort (); @@ -5035,6 +5119,18 @@ macro (ip) as_warn (_("No .cprestore pseudo-op used in PIC code")); else { + if (! mips_frame_reg_valid) + { + as_warn (_("No .frame pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_frame_reg_valid = 1; + } + if (! mips_cprestore_valid) + { + as_warn (_("No .cprestore pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_cprestore_valid = 1; + } expr1.X_add_number = mips_cprestore_offset; macro_build ((char *) NULL, &icnt, &expr1, HAVE_32BIT_ADDRESSES ? "lw" : "ld", "t,o(b)", @@ -5136,6 +5232,18 @@ macro (ip) as_warn (_("No .cprestore pseudo-op used in PIC code")); else { + if (! mips_frame_reg_valid) + { + as_warn (_("No .frame pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_frame_reg_valid = 1; + } + if (! mips_cprestore_valid) + { + as_warn (_("No .cprestore pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_cprestore_valid = 1; + } if (mips_opts.noreorder) macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "nop", ""); @@ -5386,7 +5494,7 @@ macro (ip) { /* If this is a reference to a GP relative symbol, and there is no base register, we want - $treg,($gp) (BFD_RELOC_MIPS_GPREL) + $treg,($gp) (BFD_RELOC_GPREL16) Otherwise, if there is no base register, we want lui $tempreg, (BFD_RELOC_HI16_S) $treg,($tempreg) (BFD_RELOC_LO16) @@ -5396,7 +5504,7 @@ macro (ip) If we have a base register, and this is a reference to a GP relative symbol, we want addu $tempreg,$breg,$gp - $treg,($tempreg) (BFD_RELOC_MIPS_GPREL) + $treg,($tempreg) (BFD_RELOC_GPREL16) Otherwise we want lui $tempreg, (BFD_RELOC_HI16_S) addu $tempreg,$tempreg,$breg @@ -5494,14 +5602,13 @@ macro (ip) { frag_grow (20); macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, - treg, (int) BFD_RELOC_MIPS_GPREL, GP); + treg, (int) BFD_RELOC_GPREL16, GP); p = frag_var (rs_machine_dependent, 8, 0, RELAX_ENCODE (4, 8, 0, 4, 0, (mips_opts.warn_about_macros || (used_at && mips_opts.noat))), - offset_expr.X_add_symbol, (offsetT) 0, - (char *) NULL); + offset_expr.X_add_symbol, 0, NULL); used_at = 0; } macro_build_lui (p, &icnt, &offset_expr, tempreg); @@ -5522,11 +5629,10 @@ macro (ip) HAVE_32BIT_ADDRESSES ? "addu" : "daddu", "d,v,t", tempreg, breg, GP); macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, - treg, (int) BFD_RELOC_MIPS_GPREL, tempreg); + treg, (int) BFD_RELOC_GPREL16, tempreg); p = frag_var (rs_machine_dependent, 12, 0, RELAX_ENCODE (8, 12, 0, 8, 0, 0), - offset_expr.X_add_symbol, (offsetT) 0, - (char *) NULL); + offset_expr.X_add_symbol, 0, NULL); } macro_build_lui (p, &icnt, &offset_expr, tempreg); if (p != NULL) @@ -5648,16 +5754,16 @@ macro (ip) else if (mips_pic == EMBEDDED_PIC) { /* If there is no base register, we want - $treg,($gp) (BFD_RELOC_MIPS_GPREL) + $treg,($gp) (BFD_RELOC_GPREL16) If there is a base register, we want addu $tempreg,$breg,$gp - $treg,($tempreg) (BFD_RELOC_MIPS_GPREL) + $treg,($tempreg) (BFD_RELOC_GPREL16) */ assert (offset_expr.X_op == O_symbol); if (breg == 0) { macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, - treg, (int) BFD_RELOC_MIPS_GPREL, GP); + treg, (int) BFD_RELOC_GPREL16, GP); used_at = 0; } else @@ -5666,7 +5772,7 @@ macro (ip) HAVE_32BIT_ADDRESSES ? "addu" : "daddu", "d,v,t", tempreg, breg, GP); macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, - treg, (int) BFD_RELOC_MIPS_GPREL, tempreg); + treg, (int) BFD_RELOC_GPREL16, tempreg); } } else @@ -5750,8 +5856,7 @@ macro (ip) upper 16 bits of the address. */ if (mips_pic == NO_PIC) { - /* FIXME: This won't work for a 64 bit address. */ - macro_build_lui ((char *) NULL, &icnt, &offset_expr, AT); + macro_build_lui (NULL, &icnt, &offset_expr, AT); } else if (mips_pic == SVR4_PIC) { @@ -5765,7 +5870,7 @@ macro (ip) a single instruction. */ macro_build ((char *) NULL, &icnt, &offset_expr, HAVE_32BIT_ADDRESSES ? "addiu" : "daddiu", - "t,r,j", AT, GP, (int) BFD_RELOC_MIPS_GPREL); + "t,r,j", AT, GP, (int) BFD_RELOC_GPREL16); offset_expr.X_op = O_constant; offset_expr.X_add_number = 0; } @@ -5855,7 +5960,7 @@ macro (ip) else { /* FIXME: This won't work for a 64 bit address. */ - macro_build_lui ((char *) NULL, &icnt, &offset_expr, AT); + macro_build_lui (NULL, &icnt, &offset_expr, AT); } if (mips_opts.isa != ISA_MIPS1) @@ -5998,12 +6103,12 @@ macro (ip) || offset_expr.X_op == O_constant) { /* If this is a reference to a GP relative symbol, we want - $treg,($gp) (BFD_RELOC_MIPS_GPREL) - $treg+1,+4($gp) (BFD_RELOC_MIPS_GPREL) + $treg,($gp) (BFD_RELOC_GPREL16) + $treg+1,+4($gp) (BFD_RELOC_GPREL16) If we have a base register, we use this addu $at,$breg,$gp - $treg,($at) (BFD_RELOC_MIPS_GPREL) - $treg+1,+4($at) (BFD_RELOC_MIPS_GPREL) + $treg,($at) (BFD_RELOC_GPREL16) + $treg+1,+4($at) (BFD_RELOC_GPREL16) If this is not a GP relative symbol, we want lui $at, (BFD_RELOC_HI16_S) $treg,($at) (BFD_RELOC_LO16) @@ -6042,7 +6147,7 @@ macro (ip) /* Itbl support may require additional care here. */ macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, coproc ? treg + 1 : treg, - (int) BFD_RELOC_MIPS_GPREL, tempreg); + (int) BFD_RELOC_GPREL16, tempreg); offset_expr.X_add_number += 4; /* Set mips_optimize to 2 to avoid inserting an @@ -6052,14 +6157,13 @@ macro (ip) /* Itbl support may require additional care here. */ macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, coproc ? treg : treg + 1, - (int) BFD_RELOC_MIPS_GPREL, tempreg); + (int) BFD_RELOC_GPREL16, tempreg); mips_optimize = hold_mips_optimize; p = frag_var (rs_machine_dependent, 12 + off, 0, RELAX_ENCODE (8 + off, 12 + off, 0, 4 + off, 1, used_at && mips_opts.noat), - offset_expr.X_add_symbol, (offsetT) 0, - (char *) NULL); + offset_expr.X_add_symbol, 0, NULL); /* We just generated two relocs. When tc_gen_reloc handles this case, it will skip the first reloc and @@ -6268,12 +6372,12 @@ macro (ip) else if (mips_pic == EMBEDDED_PIC) { /* If there is no base register, we use - $treg,($gp) (BFD_RELOC_MIPS_GPREL) - $treg+1,+4($gp) (BFD_RELOC_MIPS_GPREL) + $treg,($gp) (BFD_RELOC_GPREL16) + $treg+1,+4($gp) (BFD_RELOC_GPREL16) If we have a base register, we use addu $at,$breg,$gp - $treg,($at) (BFD_RELOC_MIPS_GPREL) - $treg+1,+4($at) (BFD_RELOC_MIPS_GPREL) + $treg,($at) (BFD_RELOC_GPREL16) + $treg+1,+4($at) (BFD_RELOC_GPREL16) */ if (breg == 0) { @@ -6292,12 +6396,12 @@ macro (ip) /* Itbl support may require additional care here. */ macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, coproc ? treg + 1 : treg, - (int) BFD_RELOC_MIPS_GPREL, tempreg); + (int) BFD_RELOC_GPREL16, tempreg); offset_expr.X_add_number += 4; /* Itbl support may require additional care here. */ macro_build ((char *) NULL, &icnt, &offset_expr, s, fmt, coproc ? treg : treg + 1, - (int) BFD_RELOC_MIPS_GPREL, tempreg); + (int) BFD_RELOC_GPREL16, tempreg); } else abort (); @@ -9211,26 +9315,24 @@ static struct percent_op_match const enum small_ex_type type; } percent_op[] = { -#ifdef OBJ_ELF - {"%half", S_EX_HALF}, -#endif - {"%hi", S_EX_HI}, {"%lo", S_EX_LO}, #ifdef OBJ_ELF - {"%gp_rel", S_EX_GP_REL}, - {"%got", S_EX_GOT}, + {"%call_hi", S_EX_CALL_HI}, + {"%call_lo", S_EX_CALL_LO}, {"%call16", S_EX_CALL16}, {"%got_disp", S_EX_GOT_DISP}, {"%got_page", S_EX_GOT_PAGE}, {"%got_ofst", S_EX_GOT_OFST}, {"%got_hi", S_EX_GOT_HI}, {"%got_lo", S_EX_GOT_LO}, - {"%neg", S_EX_NEG}, - {"%higher", S_EX_HIGHER}, + {"%got", S_EX_GOT}, + {"%gp_rel", S_EX_GP_REL}, + {"%half", S_EX_HALF}, {"%highest", S_EX_HIGHEST}, - {"%call_hi", S_EX_CALL_HI}, - {"%call_lo", S_EX_CALL_LO} + {"%higher", S_EX_HIGHER}, + {"%neg", S_EX_NEG}, #endif + {"%hi", S_EX_HI} }; /* Parse small expression input. STR gets adjusted to eat up whitespace. @@ -9244,10 +9346,9 @@ my_getSmallParser (str, len, nestlevel) unsigned int *len; int *nestlevel; { - int type = S_EX_NONE; - *len = 0; *str += strspn (*str, " \t"); + /* Check for expression in parentheses. */ if (**str == '(') { char *b = *str + 1 + strspn (*str + 1, " \t"); @@ -9274,50 +9375,68 @@ my_getSmallParser (str, len, nestlevel) } } } + /* Check for percent_op (in parentheses). */ else if (b[0] == '%') { *str = b; - goto percent_op; + return my_getPercentOp (str, len, nestlevel); } - /* Some other expression in the braces. */ - *len = strcspn (*str, ")") + 1; + /* Some other expression in the parentheses, which can contain + parentheses itself. Attempt to find the matching one. */ + { + int pcnt = 1; + char *s; + + *len = 1; + for (s = *str + 1; *s && pcnt; s++, (*len)++) + { + if (*s == '(') + pcnt++; + else if (*s == ')') + pcnt--; + } + } } - /* Check for percent_op. */ + /* Check for percent_op (outside of parentheses). */ else if (*str[0] == '%') - { - char *tmp; - unsigned int i; + return my_getPercentOp (str, len, nestlevel); -percent_op: - tmp = *str + 1; - i = 0; + /* Any other expression. */ + return S_EX_NONE; +} - while (ISALPHA (*tmp) || *tmp == '_') - { - *tmp = TOLOWER (*tmp); - tmp++; - } - while (i < (sizeof (percent_op) / sizeof (struct percent_op_match))) +static int +my_getPercentOp (str, len, nestlevel) + char **str; + unsigned int *len; + int *nestlevel; +{ + char *tmp = *str + 1; + unsigned int i = 0; + + while (ISALPHA (*tmp) || *tmp == '_') + { + *tmp = TOLOWER (*tmp); + tmp++; + } + while (i < (sizeof (percent_op) / sizeof (struct percent_op_match))) + { + if (strncmp (*str, percent_op[i].str, strlen (percent_op[i].str))) + i++; + else { - if (strncmp (*str, percent_op[i].str, strlen (percent_op[i].str))) - i++; - else - { - type = percent_op[i].type; + int type = percent_op[i].type; - /* Only %hi and %lo are allowed for OldABI. */ - if (! HAVE_NEWABI && type != S_EX_HI && type != S_EX_LO) - return S_EX_NONE; - - *len = strlen (percent_op[i].str); - (*nestlevel)++; - return type; - } + /* Only %hi and %lo are allowed for OldABI. */ + if (! HAVE_NEWABI && type != S_EX_HI && type != S_EX_LO) + return S_EX_NONE; + + *len = strlen (percent_op[i].str); + (*nestlevel)++; + return type; } } - - /* Any other expression. */ return S_EX_NONE; } @@ -9329,46 +9448,59 @@ my_getSmallExpression (ep, str) static char *oldstr = NULL; int c = S_EX_NONE; int oldc; - int nest_level = 0; + int nestlevel = -1; unsigned int len; - /* Don't update oldstr if the last call had nested percent_op's. */ + /* Don't update oldstr if the last call had nested percent_op's. We need + it to parse the outer ones later. */ if (! oldstr) oldstr = str; do { oldc = c; - c = my_getSmallParser (&str, &len, &nest_level); + c = my_getSmallParser (&str, &len, &nestlevel); if (c != S_EX_NONE && c != S_EX_REGISTER) str += len; } while (c != S_EX_NONE && c != S_EX_REGISTER); - /* A percent_op was encountered. */ - if (nest_level) + if (nestlevel >= 0) { - /* Don't try to get an expression if it is already blanked out. */ + /* A percent_op was encountered. Don't try to get an expression if + it is already blanked out. */ if (*(str + strspn (str + 1, " )")) != ')') { char save; + /* Let my_getExpression() stop at the closing parenthesis. */ save = *(str + len); *(str + len) = '\0'; my_getExpression (ep, str); *(str + len) = save; } - if (nest_level > 1) + if (nestlevel > 0) { - /* blank out including the % sign. */ - char *p = strrchr (oldstr, '%'); - memset (p, ' ', str - p + len); + /* Blank out including the % sign and the proper matching + parenthesis. */ + int pcnt = 1; + char *s = strrchr (oldstr, '%'); + char *end; + + for (end = strchr (s, '(') + 1; *end && pcnt; end++) + { + if (*end == '(') + pcnt++; + else if (*end == ')') + pcnt--; + } + + memset (s, ' ', end - s); str = oldstr; } else - { - expr_end = strchr (str, ')') + 1; - } + expr_end = str + len; + c = oldc; } else if (c == S_EX_NONE) @@ -9388,7 +9520,8 @@ my_getSmallExpression (ep, str) as_fatal(_("internal error")); } - if (nest_level <= 1) + if (nestlevel <= 0) + /* All percent_op's have been handled. */ oldstr = NULL; return c; @@ -9862,17 +9995,32 @@ md_parse_option (c, arg) break; #ifdef OBJ_ELF - /* The -32 and -64 options tell the assembler to output the 32 - bit or the 64 bit MIPS ELF format. */ + /* The -32, -n32 and -64 options are shortcuts for -mabi=32, -mabi=n32 + and -mabi=64. */ case OPTION_32: + if (OUTPUT_FLAVOR != bfd_target_elf_flavour) + { + as_bad (_("-32 is supported for ELF format only")); + return 0; + } mips_opts.abi = O32_ABI; break; case OPTION_N32: + if (OUTPUT_FLAVOR != bfd_target_elf_flavour) + { + as_bad (_("-n32 is supported for ELF format only")); + return 0; + } mips_opts.abi = N32_ABI; break; case OPTION_64: + if (OUTPUT_FLAVOR != bfd_target_elf_flavour) + { + as_bad (_("-64 is supported for ELF format only")); + return 0; + } mips_opts.abi = N64_ABI; if (! support_64bit_objects()) as_fatal (_("No compiled in support for 64 bit object file format")); @@ -9899,6 +10047,11 @@ md_parse_option (c, arg) #ifdef OBJ_ELF case OPTION_MABI: + if (OUTPUT_FLAVOR != bfd_target_elf_flavour) + { + as_bad (_("-mabi is supported for ELF format only")); + return 0; + } if (strcmp (arg, "32") == 0) mips_opts.abi = O32_ABI; else if (strcmp (arg, "o64") == 0) @@ -10044,6 +10197,19 @@ MIPS options:\n\ -KPIC, -call_shared generate SVR4 position independent code\n\ -non_shared do not generate position independent code\n\ -xgot assume a 32 bit GOT\n\ +-mabi=ABI create ABI conformant object file for:\n")); + + first = 1; + + show (stream, "32", &column, &first); + show (stream, "o64", &column, &first); + show (stream, "n32", &column, &first); + show (stream, "64", &column, &first); + show (stream, "eabi", &column, &first); + + fputc ('\n', stream); + + fprintf (stream, _("\ -32 create o32 ABI object file (default)\n\ -n32 create n32 ABI object file\n\ -64 create 64 ABI object file\n")); @@ -10373,11 +10539,11 @@ md_apply_fix3 (fixP, valP, seg) case BFD_RELOC_MIPS_JALR: case BFD_RELOC_HI16: case BFD_RELOC_HI16_S: - case BFD_RELOC_MIPS_GPREL: + case BFD_RELOC_GPREL16: case BFD_RELOC_MIPS_LITERAL: case BFD_RELOC_MIPS_CALL16: case BFD_RELOC_MIPS_GOT16: - case BFD_RELOC_MIPS_GPREL32: + case BFD_RELOC_GPREL32: case BFD_RELOC_MIPS_GOT_HI16: case BFD_RELOC_MIPS_GOT_LO16: case BFD_RELOC_MIPS_CALL_HI16: @@ -11240,14 +11406,14 @@ s_cpload (ignore) If offset is given, this results in: sd $gp, offset($sp) - lui $gp, %gp_rel(%neg(%hi(label))) - daddiu $gp, $gp, %gp_rel(%neg(%lo(label))) + lui $gp, %hi(%neg(%gp_rel(label))) + daddiu $gp, $gp, %lo(%neg(%gp_rel(label))) addu $gp, $gp, $reg1 If $reg2 is given, this results in: daddu $reg2, $gp, $0 - lui $gp, %gp_rel(%neg(%hi(label))) - daddiu $gp, $gp, %gp_rel(%neg(%lo(label))) + lui $gp, %hi(%neg(%gp_rel(label))) + daddiu $gp, $gp, %lo(%neg(%gp_rel(label))) addu $gp, $gp, $reg1 */ static void @@ -11368,6 +11534,7 @@ s_cprestore (ignore) } mips_cprestore_offset = get_absolute_expression (); + mips_cprestore_valid = 1; ex.X_op = O_constant; ex.X_add_symbol = NULL; @@ -11475,7 +11642,7 @@ s_gpword (ignore) p = frag_more (4); md_number_to_chars (p, (valueT) 0, 4); fix_new_exp (frag_now, p - frag_now->fr_literal, 4, &ex, 0, - BFD_RELOC_MIPS_GPREL32); + BFD_RELOC_GPREL32); demand_empty_rest_of_line (); } @@ -11566,7 +11733,7 @@ s_mips_weakext (ignore) { if (S_IS_DEFINED (symbolP)) { - as_bad ("Ignoring attempt to redefine symbol `%s'.", + as_bad ("ignoring attempt to redefine symbol %s", S_GET_NAME (symbolP)); ignore_rest_of_line (); return; @@ -11634,7 +11801,11 @@ tc_get_register (frame) input_line_pointer += 2; } if (frame) - mips_frame_reg = reg != 0 ? reg : SP; + { + mips_frame_reg = reg != 0 ? reg : SP; + mips_frame_reg_valid = 1; + mips_cprestore_valid = 0; + } return reg; } @@ -12098,32 +12269,43 @@ tc_gen_reloc (section, fixp) as_fatal (_("Double check fx_r_type in tc-mips.c:tc_gen_reloc")); fixp->fx_r_type = BFD_RELOC_GPREL32; } - else if (fixp->fx_pcrel == 0 || OUTPUT_FLAVOR == bfd_target_elf_flavour) - reloc->addend = fixp->fx_addnumber; else if (fixp->fx_r_type == BFD_RELOC_PCREL_LO16) { - /* We use a special addend for an internal RELLO reloc. */ - if (symbol_section_p (fixp->fx_addsy)) - reloc->addend = reloc->address - S_GET_VALUE (fixp->fx_subsy); + if (OUTPUT_FLAVOR == bfd_target_elf_flavour) + reloc->addend = fixp->fx_addnumber; else - reloc->addend = fixp->fx_addnumber + reloc->address; + { + /* We use a special addend for an internal RELLO reloc. */ + if (symbol_section_p (fixp->fx_addsy)) + reloc->addend = reloc->address - S_GET_VALUE (fixp->fx_subsy); + else + reloc->addend = fixp->fx_addnumber + reloc->address; + } } else if (fixp->fx_r_type == BFD_RELOC_PCREL_HI16_S) { assert (fixp->fx_next != NULL && fixp->fx_next->fx_r_type == BFD_RELOC_PCREL_LO16); - /* We use a special addend for an internal RELHI reloc. The - reloc is relative to the RELLO; adjust the addend + + /* The reloc is relative to the RELLO; adjust the addend accordingly. */ - if (symbol_section_p (fixp->fx_addsy)) - reloc->addend = (fixp->fx_next->fx_frag->fr_address - + fixp->fx_next->fx_where - - S_GET_VALUE (fixp->fx_subsy)); - else - reloc->addend = (fixp->fx_addnumber - + fixp->fx_next->fx_frag->fr_address - + fixp->fx_next->fx_where); + if (OUTPUT_FLAVOR == bfd_target_elf_flavour) + reloc->addend = fixp->fx_next->fx_addnumber; + else + { + /* We use a special addend for an internal RELHI reloc. */ + if (symbol_section_p (fixp->fx_addsy)) + reloc->addend = (fixp->fx_next->fx_frag->fr_address + + fixp->fx_next->fx_where + - S_GET_VALUE (fixp->fx_subsy)); + else + reloc->addend = (fixp->fx_addnumber + + fixp->fx_next->fx_frag->fr_address + + fixp->fx_next->fx_where); + } } + else if (fixp->fx_pcrel == 0 || OUTPUT_FLAVOR == bfd_target_elf_flavour) + reloc->addend = fixp->fx_addnumber; else { if (OUTPUT_FLAVOR != bfd_target_aout_flavour) @@ -12137,7 +12319,7 @@ tc_gen_reloc (section, fixp) /* If this is a variant frag, we may need to adjust the existing reloc and generate a new one. */ if (fixp->fx_frag->fr_opcode != NULL - && (fixp->fx_r_type == BFD_RELOC_MIPS_GPREL + && (fixp->fx_r_type == BFD_RELOC_GPREL16 || fixp->fx_r_type == BFD_RELOC_MIPS_GOT16 || fixp->fx_r_type == BFD_RELOC_MIPS_CALL16 || fixp->fx_r_type == BFD_RELOC_MIPS_GOT_HI16 @@ -12157,8 +12339,8 @@ tc_gen_reloc (section, fixp) if (fixp->fx_next != NULL && fixp->fx_frag == fixp->fx_next->fx_frag) { - assert ((fixp->fx_r_type == BFD_RELOC_MIPS_GPREL - && fixp->fx_next->fx_r_type == BFD_RELOC_MIPS_GPREL) + assert ((fixp->fx_r_type == BFD_RELOC_GPREL16 + && fixp->fx_next->fx_r_type == BFD_RELOC_GPREL16) || (fixp->fx_r_type == BFD_RELOC_MIPS_GOT_HI16 && (fixp->fx_next->fx_r_type == BFD_RELOC_MIPS_GOT_LO16)) @@ -12194,7 +12376,7 @@ tc_gen_reloc (section, fixp) if (mips_pic == NO_PIC) { - assert (fixp->fx_r_type == BFD_RELOC_MIPS_GPREL); + assert (fixp->fx_r_type == BFD_RELOC_GPREL16); fixp->fx_r_type = BFD_RELOC_HI16_S; } else if (mips_pic == SVR4_PIC) @@ -12267,7 +12449,7 @@ tc_gen_reloc (section, fixp) stop md_apply_fix3 from subtracting twice in the first place since the fake addend is required for variant frags above. */ if (fixp->fx_addsy != NULL && OUTPUT_FLAVOR == bfd_target_elf_flavour - && code == BFD_RELOC_MIPS_GPREL + && code == BFD_RELOC_GPREL16 && reloc->addend != 0 && mips_need_elf_addend_fixup (fixp)) reloc->addend += S_GET_VALUE (fixp->fx_addsy); @@ -12641,7 +12823,7 @@ get_number () negative = 1; } if (!ISDIGIT (*input_line_pointer)) - as_bad (_("Expected simple number.")); + as_bad (_("expected simple number")); if (input_line_pointer[0] == '0') { if (input_line_pointer[1] == 'x') @@ -12669,7 +12851,7 @@ get_number () { printf (_(" *input_line_pointer == '%c' 0x%02x\n"), *input_line_pointer, *input_line_pointer); - as_warn (_("Invalid number")); + as_warn (_("invalid number")); return -1; } while (ISDIGIT (*input_line_pointer)) @@ -12702,6 +12884,10 @@ s_mips_end (x) symbolS *p; int maybe_text; + /* Following functions need their own .frame and .cprestore directives. */ + mips_frame_reg_valid = 0; + mips_cprestore_valid = 0; + if (!is_end_of_line[(unsigned char) *input_line_pointer]) { p = get_symbol (); @@ -12819,6 +13005,10 @@ s_mips_ent (aent) if (!aent) { + /* This function needs its own .frame and .cprestore directives. */ + mips_frame_reg_valid = 0; + mips_cprestore_valid = 0; + cur_proc_ptr = &cur_proc; memset (cur_proc_ptr, '\0', sizeof (procS)); diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-mips.h binutils-2.11.93.0.2/gas/config/tc-mips.h --- binutils-2.11.92.0.12.3/gas/config/tc-mips.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-mips.h Sun Feb 3 11:22:31 2002 @@ -45,7 +45,7 @@ struct expressionS; #define MAX_RELOC_EXPANSION 3 #define LOCAL_LABELS_FB 1 -/* Maximum symbol offset that can be encoded in a BFD_RELOC_MIPS_GPREL +/* Maximum symbol offset that can be encoded in a BFD_RELOC_GPREL16 relocation: */ #define MAX_GPREL_OFFSET (0x7FF0) @@ -111,9 +111,6 @@ extern int mips_fix_adjustable PARAMS (( #define TC_FORCE_RELOCATION(fixp) mips_force_relocation (fixp) extern int mips_force_relocation PARAMS ((struct fix *)); -/* md_apply_fix3 sets fx_done correctly. */ -#define TC_HANDLE_FX_DONE 1 - /* Register mask variables. These are set by the MIPS assembly code and used by ECOFF and possibly other object file formats. */ extern unsigned long mips_gprmask; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-mmix.c binutils-2.11.93.0.2/gas/config/tc-mmix.c --- binutils-2.11.92.0.12.3/gas/config/tc-mmix.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-mmix.c Thu Feb 7 10:21:04 2002 @@ -1,5 +1,5 @@ /* tc-mmix.c -- Assembler for Don Knuth's MMIX. - Copyright (C) 2001 Free Software Foundation. + Copyright (C) 2001, 2002 Free Software Foundation. This file is part of GAS, the GNU Assembler. @@ -154,11 +154,15 @@ static int warn_on_expansion = 1; /* Should we merge non-zero GREG register definitions? */ static int merge_gregs = 1; +/* Should we pass on undefined BFD_RELOC_MMIX_BASE_PLUS_OFFSET relocs + (missing suitable GREG definitions) to the linker? */ +static int allocate_undefined_gregs_in_linker = 0; + /* Should we emit built-in symbols? */ static int predefined_syms = 1; -/* Should we anything but the listed special register name (e.g. equated - symbols)? */ +/* Should we allow anything but the listed special register name + (e.g. equated symbols)? */ static int equated_spec_regs = 1; /* Do we require standard GNU syntax? */ @@ -185,6 +189,7 @@ struct option md_longopts[] = #define OPTION_GNU_SYNTAX (OPTION_NOSYMS + 1) #define OPTION_GLOBALIZE_SYMBOLS (OPTION_GNU_SYNTAX + 1) #define OPTION_FIXED_SPEC_REGS (OPTION_GLOBALIZE_SYMBOLS + 1) +#define OPTION_LINKER_ALLOCATED_GREGS (OPTION_FIXED_SPEC_REGS + 1) {"linkrelax", no_argument, NULL, OPTION_RELAX}, {"no-expand", no_argument, NULL, OPTION_NOEXPAND}, {"no-merge-gregs", no_argument, NULL, OPTION_NOMERGEGREG}, @@ -193,6 +198,8 @@ struct option md_longopts[] = {"globalize-symbols", no_argument, NULL, OPTION_GLOBALIZE_SYMBOLS}, {"fixed-special-register-names", no_argument, NULL, OPTION_FIXED_SPEC_REGS}, + {"linker-allocated-gregs", no_argument, NULL, + OPTION_LINKER_ALLOCATED_GREGS}, {NULL, no_argument, NULL, 0} }; @@ -621,6 +628,7 @@ md_parse_option (c, arg) { case 'x': warn_on_expansion = 0; + allocate_undefined_gregs_in_linker = 1; break; case OPTION_RELAX: @@ -653,6 +661,10 @@ md_parse_option (c, arg) equated_spec_regs = 0; break; + case OPTION_LINKER_ALLOCATED_GREGS: + allocate_undefined_gregs_in_linker = 1; + break; + default: return 0; } @@ -685,9 +697,13 @@ md_show_usage (stream) fprintf (stream, _("\ -no-merge-gregs Do not merge GREG definitions with nearby values.\n")); fprintf (stream, _("\ + -linker-allocated-gregs If there's no suitable GREG definition for the\ + operands of an instruction, let the linker resolve.\n")); + fprintf (stream, _("\ -x Do not warn when an operand to GETA, a branch,\n\ PUSHJ or JUMP is not known to be within range.\n\ - The linker will catch any errors.\n")); + The linker will catch any errors. Implies\n\ + -linker-allocated-gregs.")); } /* Step to end of line, but don't step over the end of the line. */ @@ -1031,10 +1047,10 @@ md_assemble (str) current_fb_label = -1; } - /* We also assume that the length of the instruction is determinable - from the first format character. Currently *all* the information is - in the first character. We need a self-contained frag since we want - the relocation to point to the instruction, not the variant part. */ + /* We also assume that the length of the instruction is at least 4, the + size of an unexpanded instruction. We need a self-contained frag + since we want the relocation to point to the instruction, not the + variant part. */ opcodep = frag_more (4); mmix_opcode_frag = opc_fragP = frag_now; @@ -2571,14 +2587,20 @@ tc_gen_reloc (section, fixP) fixS *fixP; { bfd_signed_vma val - = fixP->fx_offset + (fixP->fx_addsy ? S_GET_VALUE (fixP->fx_addsy) : 0); + = fixP->fx_offset + + (fixP->fx_addsy != NULL + && !S_IS_WEAK (fixP->fx_addsy) + && !S_IS_COMMON (fixP->fx_addsy) + ? S_GET_VALUE (fixP->fx_addsy) : 0); arelent *relP; bfd_reloc_code_real_type code = BFD_RELOC_NONE; char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; symbolS *addsy = fixP->fx_addsy; asection *addsec = addsy == NULL ? NULL : S_GET_SEGMENT (addsy); - bfd_vma addend = fixP->fx_offset; asymbol *baddsy = addsy != NULL ? symbol_get_bfdsym (addsy) : NULL; + bfd_vma addend + = val - (baddsy == NULL || S_IS_COMMON (addsy) || S_IS_WEAK (addsy) + ? 0 : bfd_asymbol_value (baddsy)); /* A single " LOCAL expression" in the wrong section will not work when linking to MMO; relocations for zero-content sections are then @@ -2608,8 +2630,7 @@ tc_gen_reloc (section, fixP) case BFD_RELOC_8: code = fixP->fx_r_type; - if (addsy == NULL - || bfd_is_abs_section (S_GET_SEGMENT (addsy))) + if (addsy == NULL || bfd_is_abs_section (addsec)) { /* Resolve this reloc now, as md_apply_fix3 would have done (not called if -linkrelax). There is no point in keeping a reloc @@ -2658,7 +2679,7 @@ tc_gen_reloc (section, fixP) register contents section (that is, to a register), then we can't resolve the relocation here. */ if (addsy != NULL - && (bfd_is_und_section (S_GET_SEGMENT (addsy)) + && (bfd_is_und_section (addsec) || strcmp (bfd_get_section_name (addsec->owner, addsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0)) { @@ -2672,14 +2693,13 @@ tc_gen_reloc (section, fixP) && (S_GET_SEGMENT (addsy) != real_reg_section || val > 255 || val < 0) - && ! bfd_is_abs_section (S_GET_SEGMENT (addsy))) + && ! bfd_is_abs_section (addsec)) goto badop; /* Set the "immediate" bit of the insn if this relocation is to Z field when the value is a numeric value, i.e. not a register. */ if ((fixP->fx_where & 3) == 3 - && (addsy == NULL - || S_GET_SEGMENT (addsy) == absolute_section)) + && (addsy == NULL || bfd_is_abs_section (addsec))) buf[-3] |= IMM_OFFSET_BIT; buf[0] = val; @@ -2687,8 +2707,8 @@ tc_gen_reloc (section, fixP) case BFD_RELOC_MMIX_BASE_PLUS_OFFSET: if (addsy != NULL - && strcmp (bfd_get_section_name (addsec->owner, addsec), - MMIX_REG_CONTENTS_SECTION_NAME) == 0) + && strcmp (bfd_get_section_name (addsec->owner, addsec), + MMIX_REG_CONTENTS_SECTION_NAME) == 0) { /* This changed into a register; the relocation is for the register-contents section. The constant part remains zero. */ @@ -2701,16 +2721,16 @@ tc_gen_reloc (section, fixP) If we encounter any other defined symbol, then we must find a suitable register and emit a reloc. */ - if (addsy == NULL - || S_GET_SEGMENT (addsy) != real_reg_section) + if (addsy == NULL || addsec != real_reg_section) { 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)) { - if (! symbol_section_p (addsy) - && ! bfd_is_abs_section (S_GET_SEGMENT (addsy))) + if (! symbol_section_p (addsy) && ! bfd_is_abs_section (addsec)) as_fatal (_("internal: BFD_RELOC_MMIX_BASE_PLUS_OFFSET not resolved to section")); /* If this is an absolute symbol sufficiently near @@ -2720,7 +2740,7 @@ tc_gen_reloc (section, fixP) comparisons. */ if (lowest_data_loc != (bfd_vma) -1 && (bfd_vma) val + 256 > lowest_data_loc - && bfd_is_abs_section (S_GET_SEGMENT (addsy))) + && bfd_is_abs_section (addsec)) { val -= (offsetT) lowest_data_loc; addsy = section_symbol (data_section); @@ -2728,7 +2748,7 @@ tc_gen_reloc (section, fixP) /* Likewise text section. */ else if (lowest_text_loc != (bfd_vma) -1 && (bfd_vma) val + 256 > lowest_text_loc - && bfd_is_abs_section (S_GET_SEGMENT (addsy))) + && bfd_is_abs_section (addsec)) { val -= (offsetT) lowest_text_loc; addsy = section_symbol (text_section); @@ -2738,8 +2758,7 @@ tc_gen_reloc (section, fixP) gregs = *symbol_get_tc (addsy); /* If that symbol does not have any associated GREG definitions, - we can't do anything. FIXME: implement allocate-on-demand in - the linker. */ + we can't do anything. */ if (gregs == NULL || (fix = bsearch (&val, gregs->greg_fixes, gregs->n_gregs, sizeof (gregs->greg_fixes[0]), @@ -2750,8 +2769,17 @@ tc_gen_reloc (section, fixP) before the address we want. */ || fix->offs + 255 < val) { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("no suitable GREG definition for operands")); + /* We can either let the linker allocate GREGs + automatically, or emit an error. */ + if (allocate_undefined_gregs_in_linker) + { + /* The values in baddsy and addend are right. */ + code = fixP->fx_r_type; + break; + } + else + as_bad_where (fixP->fx_file, fixP->fx_line, + _("no suitable GREG definition for operands")); return NULL; } else @@ -2781,7 +2809,7 @@ tc_gen_reloc (section, fixP) case BFD_RELOC_MMIX_REG: if (addsy != NULL - && (bfd_is_und_section (S_GET_SEGMENT (addsy)) + && (bfd_is_und_section (addsec) || strcmp (bfd_get_section_name (addsec->owner, addsec), MMIX_REG_CONTENTS_SECTION_NAME) == 0)) { @@ -2790,10 +2818,10 @@ tc_gen_reloc (section, fixP) } if (addsy != NULL - && (S_GET_SEGMENT (addsy) != real_reg_section + && (addsec != real_reg_section || val > 255 || val < 0) - && ! bfd_is_und_section (S_GET_SEGMENT (addsy))) + && ! bfd_is_und_section (addsec)) /* Drop through to error message. */ ; else @@ -3572,7 +3600,9 @@ mmix_frob_file () /* If the symbol is defined, then it must be resolved to a section symbol at this time, or else we don't know how to handle it. */ - if (S_IS_DEFINED (sym)) + if (S_IS_DEFINED (sym) + && !bfd_is_com_section (S_GET_SEGMENT (sym)) + && !S_IS_WEAK (sym)) { if (! symbol_section_p (sym) && ! bfd_is_abs_section (S_GET_SEGMENT (sym))) @@ -3629,14 +3659,12 @@ mmix_frob_file () if (bfd_get_section_flags (stdoutput, real_reg_section) & SEC_HAS_CONTENTS) as_fatal (_("register section has contents\n")); - /* FIXME: This does not seem like the proper way to kill a section, - but it's the way it's done elsewhere, like elf64-alpha.c. */ /* Really remove the section. */ for (secpp = &stdoutput->sections; *secpp != real_reg_section; secpp = &(*secpp)->next) ; - *secpp = (*secpp)->next; + bfd_section_list_remove (stdoutput, secpp); --stdoutput->section_count; } diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-mmix.h binutils-2.11.93.0.2/gas/config/tc-mmix.h --- binutils-2.11.92.0.12.3/gas/config/tc-mmix.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-mmix.h Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* tc-mmix.h -- Header file for tc-mmix.c. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 Free Software Foundation, Inc. Written by Hans-Peter Nilsson (hp@bitrange.com). This file is part of GAS, the GNU Assembler. @@ -75,7 +75,7 @@ extern int mmix_gnu_syntax; && (name[0] == '@' \ ? (! is_part_of_name (name[1]) \ && mmix_current_location (current_location, exp)) \ - : ((name[0] == ':' || isupper (name[0])) \ + : ((name[0] == ':' || ISUPPER (name[0])) \ && mmix_parse_predefined_name (name, exp)))) extern char *mmix_prefix_name PARAMS ((char *)); diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-mn10300.c binutils-2.11.93.0.2/gas/config/tc-mn10300.c --- binutils-2.11.92.0.12.3/gas/config/tc-mn10300.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-mn10300.c Sun Feb 3 11:22:31 2002 @@ -212,7 +212,6 @@ static const struct reg_name xr_register { "mcrl", 3 }, { "mcvf", 4 }, { "mdrq", 1 }, - { "pc", 0 }, { "sp", 0 }, { "xr0", 0 }, { "xr1", 1 }, @@ -238,6 +237,7 @@ static const struct reg_name xr_register static const struct reg_name other_registers[] = { { "mdr", 0 }, + { "pc", 0 }, { "psw", 0 }, { "sp", 0 }, }; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-or32.c binutils-2.11.93.0.2/gas/config/tc-or32.c --- binutils-2.11.92.0.12.3/gas/config/tc-or32.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/config/tc-or32.c Sun Feb 3 11:22:31 2002 @@ -0,0 +1,1636 @@ +/* Assembly backend for the OpenRISC 1000. + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by Damjan Lampret . + Modified bu Johan Rydberg, . + Based upon a29k port. + + 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. */ + +/* tc-a29k.c used as a template. */ + +#include "safe-ctype.h" +#include "as.h" +#include "opcode/or32.h" + +#ifdef BFD_ASSEMBLER +#include "elf/or32.h" +#endif + +#define DEBUG 0 + +#ifndef REGISTER_PREFIX +#define REGISTER_PREFIX '%' +#endif + +/* Make it easier to clone this machine desc into another one. */ +#define machine_opcode or32_opcode +#define machine_opcodes or32_opcodes +#define machine_ip or32_ip +#define machine_it or32_it + +/* Handle of the OPCODE hash table. */ +static struct hash_control *op_hash = NULL; + +struct machine_it + { + char * error; + unsigned long opcode; + struct nlist * nlistp; + expressionS exp; + int pcrel; + int reloc_offset; /* Offset of reloc within insn. */ + int reloc; + } +the_insn; + +static void machine_ip PARAMS ((char *)); + +const pseudo_typeS md_pseudo_table[] = + { + {"align", s_align_bytes, 4 }, + {"space", s_space, 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. */ + {"endproc", s_ignore, 0 }, /* Function end. */ + {"word", cons, 4 }, + {NULL, 0, 0 }, + }; + +int md_short_jump_size = 4; +int md_long_jump_size = 4; + +#if defined(BFD_HEADERS) +#ifdef RELSZ +const int md_reloc_size = RELSZ; /* Coff headers. */ +#else +const int md_reloc_size = 12; /* Something else headers. */ +#endif +#else +const int md_reloc_size = 12; /* Not bfdized. */ +#endif + +/* This array holds the chars that always start a comment. + If the pre-processor is disabled, these aren't very useful. */ +const char comment_chars[] = "#"; + +/* This array holds the chars that only start a comment at the beginning of + a line. If the line seems to have the form '# 123 filename' + .line and .file directives will appear in the pre-processed output. */ +/* Note that input_file.c hand checks for '#' at the beginning of the + first line of the input file. This is because the compiler outputs + #NO_APP at the beginning of its output. */ +/* Also note that comments like this one will always work. */ +const char line_comment_chars[] = "#"; + +/* We needed an unused char for line separation to work around the + lack of macros, using sed and such. */ +const char line_separator_chars[] = ";"; + +/* Chars that can be used to separate mant from exp in floating point nums. */ +const char EXP_CHARS[] = "eE"; + +/* Chars that mean this number is a floating point constant. + As in 0f12.456 + or 0d1.2345e12. */ +const char FLT_CHARS[] = "rRsSfFdDxXpP"; + +/* "l.jalr r9" precalculated opcode. */ +static unsigned long jalr_r9_opcode; + + +static int check_invalid_opcode PARAMS ((unsigned long)); +static void encode PARAMS ((const struct machine_opcode *, unsigned long *, signed long, char)); +#ifdef BFD_ASSEMBLER +static char * parse_operand PARAMS ((char *, expressionS *, int)); +#endif + +/* Set bits in machine opcode according to insn->encoding + description and passed operand. */ + +static void +encode (insn, opcode, param_val, param_ch) + const struct machine_opcode *insn; + unsigned long *opcode; + signed long param_val; + char param_ch; +{ + int opc_pos = 0; + int param_pos = 0; + char *enc; + +#if DEBUG + printf (" encode: opcode=%.8lx param_val=%.8lx abs=%.8lx param_ch=%c\n", + *opcode, param_val, abs (param_val), param_ch); +#endif + for (enc = insn->encoding; *enc != '\0'; enc++) + if (*enc == param_ch) + { + if (enc - 2 >= insn->encoding && (*(enc - 2) == '0') && (*(enc - 1) == 'x')) + continue; + else + param_pos ++; + } + + opc_pos = 32; + + for (enc = insn->encoding; *enc != '\0';) + { + if ((*enc == '0') && (*(enc + 1) == 'x')) + { + int tmp = strtol (enc, NULL, 16); + + opc_pos -= 4; + *opcode |= tmp << opc_pos; + enc += 3; + } + else if ((*enc == '0') || (*enc == '-')) + { + opc_pos--; + enc++; + } + else if (*enc == '1') + { + opc_pos--; + *opcode |= 1 << opc_pos; + enc++; + } + else if (*enc == param_ch) + { + opc_pos--; + param_pos--; + *opcode |= ((param_val >> param_pos) & 0x1) << opc_pos; + enc++; + } + else if (ISALPHA (*enc)) + { + opc_pos--; + enc++; + } + else + enc++; + } + +#if DEBUG + printf (" opcode=%.8lx\n", *opcode); +#endif +} + +/* This function is called once, at assembler startup time. It should + set up all the tables, etc., that the MD part of the assembler will + need. */ + +void +md_begin () +{ + const char *retval = NULL; + int lose = 0; + int skipnext = 0; + unsigned int i; + + /* Hash up all the opcodes for fast use later. */ + op_hash = hash_new (); + + for (i = 0; i < or32_num_opcodes; i++) + { + const char *name = machine_opcodes[i].name; + + if (skipnext) + { + skipnext = 0; + continue; + } + + retval = hash_insert (op_hash, name, (PTR) &machine_opcodes[i]); + if (retval != NULL) + { + fprintf (stderr, "internal error: can't hash `%s': %s\n", + machine_opcodes[i].name, retval); + lose = 1; + } + } + + if (lose) + as_fatal (_("Broken assembler. No assembly attempted.")); + + encode (&machine_opcodes[insn_index ("l.jalr")], &jalr_r9_opcode, 9, 'B'); +} + +/* Returs non zero if instruction is to be used. */ + +static int +check_invalid_opcode (opcode) + unsigned long opcode; +{ + return opcode == jalr_r9_opcode; +} + +/* Assemble a single instruction. Its label has already been handled + by the generic front end. We just parse opcode and operands, and + produce the bytes of data and relocation. */ + +void +md_assemble (str) + char *str; +{ + char *toP; + +#if DEBUG + printf ("NEW INSTRUCTION\n"); +#endif + + know (str); + machine_ip (str); + toP = frag_more (4); + + /* Put out the opcode. */ + md_number_to_chars (toP, the_insn.opcode, 4); + + /* Put out the symbol-dependent stuff. */ +#ifdef BFD_ASSEMBLER + if (the_insn.reloc != BFD_RELOC_NONE) +#else + if (the_insn.reloc != NO_RELOC) +#endif + { + fix_new_exp (frag_now, + (toP - frag_now->fr_literal + the_insn.reloc_offset), + 4, /* size */ + &the_insn.exp, + the_insn.pcrel, + the_insn.reloc); + } +} + +/* This is true of the we have issued a "lo(" or "hi"(. */ +static int waiting_for_shift = 0; + +static int mask_or_shift = 0; + +#ifdef BFD_ASSEMBLER +static char * +parse_operand (s, operandp, opt) + char *s; + expressionS *operandp; + int opt; +{ + char *save = input_line_pointer; + char *new; + +#if DEBUG + printf (" PROCESS NEW OPERAND(%s) == %c (%d)\n", s, opt ? opt : '!', opt); +#endif + + input_line_pointer = s; + + if (strncasecmp (s, "HI(", 3) == 0) + { + waiting_for_shift = 1; + mask_or_shift = BFD_RELOC_HI16; + + input_line_pointer += 3; + } + else if (strncasecmp (s, "LO(", 3) == 0) + { + mask_or_shift = BFD_RELOC_LO16; + + input_line_pointer += 3; + } + else + mask_or_shift = 0; + + if ((*s == '(') && (*(s+1) == 'r')) + s++; + + 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++; + input_line_pointer = save; + return s; + } + + expression (operandp); + + if (operandp->X_op == O_absent) + { + if (! opt) + as_bad (_("missing operand")); + else + { + operandp->X_add_number = 0; + 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 + + return new; +} +#else + +char * +parse_operand (s, operandp, opt) + char *s; + expressionS *operandp; + int opt; +{ + char *save = input_line_pointer; + char *new; + +#if DEBUG + printf (" PROCESS NEW OPERAND(%s) == %c (%d)\n", s, opt ? opt : '!', opt); +#endif + + input_line_pointer = s; + + if (strncasecmp (s, "HI(", 3) == 0) + { + waiting_for_shift = 1; + mask_or_shift = RELOC_CONSTH; + + input_line_pointer += 3; + } + else if (strncasecmp (s, "LO(", 3) == 0) + { + mask_or_shift = RELOC_CONST; + + input_line_pointer += 3; + } + else + mask_or_shift = 0; + + + expression (operandp); + + if (operandp->X_op == O_absent) + { + if (! opt) + as_bad (_("missing operand")); + else + { + operandp->X_add_number = 0; + operandp->X_op = O_constant; + } + } + + new = input_line_pointer; + input_line_pointer = save; + + if ((operandp->X_op == O_symbol) && (*s != '_')) + { +#if DEBUG + printf ("symbol: '%s'\n", save); +#endif + + for (save = s; s < new; s++) + if ((*s == REGISTER_PREFIX) && (*(s + 1) == 'r')) /* Register prefix. */ + s++; + + if ((*s == 'r') && ISDIGIT (*(s + 1))) + { + operandp->X_add_number = strtol (s + 1, NULL, 10); + operandp->X_op = O_register; + } + s = save; + } + +#if DEBUG + printf (" %s=parse_operand(%s): operandp->X_op = %u\n", new, s, operandp->X_op); +#endif + + return new; +} +#endif + +/* Instruction parsing. Takes a string containing the opcode. + Operands are at input_line_pointer. Output is in the_insn. + Warnings or errors are generated. */ + +#ifdef BFD_ASSEMBLER +static void +machine_ip (str) + char *str; +{ + char *s; + const char *args; + const struct machine_opcode *insn; + char *argsStart; + unsigned long opcode; + expressionS the_operand; + expressionS *operand = &the_operand; + unsigned int regno; + int reloc = BFD_RELOC_NONE; + +#if DEBUG + printf ("machine_ip(%s)\n", str); +#endif + + s = str; + for (; ISALNUM (*s) || *s == '.'; ++s) + if (ISUPPER (*s)) + *s = TOLOWER (*s); + + switch (*s) + { + case '\0': + break; + + case ' ': /* FIXME-SOMEDAY more whitespace. */ + *s++ = '\0'; + break; + + default: + as_bad (_("unknown opcode1: `%s'"), str); + return; + } + + if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) + { + as_bad (_("unknown opcode2 `%s'."), str); + return; + } + + argsStart = s; + opcode = 0; + memset (&the_insn, '\0', sizeof (the_insn)); + the_insn.reloc = BFD_RELOC_NONE; + + reloc = BFD_RELOC_NONE; + + /* 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. */ + s = parse_operand (s, operand, insn->args[0] == 'I'); + } + + for (args = insn->args;; ++args) + { +#if DEBUG + printf (" args = %s\n", args); +#endif + switch (*args) + { + case '\0': /* End of args. */ + /* We have have 0 args, do the bazoooka! */ + if (args == insn->args) + encode (insn, &opcode, 0, 0); + + if (*s == '\0') + { + /* We are truly done. */ + the_insn.opcode = opcode; + if (check_invalid_opcode (opcode)) + as_bad (_("instruction not allowed: %s"), str); + return; + } + as_bad (_("too many operands: %s"), s); + break; + + case ',': /* Must match a comma. */ + if (*s++ == ',') + { + reloc = BFD_RELOC_NONE; + + /* Parse next operand. */ + s = parse_operand (s, operand, args[1] == 'I'); +#if DEBUG + printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n", + operand->X_add_number, args, s); +#endif + continue; + } + break; + + case '(': /* Must match a (. */ + s = parse_operand (s, operand, args[1] == 'I'); + continue; + + case ')': /* Must match a ). */ + continue; + + case 'r': /* A general register. */ + args++; + + 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; + encode (insn, &opcode, regno, *args); +#if DEBUG + printf (" r: operand->X_op = %d\n", operand->X_op); +#endif + continue; + + default: + /* if (! ISALPHA (*args)) + break; */ /* Only immediate values. */ + + if (mask_or_shift) + { +#if DEBUG + printf ("mask_or_shift = %d\n", mask_or_shift); +#endif + reloc = mask_or_shift; + } + mask_or_shift = 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) + { +#if DEBUG + printf ("reloc_consth\n"); +#endif + reloc = BFD_RELOC_HI16; + } + + if (*s == '(') + { + operand->X_op = O_constant; +#if 0 + operand->X_add_number = 0; /* ??? if enabled load/store offsets + are zero. */ +#endif + } + else if (*s == ')') + s += 1; +#if DEBUG + printf (" default case: operand->X_add_number = %d, *args = %s, *s = %s\n", operand->X_add_number, args, s); +#endif + if (operand->X_op == O_constant) + { + if (reloc == BFD_RELOC_NONE) + { + bfd_vma v, mask; + + mask = 0x3ffffff; + v = abs (operand->X_add_number) & ~ mask; + if (v) + as_bad (_("call/jmp target out of range (1)")); + } + + if (reloc == BFD_RELOC_HI16) + operand->X_add_number = ((operand->X_add_number >> 16) & 0xffff); + + the_insn.pcrel = 0; + encode (insn, &opcode, operand->X_add_number, *args); + /* the_insn.reloc = BFD_RELOC_NONE; */ + continue; + } + + if (reloc == BFD_RELOC_NONE) + the_insn.reloc = BFD_RELOC_32_GOT_PCREL; + else + the_insn.reloc = reloc; + + /* the_insn.reloc = insn->reloc; */ +#if DEBUG + printf (" reloc sym=%d\n", the_insn.reloc); + 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. */ + + /* FIXME-SOON, Do we figure out whether abs later, after + know sym val? */ + if (reloc == BFD_RELOC_LO16 || reloc == BFD_RELOC_HI16) + the_insn.pcrel = 0; + + encode (insn, &opcode, operand->X_add_number, *args); + continue; + } + + /* Types or values of args don't match. */ + as_bad (_("invalid operands")); + return; + } +} + +#else + +static void +machine_ip (str) + char *str; +{ + char *s; + const char *args; + const struct machine_opcode *insn; + char *argsStart; + unsigned long opcode; + expressionS the_operand; + expressionS *operand = &the_operand; + unsigned int regno; + int reloc = NO_RELOC; + +#if DEBUG + printf ("machine_ip(%s)\n", str); +#endif + + s = str; + for (; ISALNUM (*s) || *s == '.'; ++s) + if (ISUPPER (*s)) + *s = TOLOWER (*s); + + switch (*s) + { + case '\0': + break; + + case ' ': /* FIXME-SOMEDAY more whitespace. */ + *s++ = '\0'; + break; + + default: + as_bad (_("unknown opcode1: `%s'"), str); + return; + } + + if ((insn = (struct machine_opcode *) hash_find (op_hash, str)) == NULL) + { + as_bad (_("unknown opcode2 `%s'."), str); + return; + } + + argsStart = s; + opcode = 0; + memset (&the_insn, '\0', sizeof (the_insn)); + the_insn.reloc = NO_RELOC; + + reloc = NO_RELOC; + + /* 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. */ + s = parse_operand (s, operand, + insn->args[0] == 'I' + || strcmp (insn->name, "l.nop") == 0); + + for (args = insn->args;; ++args) + { +#if DEBUG + printf (" args = %s\n", args); +#endif + switch (*args) + { + case '\0': /* End of args. */ + /* We have have 0 args, do the bazoooka! */ + if (args == insn->args) + encode (insn, &opcode, 0, 0); + + if (*s == '\0') + { + /* We are truly done. */ + the_insn.opcode = opcode; + if (check_invalid_opcode (opcode)) + as_bad (_("instruction not allowed: %s"), str); + return; + } + as_bad (_("too many operands: %s"), s); + break; + + case ',': /* Must match a comma. */ + if (*s++ == ',') + { + reloc = NO_RELOC; + + /* Parse next operand. */ + s = parse_operand (s, operand, args[1] == 'I'); +#if DEBUG + printf (" ',' case: operand->X_add_number = %d, *args = %s, *s = %s\n", + operand->X_add_number, args, s); +#endif + continue; + } + break; + + case '(': /* Must match a (. */ + s = parse_operand (s, operand, args[1] == 'I'); + continue; + + case ')': /* Must match a ). */ + continue; + + case 'r': /* A general register. */ + args++; + + 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; + encode (insn, &opcode, regno, *args); +#if DEBUG + printf (" r: operand->X_op = %d\n", operand->X_op); +#endif + continue; + + default: + /* if (! ISALPHA (*args)) + break; */ /* Only immediate values. */ + + if (mask_or_shift) + { +#if DEBUG + printf ("mask_or_shift = %d\n", mask_or_shift); +#endif + reloc = mask_or_shift; + } + mask_or_shift = 0; + + if (strncasecmp (args, "LO(", 3) == 0) + { +#if DEBUG + printf ("reloc_const\n"); +#endif + reloc = RELOC_CONST; + } + else if (strncasecmp (args, "HI(", 3) == 0) + { +#if DEBUG + printf ("reloc_consth\n"); +#endif + reloc = RELOC_CONSTH; + } + + if (*s == '(') + { + operand->X_op = O_constant; +#if 0 + operand->X_add_number = 0; /* ??? if enabled load/store offsets + are zero. */ +#endif + } + else if (*s == ')') + s += 1; +#if DEBUG + printf (" default case: operand->X_add_number = %d, *args = %s, *s = %s\n", + operand->X_add_number, args, s); +#endif + if (operand->X_op == O_constant) + { + if (reloc == NO_RELOC) + { + unsigned long v, mask; + + mask = 0x3ffffff; + v = abs (operand->X_add_number) & ~ mask; + if (v) + as_bad (_("call/jmp target out of range (1)")); + } + + if (reloc == RELOC_CONSTH) + operand->X_add_number = ((operand->X_add_number>>16) & 0xffff); + + the_insn.pcrel = 0; + encode (insn, &opcode, operand->X_add_number, *args); + /* the_insn.reloc = NO_RELOC; */ + continue; + } + + if (reloc == NO_RELOC) + the_insn.reloc = RELOC_JUMPTARG; + else + the_insn.reloc = reloc; +#if DEBUG + printf (" reloc sym=%d\n", the_insn.reloc); + 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. */ + + /* FIXME-SOON, Do we figure out whether abs later, after + know sym val? */ + if (reloc == RELOC_CONST || reloc == RELOC_CONSTH) + the_insn.pcrel = 0; + + encode (insn, &opcode, operand->X_add_number, *args); + continue; + } + + /* Types or values of args don't match. */ + as_bad (_("invalid operands")); + return; + } +} +#endif + +/* This is identical to the md_atof in m68k.c. I think this is right, + but I'm not sure. + + Turn a string in input_line_pointer into a floating point constant + of type type, and store the appropriate bytes in *litP. The number + of LITTLENUMS emitted is stored in *sizeP . An error message is + returned, or NULL on OK. */ + +/* Equal to MAX_PRECISION in atof-ieee.c. */ +#define MAX_LITTLENUMS 6 + +char * +md_atof (type, litP, sizeP) + char type; + char * litP; + int * sizeP; +{ + int prec; + LITTLENUM_TYPE words[MAX_LITTLENUMS]; + LITTLENUM_TYPE *wordP; + char *t; + + switch (type) + { + case 'f': + case 'F': + case 's': + case 'S': + prec = 2; + break; + + case 'd': + case 'D': + case 'r': + case 'R': + prec = 4; + break; + + case 'x': + case 'X': + prec = 6; + break; + + case 'p': + case 'P': + prec = 6; + break; + + default: + *sizeP = 0; + return _("Bad call to MD_ATOF()"); + } + + t = atof_ieee (input_line_pointer, type, words); + if (t) + input_line_pointer = t; + + *sizeP = prec * sizeof (LITTLENUM_TYPE); + + for (wordP = words; prec--;) + { + md_number_to_chars (litP, (valueT) (*wordP++), sizeof (LITTLENUM_TYPE)); + litP += sizeof (LITTLENUM_TYPE); + } + + return NULL; +} + +/* Write out big-endian. */ + +void +md_number_to_chars (buf, val, n) + char *buf; + valueT val; + int n; +{ + number_to_chars_bigendian (buf, val, n); +} + +#ifdef BFD_ASSEMBLER +void +md_apply_fix3 (fixP, val, seg) + fixS * fixP; + valueT * val; + segT seg ATTRIBUTE_UNUSED; +{ + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; + long t_val; + + t_val = (long) *val; + +#if DEBUG + printf ("md_apply_fix val:%x\n", t_val); +#endif + + fixP->fx_addnumber = t_val; /* Remember value for emit_reloc. */ + + know (fixP->fx_size == 4); + know (fixP->fx_r_type < BFD_RELOC_NONE); + + switch (fixP->fx_r_type) + { + case BFD_RELOC_32: /* XXXXXXXX pattern in a word. */ +#if DEBUG + printf ("reloc_const: val=%x\n", t_val); +#endif + buf[0] = t_val >> 24; + buf[1] = t_val >> 16; + buf[2] = t_val >> 8; + buf[3] = t_val; + break; + + case BFD_RELOC_16: /* XXXX0000 pattern in a word. */ +#if DEBUG + printf ("reloc_const: val=%x\n", t_val); +#endif + buf[0] = t_val >> 8; + buf[1] = t_val; + break; + + case BFD_RELOC_8: /* XX000000 pattern in a word. */ +#if DEBUG + printf ("reloc_const: val=%x\n", t_val); +#endif + buf[0] = t_val; + break; + + case BFD_RELOC_LO16: /* 0000XXXX pattern in a word. */ +#if DEBUG + printf ("reloc_const: val=%x\n", t_val); +#endif + buf[2] = t_val >> 8; /* Holds bits 0000XXXX. */ + buf[3] = t_val; + break; + + case BFD_RELOC_HI16: /* 0000XXXX pattern in a word. */ +#if DEBUG + printf ("reloc_consth: val=%x\n", t_val); +#endif + buf[2] = t_val >> 24; /* Holds bits XXXX0000. */ + buf[3] = t_val >> 16; + break; + + case BFD_RELOC_32_GOT_PCREL: /* 0000XXXX pattern in a word. */ + if (!fixP->fx_done) + { + /* The linker tries to support both AMD and old GNU style + R_IREL relocs. That means that if the addend is exactly + the negative of the address within the section, the + linker will not handle it correctly. */ +#if 0 + if (fixP->fx_pcrel + && t_val != 0 + && t_val == - (fixP->fx_frag->fr_address + fixP->fx_where)) + as_bad_where + (fixP->fx_file, fixP->fx_line, + _("the linker will not handle this relocation correctly (1)")); +#endif + } + else if (fixP->fx_pcrel) + { + long v = t_val >> 28; + + if (v != 0 && v != -1) + as_bad_where (fixP->fx_file, fixP->fx_line, + _("call/jmp target out of range (2)")); + } + else + /* This case was supposed to be handled in machine_ip. */ + abort (); + + buf[0] |= (t_val >> 26) & 0x03; /* Holds bits 0FFFFFFC of address. */ + buf[1] = t_val >> 18; + buf[2] = t_val >> 10; + buf[3] = t_val >> 2; + break; + + case BFD_RELOC_VTABLE_INHERIT: + case BFD_RELOC_VTABLE_ENTRY: + fixP->fx_done = 0; + break; + + case BFD_RELOC_NONE: + default: + as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type); + break; + } + + if (fixP->fx_addsy == (symbolS *) NULL) + fixP->fx_done = 1; +} +#else +void +md_apply_fix3 (fixP, valP, seg) + fixS *fixP; + valueT *valP; + segT seg ATTRIBUTE_UNUSED; +{ + long val = *(long*)valP; + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal; + +#if DEBUG + printf ("md_apply_fix val:%x\n", val); +#endif + + fixP->fx_addnumber = val; /* Remember value for emit_reloc. */ + + know (fixP->fx_size == 4); + know (fixP->fx_r_type < NO_RELOC); + + /* This is a hack. There should be a better way to handle this. */ + if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy) + val += fixP->fx_where + fixP->fx_frag->fr_address; + + switch (fixP->fx_r_type) + { + case RELOC_32: + buf[0] = val >> 24; + buf[1] = val >> 16; + buf[2] = val >> 8; + buf[3] = val; + break; + + case RELOC_8: + buf[0] = val; + break; + + case RELOC_WDISP30: + val = (val >>= 2) + 1; + buf[0] |= (val >> 24) & 0x3f; + buf[1] = (val >> 16); + buf[2] = val >> 8; + buf[3] = val; + break; + + case RELOC_HI22: + buf[1] |= (val >> 26) & 0x3f; + buf[2] = val >> 18; + buf[3] = val >> 10; + break; + + case RELOC_LO10: + buf[2] |= (val >> 8) & 0x03; + buf[3] = val; + break; + + case RELOC_BASE13: + buf[2] |= (val >> 8) & 0x1f; + buf[3] = val; + break; + + case RELOC_WDISP22: + val = (val >>= 2) + 1; + /* FALLTHROUGH */ + case RELOC_BASE22: + buf[1] |= (val >> 16) & 0x3f; + buf[2] = val >> 8; + buf[3] = val; + break; + + case RELOC_JUMPTARG: /* 0000XXXX pattern in a word. */ + if (!fixP->fx_done) + { + /* The linker tries to support both AMD and old GNU style + R_IREL relocs. That means that if the addend is exactly + the negative of the address within the section, the + linker will not handle it correctly. */ +#if 0 + if (fixP->fx_pcrel + && val != 0 + && val == - (fixP->fx_frag->fr_address + fixP->fx_where)) + as_bad_where + (fixP->fx_file, fixP->fx_line, + _("the linker will not handle this relocation correctly (1)")); +#endif + } + else if (fixP->fx_pcrel) + { + long v = val >> 28; +#if 1 + if (v != 0 && v != -1) + as_bad_where (fixP->fx_file, fixP->fx_line, + _("call/jmp target out of range (2)")); +#endif + } + else + /* This case was supposed to be handled in machine_ip. */ + abort (); + + buf[0] |= (val >> 26) & 0x03; /* Holds bits 0FFFFFFC of address. */ + buf[1] = val >> 18; + buf[2] = val >> 10; + buf[3] = val >> 2; + break; + + case RELOC_CONST: /* 0000XXXX pattern in a word. */ +#if DEBUG + printf ("reloc_const: val=%x\n", val); +#endif + buf[2] = val >> 8; /* Holds bits 0000XXXX. */ + buf[3] = val; + break; + + case RELOC_CONSTH: /* 0000XXXX pattern in a word. */ +#if DEBUG + printf ("reloc_consth: val=%x\n", val); +#endif + buf[2] = val >> 24; /* Holds bits XXXX0000. */ + buf[3] = val >> 16; + break; + + case BFD_RELOC_VTABLE_INHERIT: + case BFD_RELOC_VTABLE_ENTRY: + fixP->fx_done = 0; + break; + + case NO_RELOC: + default: + as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type); + break; + } + + if (fixP->fx_addsy == (symbolS *) NULL) + fixP->fx_done = 1; +} +#endif + +#ifdef OBJ_COFF +short +tc_coff_fix2rtype (fixP) + fixS *fixP; +{ +#if DEBUG + printf ("tc_coff_fix2rtype\n"); +#endif + + switch (fixP->fx_r_type) + { + case RELOC_32: + return (R_WORD); + case RELOC_8: + return (R_BYTE); + case RELOC_CONST: + return (R_ILOHALF); + case RELOC_CONSTH: + return (R_IHIHALF); + case RELOC_JUMPTARG: + return (R_IREL); + default: + printf ("need %d\n", fixP->fx_r_type); + abort (); + } + + return 0; +} + +#endif /* OBJ_COFF */ + +/* Should never be called for or32. */ + +void +md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol) + char * ptr ATTRIBUTE_UNUSED; + addressT from_addr ATTRIBUTE_UNUSED; + addressT to_addr ATTRIBUTE_UNUSED; + fragS * frag ATTRIBUTE_UNUSED; + symbolS * to_symbol ATTRIBUTE_UNUSED; +{ + as_fatal ("or32_create_short_jmp\n"); +} + +/* Should never be called for or32. */ + +#ifndef BFD_ASSEMBLER +void +md_convert_frag (headers, seg, fragP) + object_headers * headers ATTRIBUTE_UNUSED; + segT seg ATTRIBUTE_UNUSED; + register fragS * fragP ATTRIBUTE_UNUSED; +{ + as_fatal ("or32_convert_frag\n"); +} + +#else +void +md_convert_frag (headers, seg, fragP) + bfd * headers ATTRIBUTE_UNUSED; + segT seg ATTRIBUTE_UNUSED; + fragS * fragP ATTRIBUTE_UNUSED; +{ + as_fatal ("or32_convert_frag\n"); +} +#endif + +/* Should never be called for or32. */ + +void +md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol) + char * ptr ATTRIBUTE_UNUSED; + addressT from_addr ATTRIBUTE_UNUSED; + addressT to_addr ATTRIBUTE_UNUSED; + fragS * frag ATTRIBUTE_UNUSED; + symbolS * to_symbol ATTRIBUTE_UNUSED; +{ + as_fatal ("or32_create_long_jump\n"); +} + +/* Should never be called for or32. */ + +int +md_estimate_size_before_relax (fragP, segtype) + fragS * fragP ATTRIBUTE_UNUSED; + segT segtype ATTRIBUTE_UNUSED; +{ + as_fatal ("or32_estimate_size_before_relax\n"); + return 0; +} + +/* Translate internal representation of relocation info to target format. + + On sparc/29k: first 4 bytes are normal unsigned long address, next three + bytes are index, most sig. byte first. Byte 7 is broken up with + bit 7 as external, bits 6 & 5 unused, and the lower + five bits as relocation type. Next 4 bytes are long addend. */ +/* Thanx and a tip of the hat to Michael Bloom, mb@ttidca.tti.com. */ + +#ifdef OBJ_AOUT +void +tc_aout_fix_to_chars (where, fixP, segment_address_in_file) + char *where; + fixS *fixP; + relax_addressT segment_address_in_file; +{ + long r_symbolnum; + +#if DEBUG + printf ("tc_aout_fix_to_chars\n"); +#endif + + know (fixP->fx_r_type < BFD_RELOC_NONE); + know (fixP->fx_addsy != NULL); + + md_number_to_chars + (where, + fixP->fx_frag->fr_address + fixP->fx_where - segment_address_in_file, + 4); + + r_symbolnum = (S_IS_DEFINED (fixP->fx_addsy) + ? S_GET_TYPE (fixP->fx_addsy) + : fixP->fx_addsy->sy_number); + + where[4] = (r_symbolnum >> 16) & 0x0ff; + where[5] = (r_symbolnum >> 8) & 0x0ff; + where[6] = r_symbolnum & 0x0ff; + where[7] = (((!S_IS_DEFINED (fixP->fx_addsy)) << 7) & 0x80) | (0 & 0x60) | (fixP->fx_r_type & 0x1F); + + /* Also easy. */ + md_number_to_chars (&where[8], fixP->fx_addnumber, 4); +} + +#endif /* OBJ_AOUT */ + +const char *md_shortopts = ""; + +struct option md_longopts[] = + { + { NULL, no_argument, NULL, 0 } + }; +size_t md_longopts_size = sizeof (md_longopts); + +int +md_parse_option (c, arg) + int c ATTRIBUTE_UNUSED; + char * arg ATTRIBUTE_UNUSED; +{ + return 0; +} + +void +md_show_usage (stream) + FILE * stream ATTRIBUTE_UNUSED; +{ +} + +/* This is called when a line is unrecognized. This is used to handle + definitions of or32 style local labels. */ + +int +or32_unrecognized_line (c) + int c; +{ + int lab; + char *s; + + if (c != '$' + || ! ISDIGIT ((unsigned char) input_line_pointer[0])) + return 0; + + s = input_line_pointer; + + lab = 0; + while (ISDIGIT ((unsigned char) *s)) + { + lab = lab * 10 + *s - '0'; + ++s; + } + + if (*s != ':') + /* Not a label definition. */ + return 0; + + if (dollar_label_defined (lab)) + { + as_bad (_("label \"$%d\" redefined"), lab); + return 0; + } + + define_dollar_label (lab); + colon (dollar_label_name (lab, 0)); + input_line_pointer = s + 1; + + return 1; +} + +#ifndef BFD_ASSEMBLER +/* Record a fixup for a cons expression. */ +/* + void +or32_cons_fix_new (frag, where, nbytes, exp) + fragS *frag; + int where; + int nbytes; + expressionS *exp; +{ + fix_new_exp (frag, where, nbytes, exp, 0, + nbytes == 5 ? RELOC_32 + : nbytes == 2 ? RELOC_16 + : RELOC_8); +} +void +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 + don't bother to predefine them unless you actually use one, since there + are a lot of them. */ + +symbolS * +md_undefined_symbol (name) + char *name ATTRIBUTE_UNUSED; +{ +#ifndef BFD_ASSEMBLER + long regnum; + char testbuf[5 + /*SLOP*/ 5]; + +#if DEBUG + printf ("md_undefined_symbol(%s)\n", name); +#endif + + /* Register name. */ + 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 + trailing chars. */ + regnum = atol (& name[1]); + + if (regnum > 31) + as_fatal (_("register out of range")); + + sprintf (testbuf, "%ld", regnum); + + if (strcmp (testbuf, &name[1]) != 0) + return NULL; /* gr007 or lr7foo or whatever. */ + + /* We have a wiener! Define and return a new symbol for it. */ + return (symbol_new (name, SEG_REGISTER, (valueT) regnum, + &zero_address_frag)); + } +#endif + return NULL; +} + +/* Parse an operand that is machine-specific. */ + +void +md_operand (expressionP) + expressionS *expressionP; +{ +#if DEBUG + printf (" md_operand(input_line_pointer = %s)\n", input_line_pointer); +#endif + + if (input_line_pointer[0] == REGISTER_PREFIX && input_line_pointer[1] == 'r') + { + /* We have a numeric register expression. No biggy. */ + input_line_pointer += 2; /* Skip %r */ + (void) expression (expressionP); + + if (expressionP->X_op != O_constant + || expressionP->X_add_number > 255) + as_bad (_("Invalid expression after %%%%\n")); + expressionP->X_op = O_register; + } + else if (input_line_pointer[0] == '&') + { + /* We are taking the 'address' of a register...this one is not + in the manual, but it *is* in traps/fpsymbol.h! What they + seem to want is the register number, as an absolute number. */ + input_line_pointer++; /* Skip & */ + (void) expression (expressionP); + + if (expressionP->X_op != O_register) + as_bad (_("invalid register in & expression")); + else + expressionP->X_op = O_constant; + } + else if (input_line_pointer[0] == '$' + && ISDIGIT ((unsigned char) input_line_pointer[1])) + { + long lab; + char *name; + symbolS *sym; + + /* This is a local label. */ + ++input_line_pointer; + lab = (long) get_absolute_expression (); + + if (dollar_label_defined (lab)) + { + name = dollar_label_name (lab, 0); + sym = symbol_find (name); + } + else + { + name = dollar_label_name (lab, 1); + sym = symbol_find_or_make (name); + } + + expressionP->X_op = O_symbol; + expressionP->X_add_symbol = sym; + expressionP->X_add_number = 0; + } + else if (input_line_pointer[0] == '$') + { + char *s; + char type; + int fieldnum, fieldlimit; + LITTLENUM_TYPE floatbuf[8]; + + /* $float(), $doubleN(), or $extendN() convert floating values + to integers. */ + s = input_line_pointer; + + ++s; + + fieldnum = 0; + if (strncmp (s, "double", sizeof "double" - 1) == 0) + { + s += sizeof "double" - 1; + type = 'd'; + fieldlimit = 2; + } + else if (strncmp (s, "float", sizeof "float" - 1) == 0) + { + s += sizeof "float" - 1; + type = 'f'; + fieldlimit = 1; + } + else if (strncmp (s, "extend", sizeof "extend" - 1) == 0) + { + s += sizeof "extend" - 1; + type = 'x'; + fieldlimit = 4; + } + else + return; + + if (ISDIGIT (*s)) + { + fieldnum = *s - '0'; + ++s; + } + if (fieldnum >= fieldlimit) + return; + + SKIP_WHITESPACE (); + if (*s != '(') + return; + ++s; + SKIP_WHITESPACE (); + + s = atof_ieee (s, type, floatbuf); + if (s == NULL) + return; + s = s; + + SKIP_WHITESPACE (); + if (*s != ')') + return; + ++s; + SKIP_WHITESPACE (); + + input_line_pointer = s; + expressionP->X_op = O_constant; + expressionP->X_unsigned = 1; + expressionP->X_add_number = ((floatbuf[fieldnum * 2] + << LITTLENUM_NUMBER_OF_BITS) + + floatbuf[fieldnum * 2 + 1]); + } +} + +/* Round up a section size to the appropriate boundary. */ + +valueT +md_section_align (segment, size) + segT segment ATTRIBUTE_UNUSED; + valueT size ATTRIBUTE_UNUSED; +{ + return size; /* Byte alignment is fine. */ +} + +/* Exactly what point is a PC-relative offset relative TO? + On the 29000, they're relative to the address of the instruction, + which we have set up as the address of the fixup too. */ + +long +md_pcrel_from (fixP) + fixS *fixP; +{ + return fixP->fx_where + fixP->fx_frag->fr_address; +} + +/* Generate a reloc for a fixup. */ + +#ifdef BFD_ASSEMBLER +arelent * +tc_gen_reloc (seg, fixp) + asection *seg ATTRIBUTE_UNUSED; + fixS *fixp; +{ + arelent *reloc; + + reloc = (arelent *) xmalloc (sizeof (arelent)); + reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *)); + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; + /* reloc->address = fixp->fx_frag->fr_address + fixp->fx_where + fixp->fx_addnumber;*/ + reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); + + if (reloc->howto == (reloc_howto_type *) NULL) + { + as_bad_where (fixp->fx_file, fixp->fx_line, + _("reloc %d not supported by object file format"), + (int) fixp->fx_r_type); + return NULL; + } + + if ( fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY + || fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT) + reloc->addend = fixp->fx_offset; + else + reloc->addend = fixp->fx_addnumber; + + return reloc; +} +#endif + diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-or32.h binutils-2.11.93.0.2/gas/config/tc-or32.h --- binutils-2.11.92.0.12.3/gas/config/tc-or32.h Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/config/tc-or32.h Sun Feb 3 11:22:31 2002 @@ -0,0 +1,63 @@ +/* tc-or32.h -- Assemble for the OpenRISC 1000. + Copyright (C) 2002 Free Software Foundation, Inc. + Contributed by Damjan Lampret . + Based upon a29k port. + + 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. */ + +#define TC_OR32 + +#define TARGET_BYTES_BIG_ENDIAN 1 + +#define LEX_DOLLAR 1 + +#ifdef OBJ_ELF +#define TARGET_FORMAT "elf32-or32" +#define TARGET_ARCH bfd_arch_or32 +#endif + +#ifdef OBJ_COFF +#define TARGET_FORMAT "coff-or32-big" +#define reloc_type int +#endif + +#define tc_unrecognized_line(c) or32_unrecognized_line (c) + +extern int or32_unrecognized_line PARAMS ((int)); + +#define tc_headers_hook(a) ; /* not used */ +#define tc_headers_hook(a) ; /* not used */ +#define tc_crawl_symbol_chain(a) ; /* not used */ +#define tc_coff_symbol_emit_hook(a) ; /* not used */ + +#define AOUT_MACHTYPE 80 +#define TC_COFF_FIX2RTYPE(fix_ptr) tc_coff_fix2rtype (fix_ptr) +#define BFD_ARCH bfd_arch_or32 +#define COFF_MAGIC SIPFBOMAGIC + +/* Should the reloc be output ? + on the 29k, this is true only if there is a symbol attatched. + on the h8, this is allways true, since no fixup is done. */ +#define TC_COUNT_RELOC(x) (x->fx_addsy) +#define TC_CONS_RELOC RELOC_32 + +#define COFF_FLAGS F_AR32W +#define NEED_FX_R_TYPE + +#define ZERO_BASED_SEGMENTS + diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-ppc.c binutils-2.11.93.0.2/gas/config/tc-ppc.c --- binutils-2.11.92.0.12.3/gas/config/tc-ppc.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-ppc.c Sun Feb 3 11:22:31 2002 @@ -897,7 +897,12 @@ md_parse_option (c, arg) || strcmp (arg, "7455") == 0) ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC; else if (strcmp (arg, "altivec") == 0) - ppc_cpu |= PPC_OPCODE_ALTIVEC; + { + if (ppc_cpu == 0) + ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC; + else + ppc_cpu |= PPC_OPCODE_ALTIVEC; + } /* -mppc64 and -m620 mean to assemble for the 64-bit PowerPC 620. */ else if (strcmp (arg, "ppc64") == 0 || strcmp (arg, "620") == 0) @@ -1032,8 +1037,8 @@ PowerPC options:\n\ generate code For Motorola PowerPC 7400/7410/7450/7455\n\ -mppc64, -m620 generate code for Motorola PowerPC 620\n\ -mppc64bridge generate code for PowerPC 64, including bridge insns\n\ --mbooke64 generate code for 64-bit Motorola BookE\n\ --mbooke, mbooke32 generate code for 32-bit Motorola BookE\n\ +-mbooke64 generate code for 64-bit PowerPC BookE\n\ +-mbooke, mbooke32 generate code for 32-bit PowerPC BookE\n\ -maltivec generate code for AltiVec\n\ -mcom generate code Power/PowerPC common instructions\n\ -many generate code for any architecture (PWR/PWRX/PPC)\n\ diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-sh.c binutils-2.11.93.0.2/gas/config/tc-sh.c --- binutils-2.11.92.0.12.3/gas/config/tc-sh.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-sh.c Thu Feb 7 10:21:04 2002 @@ -1,5 +1,5 @@ /* tc-sh.c -- Assemble code for the Hitachi Super-H - 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. This file is part of GAS, the GNU Assembler. @@ -58,8 +58,6 @@ static sh_opcode_info *find_cooked_opcod static unsigned int assemble_ppi PARAMS ((char *, sh_opcode_info *)); static void little PARAMS ((int)); static void big PARAMS ((int)); -static bfd_reloc_code_real_type sh_elf_suffix - PARAMS ((char **str_p, expressionS *, expressionS *new_exp_p)); static int parse_reg PARAMS ((char *, int *, int *)); static symbolS *dot PARAMS ((void)); static char *parse_exp PARAMS ((char *, sh_operand_info *)); @@ -78,6 +76,10 @@ static unsigned int build_Mytes #ifdef OBJ_ELF static void sh_elf_cons PARAMS ((int)); +inline static int sh_PIC_related_p PARAMS ((symbolS *)); +static int sh_check_fixup PARAMS ((expressionS *, bfd_reloc_code_real_type *)); +inline static char *sh_end_of_match PARAMS ((char *, char *)); + symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */ #endif @@ -262,77 +264,150 @@ static struct hash_control *opcode_hash_ #ifdef OBJ_ELF -/* Parse @got, etc. and return the desired relocation. - If we have additional arithmetic expression, then we fill in new_exp_p. */ -static bfd_reloc_code_real_type -sh_elf_suffix (str_p, exp_p, new_exp_p) - char **str_p; - expressionS *exp_p, *new_exp_p; +/* Determinet whether the symbol needs any kind of PIC relocation. */ + +inline static int +sh_PIC_related_p (sym) + symbolS *sym; { - struct map_bfd { - char *string; - int length; - bfd_reloc_code_real_type reloc; - }; + expressionS *exp; - char ident[20]; - char *str = *str_p; - char *str2; - int ch; - int len; - struct map_bfd *ptr; + if (! sym) + return 0; + + if (sym == GOT_symbol) + return 1; + + exp = symbol_get_value_expression (sym); + + return (exp->X_op == O_PIC_reloc + || sh_PIC_related_p (exp->X_add_symbol) + || sh_PIC_related_p (exp->X_op_symbol)); +} + +/* Determine the relocation type to be used to represent the + expression, that may be rearranged. */ + +static int +sh_check_fixup (main_exp, r_type_p) + expressionS *main_exp; + bfd_reloc_code_real_type *r_type_p; +{ + expressionS *exp = main_exp; + + /* This is here for backward-compatibility only. GCC used to generated: + + f@PLT + . - (.LPCS# + 2) + + but we'd rather be able to handle this as a PIC-related reference + plus/minus a symbol. However, gas' parser gives us: -#define MAP(str,reloc) { str, sizeof (str)-1, reloc } + O_subtract (O_add (f@PLT, .), .LPCS#+2) + + so we attempt to transform this into: - static struct map_bfd mapping[] = { - MAP ("got", BFD_RELOC_32_GOT_PCREL), - MAP ("plt", BFD_RELOC_32_PLT_PCREL), - MAP ("gotoff", BFD_RELOC_32_GOTOFF), - { (char *)0, 0, BFD_RELOC_UNUSED } - }; - - if (*str++ != '@') - return BFD_RELOC_UNUSED; - - for (ch = *str, str2 = ident; - (str2 < ident + sizeof (ident) - 1 - && (ISALNUM (ch) || ch == '@')); - ch = *++str) - *str2++ = TOLOWER (ch); - - *str2 = '\0'; - len = str2 - ident; - - ch = ident[0]; - for (ptr = &mapping[0]; ptr->length > 0; ptr++) - if (ch == ptr->string[0] - && len == ptr->length - && memcmp (ident, ptr->string, ptr->length) == 0) + O_subtract (f@PLT, O_subtract (.LPCS#+2, .)) + + which we can handle simply below. */ + if (exp->X_op == O_subtract) + { + if (sh_PIC_related_p (exp->X_op_symbol)) + return 1; + + exp = symbol_get_value_expression (exp->X_add_symbol); + + if (exp && sh_PIC_related_p (exp->X_op_symbol)) + return 1; + + if (exp && exp->X_op == O_add + && sh_PIC_related_p (exp->X_add_symbol)) + { + symbolS *sym = exp->X_add_symbol; + + exp->X_op = O_subtract; + exp->X_add_symbol = main_exp->X_op_symbol; + + main_exp->X_op_symbol = main_exp->X_add_symbol; + main_exp->X_add_symbol = sym; + + main_exp->X_add_number += exp->X_add_number; + exp->X_add_number = 0; + } + + exp = main_exp; + } + else if (exp->X_op == O_add && sh_PIC_related_p (exp->X_op_symbol)) + return 1; + + if (exp->X_op == O_symbol || exp->X_op == O_add || exp->X_op == O_subtract) + { + if (exp->X_add_symbol && exp->X_add_symbol == GOT_symbol) + { + *r_type_p = BFD_RELOC_SH_GOTPC; + return 0; + } + exp = symbol_get_value_expression (exp->X_add_symbol); + if (! exp) + return 0; + } + + if (exp->X_op == O_PIC_reloc) + { + *r_type_p = exp->X_md; + if (exp == main_exp) + exp->X_op = O_symbol; + else + { + main_exp->X_add_symbol = exp->X_add_symbol; + main_exp->X_add_number += exp->X_add_number; + } + } + else + return (sh_PIC_related_p (exp->X_add_symbol) + || sh_PIC_related_p (exp->X_op_symbol)); + + return 0; +} + +/* Add expression EXP of SIZE bytes to offset OFF of fragment FRAG. */ + +void +sh_cons_fix_new (frag, off, size, exp) + fragS *frag; + int off, size; + expressionS *exp; +{ + bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED; + + if (sh_check_fixup (exp, &r_type)) + as_bad (_("Invalid PIC expression.")); + + if (r_type == BFD_RELOC_UNUSED) + switch (size) { - /* Now check for identifier@suffix+constant */ - if (*str == '-' || *str == '+') - { - char *orig_line = input_line_pointer; + case 1: + r_type = BFD_RELOC_8; + break; - input_line_pointer = str; - expression (new_exp_p); - if (new_exp_p->X_op == O_constant) - { - exp_p->X_add_number += new_exp_p->X_add_number; - str = input_line_pointer; - } - if (new_exp_p->X_op == O_subtract) - str = input_line_pointer; + case 2: + r_type = BFD_RELOC_16; + break; - if (&input_line_pointer != str_p) - input_line_pointer = orig_line; - } + case 4: + r_type = BFD_RELOC_32; + break; - *str_p = str; - return ptr->reloc; + default: + goto error; } - - return BFD_RELOC_UNUSED; + else if (size != 4) + { + error: + as_bad (_("unsupported BFD relocation size %u"), size); + r_type = BFD_RELOC_UNUSED; + } + + fix_new_exp (frag, off, size, exp, 0, r_type); } /* The regular cons() function, that reads constants, doesn't support @@ -343,9 +418,7 @@ static void sh_elf_cons (nbytes) register int nbytes; /* 1=.byte, 2=.word, 4=.long */ { - expressionS exp, new_exp; - bfd_reloc_code_real_type reloc; - const char *name; + expressionS exp; if (is_it_end_of_statement ()) { @@ -356,79 +429,7 @@ sh_elf_cons (nbytes) do { expression (&exp); - new_exp.X_op = O_absent; - new_exp.X_add_symbol = new_exp.X_op_symbol = NULL; - /* If the _GLOBAL_OFFSET_TABLE_ symbol hasn't been found yet, - use the name of the symbol to tell whether it's the - _GLOBAL_OFFSET_TABLE_. If it has, comparing the symbols is - sufficient. */ - if (! GOT_symbol && exp.X_add_symbol) - name = S_GET_NAME (exp.X_add_symbol); - else - name = NULL; - /* Check whether this expression involves the - _GLOBAL_OFFSET_TABLE_ symbol, by itself or added to a - difference of two other symbols. */ - if (((GOT_symbol && GOT_symbol == exp.X_add_symbol) - || (! GOT_symbol && name - && strcmp (name, GLOBAL_OFFSET_TABLE_NAME) == 0)) - && (exp.X_op == O_symbol - || (exp.X_op == O_add - && ((symbol_get_value_expression (exp.X_op_symbol)->X_op) - == O_subtract)))) - { - reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, - BFD_RELOC_32); - int size = bfd_get_reloc_size (reloc_howto); - - if (GOT_symbol == NULL) - GOT_symbol = symbol_find_or_make (GLOBAL_OFFSET_TABLE_NAME); - - if (size > nbytes) - as_bad (_("%s relocations do not fit in %d bytes\n"), - reloc_howto->name, nbytes); - else - { - register char *p = frag_more ((int) nbytes); - int offset = nbytes - size; - - fix_new_exp (frag_now, p - frag_now->fr_literal + offset, - size, &exp, 0, TC_RELOC_GLOBAL_OFFSET_TABLE); - } - } - /* Check if this symbol involves one of the magic suffixes, such - as @GOT, @GOTOFF or @PLT, and determine which relocation type - to use. */ - else if ((exp.X_op == O_symbol || (exp.X_op == O_add && exp.X_op_symbol)) - && *input_line_pointer == '@' - && ((reloc = sh_elf_suffix (&input_line_pointer, &exp, &new_exp)) - != BFD_RELOC_UNUSED)) - { - reloc_howto_type *reloc_howto = bfd_reloc_type_lookup (stdoutput, - reloc); - int size = bfd_get_reloc_size (reloc_howto); - - /* Force a GOT to be generated. */ - if (GOT_symbol == NULL) - GOT_symbol = symbol_find_or_make (GLOBAL_OFFSET_TABLE_NAME); - - if (size > nbytes) - as_bad (_("%s relocations do not fit in %d bytes\n"), - reloc_howto->name, nbytes); - else - { - register char *p = frag_more ((int) nbytes); - int offset = nbytes - size; - - fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size, - &exp, 0, reloc); - if (new_exp.X_op != O_absent) - fix_new_exp (frag_now, p - frag_now->fr_literal + offset, size, - &new_exp, 0, BFD_RELOC_32); - } - } - else - emit_expr (&exp, (unsigned int) nbytes); + emit_expr (&exp, (unsigned int) nbytes); } while (*input_line_pointer++ == ','); @@ -597,7 +598,7 @@ parse_reg (src, mode, reg) } } - if (l0 == 'i' && l1 && ! IDENT_CHAR ((unsigned char) src[3])) + if (l0 == 'i' && l1 && ! IDENT_CHAR ((unsigned char) src[2])) { if (l1 == 's') { @@ -732,7 +733,7 @@ parse_reg (src, mode, reg) } } if (l0 == 'm' && l1 == 'o' && TOLOWER (src[2]) == 'd' - && ! IDENT_CHAR ((unsigned char) src[4])) + && ! IDENT_CHAR ((unsigned char) src[3])) { *mode = A_MOD; return 3; @@ -867,6 +868,12 @@ parse_exp (s, op) expression (&op->immediate); if (op->immediate.X_op == O_absent) as_bad (_("missing operand")); +#ifdef OBJ_ELF + else if (op->immediate.X_op == O_PIC_reloc + || sh_PIC_related_p (op->immediate.X_add_symbol) + || sh_PIC_related_p (op->immediate.X_op_symbol)) + as_bad (_("misplaced PIC operand")); +#endif new = input_line_pointer; input_line_pointer = save; return new; @@ -914,7 +921,7 @@ parse_at (src, op) else if (src[0] == '(') { /* Could be @(disp, rn), @(disp, gbr), @(disp, pc), @(r0, gbr) or - @(r0, rn) */ + @(r0, rn). */ src++; len = parse_reg (src, &mode, &(op->reg)); if (len && mode == A_REG_N) @@ -925,29 +932,42 @@ parse_at (src, op) as_bad (_("must be @(r0,...)")); } if (src[0] == ',') - src++; - /* Now can be rn or gbr */ - len = parse_reg (src, &mode, &(op->reg)); - if (mode == A_GBR) { - op->type = A_R0_GBR; + src++; + /* Now can be rn or gbr. */ + len = parse_reg (src, &mode, &(op->reg)); + } + else + { + len = 0; } - else if (mode == A_REG_N) + if (len) { - op->type = A_IND_R0_REG_N; + if (mode == A_GBR) + { + op->type = A_R0_GBR; + } + else if (mode == A_REG_N) + { + op->type = A_IND_R0_REG_N; + } + else + { + as_bad (_("syntax error in @(r0,...)")); + } } else { - as_bad (_("syntax error in @(r0,...)")); + as_bad (_("syntax error in @(r0...)")); } } else { - /* Must be an @(disp,.. thing) */ + /* Must be an @(disp,.. thing). */ src = parse_exp (src, op); if (src[0] == ',') src++; - /* Now can be rn, gbr or pc */ + /* Now can be rn, gbr or pc. */ len = parse_reg (src, &mode, &op->reg); if (len) { @@ -961,13 +981,10 @@ parse_at (src, op) } else if (mode == A_PC) { - /* Turn a plain @(4,pc) into @(.+4,pc). */ - if (op->immediate.X_op == O_constant) - { - op->immediate.X_add_symbol = dot(); - op->immediate.X_op = O_symbol; - } - op->type = A_DISP_PC; + op->type = A_DISP_PC_ABS; + /* Such operands don't get corrected for PC==.+4, so + make the correction here. */ + op->immediate.X_add_number -= 4; } else { @@ -989,20 +1006,24 @@ parse_at (src, op) { src += parse_reg (src, &mode, &(op->reg)); if (mode != A_REG_N) - { - as_bad (_("illegal register after @")); - } + as_bad (_("illegal register after @")); + if (src[0] == '+') { + char l0, l1; + src++; - if ((src[0] == 'r' && src[1] == '8') - || (src[0] == 'i' && (src[1] == 'x' || src[1] == 's'))) + l0 = TOLOWER (src[0]); + l1 = TOLOWER (src[1]); + + if ((l0 == 'r' && l1 == '8') + || (l0 == 'i' && (l1 == 'x' || l1 == 's'))) { src += 2; op->type = A_PMOD_N; } - if ((src[0] == 'r' && src[1] == '9') - || (src[0] == 'i' && src[1] == 'y')) + else if ( (l0 == 'r' && l1 == '9') + || (l0 == 'i' && l1 == 'y')) { src += 2; op->type = A_PMODY_N; @@ -1011,9 +1032,7 @@ parse_at (src, op) op->type = A_INC_N; } else - { - op->type = A_IND_N; - } + op->type = A_IND_N; } return src; } @@ -1147,11 +1166,14 @@ get_specific (opcode, operands) switch (arg) { + case A_DISP_PC: + if (user->type == A_DISP_PC_ABS) + break; + /* Fall through. */ case A_IMM: case A_BDISP12: case A_BDISP8: case A_DISP_GBR: - case A_DISP_PC: case A_MACH: case A_PR: case A_MACL: @@ -1581,10 +1603,12 @@ build_Mytes (opcode, operand) insert (output + low_byte, BFD_RELOC_SH_IMM8, 0, operand + 1); break; case PCRELIMM_8BY4: - insert (output, BFD_RELOC_SH_PCRELIMM8BY4, 1, operand); + insert (output, BFD_RELOC_SH_PCRELIMM8BY4, + operand->type != A_DISP_PC_ABS, operand); break; case PCRELIMM_8BY2: - insert (output, BFD_RELOC_SH_PCRELIMM8BY2, 1, operand); + insert (output, BFD_RELOC_SH_PCRELIMM8BY2, + operand->type != A_DISP_PC_ABS, operand); break; case REPEAT: output = insert_loop_bounds (output, operand); @@ -1997,26 +2021,8 @@ sh_flush_pending_output () symbolS * md_undefined_symbol (name) - char *name; + char *name ATTRIBUTE_UNUSED; { -#ifdef OBJ_ELF - /* Under ELF we need to default _GLOBAL_OFFSET_TABLE. Otherwise we - have no need to default values of symbols. */ - if (strcmp (name, GLOBAL_OFFSET_TABLE_NAME) == 0) - { - if (!GOT_symbol) - { - if (symbol_find (name)) - as_bad ("GOT already in the symbol table"); - - GOT_symbol = symbol_new (name, undefined_section, - (valueT)0, & zero_address_frag); - } - - return GOT_symbol; - } -#endif /* OBJ_ELF */ - return 0; } @@ -2726,7 +2732,6 @@ sh_fix_adjustable (fixP) return 1; if (! TC_RELOC_RTSYM_LOC_FIXUP (fixP) - || fixP->fx_r_type == BFD_RELOC_32_GOTOFF || fixP->fx_r_type == BFD_RELOC_RVA) return 0; @@ -2965,6 +2970,10 @@ md_apply_fix3 (fixP, valP, seg) /* Make the jump instruction point to the address of the operand. At runtime we merely add the offset to the actual PLT entry. */ * valP = 0xfffffffc; + val = fixP->fx_addnumber; + if (fixP->fx_subsy) + val -= S_GET_VALUE (fixP->fx_subsy); + md_number_to_chars (buf, val, 4); break; case BFD_RELOC_SH_GOTPC: @@ -2994,6 +3003,7 @@ md_apply_fix3 (fixP, valP, seg) break; case BFD_RELOC_32_GOTOFF: + md_number_to_chars (buf, val, 4); break; #endif @@ -3307,6 +3317,13 @@ tc_gen_reloc (section, fixp) *rel->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); rel->address = fixp->fx_frag->fr_address + fixp->fx_where; + if (fixp->fx_subsy + && S_GET_SEGMENT (fixp->fx_subsy) == absolute_section) + { + fixp->fx_addnumber -= S_GET_VALUE (fixp->fx_subsy); + fixp->fx_subsy = 0; + } + r_type = fixp->fx_r_type; if (SWITCH_TABLE (fixp)) @@ -3346,7 +3363,7 @@ tc_gen_reloc (section, fixp) rel->addend = 0; rel->howto = bfd_reloc_type_lookup (stdoutput, r_type); - if (rel->howto == NULL) + if (rel->howto == NULL || fixp->fx_subsy) { as_bad_where (fixp->fx_file, fixp->fx_line, _("Cannot represent relocation type %s"), @@ -3359,4 +3376,87 @@ tc_gen_reloc (section, fixp) return rel; } +#ifdef OBJ_ELF +inline static char * +sh_end_of_match (cont, what) + char *cont, *what; +{ + int len = strlen (what); + + if (strncasecmp (cont, what, strlen (what)) == 0 + && ! is_part_of_name (cont[len])) + return cont + len; + + return NULL; +} + +int +sh_parse_name (name, exprP, nextcharP) + char const *name; + expressionS *exprP; + char *nextcharP; +{ + char *next = input_line_pointer; + char *next_end; + int reloc_type; + segT segment; + + exprP->X_op_symbol = NULL; + + if (strcmp (name, GLOBAL_OFFSET_TABLE_NAME) == 0) + { + if (! GOT_symbol) + GOT_symbol = symbol_find_or_make (name); + + exprP->X_add_symbol = GOT_symbol; + no_suffix: + /* If we have an absolute symbol or a reg, then we know its + value now. */ + segment = S_GET_SEGMENT (exprP->X_add_symbol); + if (segment == absolute_section) + { + exprP->X_op = O_constant; + exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol); + exprP->X_add_symbol = NULL; + } + else if (segment == reg_section) + { + exprP->X_op = O_register; + exprP->X_add_number = S_GET_VALUE (exprP->X_add_symbol); + exprP->X_add_symbol = NULL; + } + else + { + exprP->X_op = O_symbol; + exprP->X_add_number = 0; + } + + return 1; + } + + 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"))) + reloc_type = BFD_RELOC_32_GOTOFF; + else if ((next_end = sh_end_of_match (next + 1, "GOT"))) + reloc_type = BFD_RELOC_32_GOT_PCREL; + else if ((next_end = sh_end_of_match (next + 1, "PLT"))) + reloc_type = BFD_RELOC_32_PLT_PCREL; + else + goto no_suffix; + + *input_line_pointer = *nextcharP; + input_line_pointer = next_end; + *nextcharP = *input_line_pointer; + *input_line_pointer = '\0'; + + exprP->X_op = O_PIC_reloc; + exprP->X_add_number = 0; + exprP->X_md = reloc_type; + + return 1; +} +#endif #endif /* BFD_ASSEMBLER */ diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-sh.h binutils-2.11.93.0.2/gas/config/tc-sh.h --- binutils-2.11.92.0.12.3/gas/config/tc-sh.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-sh.h Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* This file is tc-sh.h - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -165,6 +165,8 @@ extern int tc_coff_sizemachdep PARAMS (( extern int target_big_endian; #ifdef TE_LINUX #define TARGET_FORMAT (!target_big_endian ? "elf32-sh-linux" : "elf32-shbig-linux") +#elif defined(TE_NetBSD) +#define TARGET_FORMAT (!target_big_endian ? "elf32-shl-nbsd" : "elf32-sh-nbsd") #else #define TARGET_FORMAT (!target_big_endian ? "elf32-shl" : "elf32-sh") #endif @@ -208,4 +210,18 @@ extern void sh_elf_final_processing PARA && S_IS_DEFINED ((FIX)->fx_addsy) \ && ! S_IS_COMMON ((FIX)->fx_addsy)))) +#define md_parse_name(name, exprP, nextcharP) \ + sh_parse_name ((name), (exprP), (nextcharP)) +int sh_parse_name PARAMS ((char const *name, + expressionS *exprP, + char *nextchar)); + +#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \ + sh_cons_fix_new ((FRAG), (OFF), (LEN), (EXP)) +void sh_cons_fix_new PARAMS ((fragS *, int, int, expressionS *)); + +/* This is used to construct expressions out of @GOTOFF, @PLT and @GOT + symbols. The relocation type is stored in X_md. */ +#define O_PIC_reloc O_md1 + #endif /* OBJ_ELF */ diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-sparc.c binutils-2.11.93.0.2/gas/config/tc-sparc.c --- binutils-2.11.92.0.12.3/gas/config/tc-sparc.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-sparc.c Sun Feb 3 11:22:31 2002 @@ -2909,12 +2909,7 @@ md_apply_fix3 (fixP, valP, segment) if (symbol_used_in_reloc_p (sym) && (S_IS_EXTERNAL (sym) || S_IS_WEAK (sym) -#if 0 /* Although fixups against local symbols in SEC_MERGE sections - should be treated as if they were against external symbols - write.c:fixup_segment() will not have included the value of - the symbol under these particular cicumstances. */ || (seg->flags & SEC_MERGE) -#endif || (sparc_pic_code && ! fixP->fx_pcrel) || (seg != segment && (((bfd_get_section_flags (stdoutput, seg) & SEC_LINK_ONCE) != 0) @@ -3318,6 +3313,12 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_SPARC_UA16: case BFD_RELOC_SPARC_UA32: case BFD_RELOC_SPARC_UA64: + case BFD_RELOC_8_PCREL: + case BFD_RELOC_16_PCREL: + case BFD_RELOC_32_PCREL: + case BFD_RELOC_64_PCREL: + case BFD_RELOC_SPARC_PLT32: + case BFD_RELOC_SPARC_PLT64: case BFD_RELOC_VTABLE_ENTRY: case BFD_RELOC_VTABLE_INHERIT: code = fixp->fx_r_type; @@ -3407,9 +3408,11 @@ tc_gen_reloc (section, fixp) #else /* elf or coff */ - if (reloc->howto->pc_relative == 0 - || code == BFD_RELOC_SPARC_PC10 - || code == BFD_RELOC_SPARC_PC22) + if (code != BFD_RELOC_32_PCREL_S2 + && code != BFD_RELOC_SPARC_WDISP22 + && code != BFD_RELOC_SPARC_WDISP16 + && code != BFD_RELOC_SPARC_WDISP19 + && code != BFD_RELOC_SPARC_WPLT30) reloc->addend = fixp->fx_addnumber; else if (symbol_section_p (fixp->fx_addsy)) reloc->addend = (section->vma @@ -3905,6 +3908,11 @@ s_proc (ignore) static int sparc_no_align_cons = 0; +/* This static variable is set by sparc_cons to emit requested types + of relocations in cons_fix_new_sparc. */ + +static const char *sparc_cons_special_reloc; + /* This handles the unaligned space allocation pseudo-ops, such as .uaword. .uaword is just like .word, but the value does not need to be aligned. */ @@ -4177,6 +4185,134 @@ sparc_elf_final_processing () else if (current_architecture == SPARC_OPCODE_ARCH_V9B) elf_elfheader (stdoutput)->e_flags |= EF_SPARC_SUN_US1|EF_SPARC_SUN_US3; } + +void +sparc_cons (exp, size) + expressionS *exp; + int size; +{ + char *save; + + SKIP_WHITESPACE (); + sparc_cons_special_reloc = NULL; + save = input_line_pointer; + if (input_line_pointer[0] == '%' + && input_line_pointer[1] == 'r' + && input_line_pointer[2] == '_') + { + if (strncmp (input_line_pointer + 3, "disp", 4) == 0) + { + input_line_pointer += 7; + sparc_cons_special_reloc = "disp"; + } + else if (strncmp (input_line_pointer + 3, "plt", 3) == 0) + { + if (size != 4 && size != 8) + as_bad (_("Illegal operands: %%r_plt in %d-byte data field"), size); + else + { + input_line_pointer += 6; + sparc_cons_special_reloc = "plt"; + } + } + if (sparc_cons_special_reloc) + { + int bad = 0; + + switch (size) + { + case 1: + if (*input_line_pointer != '8') + bad = 1; + input_line_pointer--; + break; + case 2: + if (input_line_pointer[0] != '1' || input_line_pointer[1] != '6') + bad = 1; + break; + case 4: + if (input_line_pointer[0] != '3' || input_line_pointer[1] != '2') + bad = 1; + break; + case 8: + if (input_line_pointer[0] != '6' || input_line_pointer[1] != '4') + bad = 1; + break; + default: + bad = 1; + break; + } + + if (bad) + { + as_bad (_("Illegal operands: Only %%r_%s%d allowed in %d-byte data fields"), + sparc_cons_special_reloc, size * 8, size); + } + else + { + input_line_pointer += 2; + if (*input_line_pointer != '(') + { + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + bad = 1; + } + } + + if (bad) + { + input_line_pointer = save; + sparc_cons_special_reloc = NULL; + } + else + { + int c; + char *end = ++input_line_pointer; + int npar = 0; + + while (! is_end_of_line[(c = *end)]) + { + if (c == '(') + npar++; + else if (c == ')') + { + if (!npar) + break; + npar--; + } + end++; + } + + if (c != ')') + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + else + { + *end = '\0'; + expression (exp); + *end = c; + if (input_line_pointer != end) + { + as_bad (_("Illegal operands: %%r_%s%d requires arguments in ()"), + sparc_cons_special_reloc, size * 8); + } + else + { + input_line_pointer++; + SKIP_WHITESPACE (); + c = *input_line_pointer; + if (! is_end_of_line[c] && c != ',') + as_bad (_("Illegal operands: garbage after %%r_%s%d()"), + sparc_cons_special_reloc, size * 8); + } + } + } + } + } + if (sparc_cons_special_reloc == NULL) + expression (exp); +} + #endif /* This is called by emit_expr via TC_CONS_FIX_NEW when creating a @@ -4201,7 +4337,25 @@ cons_fix_new_sparc (frag, where, nbytes, && now_seg->flags & SEC_ALLOC) r = BFD_RELOC_SPARC_REV32; - if (sparc_no_align_cons) + if (sparc_cons_special_reloc) + { + if (*sparc_cons_special_reloc == 'd') + switch (nbytes) + { + case 1: r = BFD_RELOC_8_PCREL; break; + case 2: r = BFD_RELOC_16_PCREL; break; + case 4: r = BFD_RELOC_32_PCREL; break; + case 8: r = BFD_RELOC_64_PCREL; break; + default: abort (); + } + else + switch (nbytes) + { + case 4: r = BFD_RELOC_SPARC_PLT32; break; + case 8: r = BFD_RELOC_SPARC_PLT64; break; + } + } + else if (sparc_no_align_cons) { switch (nbytes) { diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-sparc.h binutils-2.11.93.0.2/gas/config/tc-sparc.h --- binutils-2.11.92.0.12.3/gas/config/tc-sparc.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-sparc.h Sun Feb 3 11:22:31 2002 @@ -166,6 +166,11 @@ extern void sparc_md_end PARAMS ((void)) #endif +#ifdef OBJ_ELF +#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) sparc_cons (EXP, NBYTES) +extern void sparc_cons PARAMS ((expressionS *, int)); +#endif + #define TC_CONS_FIX_NEW cons_fix_new_sparc extern void cons_fix_new_sparc PARAMS ((struct frag *, int, unsigned int, struct expressionS *)); diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-tic54x.c binutils-2.11.93.0.2/gas/config/tc-tic54x.c --- binutils-2.11.92.0.12.3/gas/config/tc-tic54x.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-tic54x.c Sun Feb 3 11:22:31 2002 @@ -3654,6 +3654,9 @@ encode_address (insn, operand) insn->opcode[0].word |= (operand->exp.X_add_number & 0x7F); else { + if (operand->exp.X_op == O_register) { + as_bad(_("Use the .mmregs directive to use memory-mapped register names such as '%s'"), operand->buf); + } /* Do the fixup later; just store the expression. */ insn->opcode[0].r_nchars = 1; insn->opcode[0].r_type = BFD_RELOC_TIC54X_PARTLS7; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-v850.c binutils-2.11.93.0.2/gas/config/tc-v850.c --- binutils-2.11.92.0.12.3/gas/config/tc-v850.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-v850.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* tc-v850.c -- Assembler code for the NEC V850 - Copyright 1996, 1997, 1998, 1999, 2000, 2001 + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -26,10 +26,6 @@ #include "opcode/v850.h" #include "dwarf2dbg.h" -#define AREA_ZDA 0 -#define AREA_SDA 1 -#define AREA_TDA 2 - /* Sign-extend a 16-bit number. */ #define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000) @@ -82,20 +78,6 @@ const relax_typeS md_relax_table[] = { {0x1fffff, -0x200000, 4, 0}, }; -static segT sdata_section = NULL; -static segT tdata_section = NULL; -static segT zdata_section = NULL; -static segT sbss_section = NULL; -static segT tbss_section = NULL; -static segT zbss_section = NULL; -static segT rosdata_section = NULL; -static segT rozdata_section = NULL; -static segT scommon_section = NULL; -static segT tcommon_section = NULL; -static segT zcommon_section = NULL; -static segT call_table_data_section = NULL; -static segT call_table_text_section = NULL; - /* Fixups. */ #define MAX_INSN_FIXUPS (5) struct v850_fixup { @@ -106,121 +88,108 @@ struct v850_fixup { struct v850_fixup fixups[MAX_INSN_FIXUPS]; static int fc; - -void -v850_sdata (int ignore ATTRIBUTE_UNUSED) -{ - obj_elf_section_change_hook (); - - subseg_set (sdata_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} -void -v850_tdata (int ignore ATTRIBUTE_UNUSED) -{ - obj_elf_section_change_hook (); - - subseg_set (tdata_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} - -void -v850_zdata (int ignore ATTRIBUTE_UNUSED) +struct v850_seg_entry { - obj_elf_section_change_hook (); - - subseg_set (zdata_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} - -void -v850_sbss (int ignore ATTRIBUTE_UNUSED) -{ - obj_elf_section_change_hook (); - - subseg_set (sbss_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} - -void -v850_tbss (int ignore ATTRIBUTE_UNUSED) -{ - obj_elf_section_change_hook (); - - subseg_set (tbss_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} + segT s; + const char *name; + flagword flags; +}; -void -v850_zbss (int ignore ATTRIBUTE_UNUSED) +struct v850_seg_entry v850_seg_table[] = { - obj_elf_section_change_hook (); + { NULL, ".sdata", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS + | SEC_SMALL_DATA }, + { NULL, ".tdata", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS }, + { NULL, ".zdata", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS }, + { NULL, ".sbss", + SEC_ALLOC | SEC_SMALL_DATA }, + { NULL, ".tbss", + SEC_ALLOC }, + { NULL, ".zbss", + SEC_ALLOC}, + { NULL, ".rosdata", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_DATA + | SEC_HAS_CONTENTS | SEC_SMALL_DATA }, + { NULL, ".rozdata", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_DATA + | SEC_HAS_CONTENTS }, + { NULL, ".scommon", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS + | SEC_SMALL_DATA | SEC_IS_COMMON }, + { NULL, ".tcommon", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS + | SEC_IS_COMMON }, + { NULL, ".zcommon", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS + | SEC_IS_COMMON }, + { NULL, ".call_table_data", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA | SEC_HAS_CONTENTS }, + { NULL, ".call_table_text", + SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | SEC_CODE + | SEC_HAS_CONTENTS}, + { NULL, ".bss", + SEC_ALLOC } +}; - subseg_set (zbss_section, (subsegT) get_absolute_expression ()); +#define SDATA_SECTION 0 +#define TDATA_SECTION 1 +#define ZDATA_SECTION 2 +#define SBSS_SECTION 3 +#define TBSS_SECTION 4 +#define ZBSS_SECTION 5 +#define ROSDATA_SECTION 6 +#define ROZDATA_SECTION 7 +#define SCOMMON_SECTION 8 +#define TCOMMON_SECTION 9 +#define ZCOMMON_SECTION 10 +#define CALL_TABLE_DATA_SECTION 11 +#define CALL_TABLE_TEXT_SECTION 12 +#define BSS_SECTION 13 - demand_empty_rest_of_line (); -} +static void do_v850_seg PARAMS ((int, subsegT)); -void -v850_rosdata (int ignore ATTRIBUTE_UNUSED) +static void +do_v850_seg (i, sub) + int i; + subsegT sub; { - obj_elf_section_change_hook (); + struct v850_seg_entry *seg = v850_seg_table + i; - subseg_set (rosdata_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); -} - -void -v850_rozdata (int ignore ATTRIBUTE_UNUSED) -{ obj_elf_section_change_hook (); - - subseg_set (rozdata_section, (subsegT) get_absolute_expression ()); - - demand_empty_rest_of_line (); + if (seg->s != NULL) + { + subseg_set (seg->s, sub); + } + else + { + seg->s = subseg_new (seg->name, sub); + bfd_set_section_flags (stdoutput, seg->s, seg->flags); + if ((seg->flags & SEC_LOAD) == 0) + seg_info (seg->s)->bss = 1; + } } -void -v850_call_table_data (int ignore ATTRIBUTE_UNUSED) -{ - obj_elf_section_change_hook (); - - subseg_set (call_table_data_section, (subsegT) get_absolute_expression ()); +static void v850_seg PARAMS ((int i)); - demand_empty_rest_of_line (); -} - -void -v850_call_table_text (int ignore ATTRIBUTE_UNUSED) +static void +v850_seg (i) + int i; { - obj_elf_section_change_hook (); - - subseg_set (call_table_text_section, (subsegT) get_absolute_expression ()); + subsegT sub = get_absolute_expression (); + do_v850_seg (i, sub); demand_empty_rest_of_line (); } -void -v850_bss (int ignore ATTRIBUTE_UNUSED) -{ - register int temp = get_absolute_expression (); - - obj_elf_section_change_hook (); - - subseg_set (bss_section, (subsegT) temp); +static void v850_offset PARAMS ((int)); - demand_empty_rest_of_line (); -} - -void -v850_offset (int ignore ATTRIBUTE_UNUSED) +static void +v850_offset (ignore) + int ignore ATTRIBUTE_UNUSED; { int temp = get_absolute_expression (); @@ -234,6 +203,8 @@ v850_offset (int ignore ATTRIBUTE_UNUSED /* Copied from obj_elf_common() in gas/config/obj-elf.c. */ +static void v850_comm PARAMS ((int)); + static void v850_comm (area) int area; @@ -338,37 +309,16 @@ v850_comm (area) switch (area) { - case AREA_SDA: - if (sbss_section == NULL) - { - sbss_section = subseg_new (".sbss", 0); - - bfd_set_section_flags (stdoutput, sbss_section, applicable); - - seg_info (sbss_section)->bss = 1; - } + case SCOMMON_SECTION: + do_v850_seg (SBSS_SECTION, 0); break; - case AREA_ZDA: - if (zbss_section == NULL) - { - zbss_section = subseg_new (".zbss", 0); - - bfd_set_section_flags (stdoutput, sbss_section, applicable); - - seg_info (zbss_section)->bss = 1; - } + case ZCOMMON_SECTION: + do_v850_seg (ZBSS_SECTION, 0); break; - case AREA_TDA: - if (tbss_section == NULL) - { - tbss_section = subseg_new (".tbss", 0); - - bfd_set_section_flags (stdoutput, tbss_section, applicable); - - seg_info (tbss_section)->bss = 1; - } + case TCOMMON_SECTION: + do_v850_seg (TBSS_SECTION, 0); break; } @@ -388,47 +338,25 @@ v850_comm (area) else align = 0; - switch (area) - { - case AREA_SDA: - record_alignment (sbss_section, align); - obj_elf_section_change_hook (); - subseg_set (sbss_section, 0); - break; - - case AREA_ZDA: - record_alignment (zbss_section, align); - obj_elf_section_change_hook (); - subseg_set (zbss_section, 0); - break; - - case AREA_TDA: - record_alignment (tbss_section, align); - obj_elf_section_change_hook (); - subseg_set (tbss_section, 0); - break; - - default: - abort (); - } + record_alignment (now_seg, align); if (align) frag_align (align, 0, 0); switch (area) { - case AREA_SDA: - if (S_GET_SEGMENT (symbolP) == sbss_section) + case SCOMMON_SECTION: + if (S_GET_SEGMENT (symbolP) == v850_seg_table[SBSS_SECTION].s) symbol_get_frag (symbolP)->fr_symbol = 0; break; - case AREA_ZDA: - if (S_GET_SEGMENT (symbolP) == zbss_section) + case ZCOMMON_SECTION: + if (S_GET_SEGMENT (symbolP) == v850_seg_table[ZBSS_SECTION].s) symbol_get_frag (symbolP)->fr_symbol = 0; break; - case AREA_TDA: - if (S_GET_SEGMENT (symbolP) == tbss_section) + case TCOMMON_SECTION: + if (S_GET_SEGMENT (symbolP) == v850_seg_table[TBSS_SECTION].s) symbol_get_frag (symbolP)->fr_symbol = 0; break; @@ -444,16 +372,16 @@ v850_comm (area) switch (area) { - case AREA_SDA: - S_SET_SEGMENT (symbolP, sbss_section); + case SCOMMON_SECTION: + S_SET_SEGMENT (symbolP, v850_seg_table[SBSS_SECTION].s); break; - case AREA_ZDA: - S_SET_SEGMENT (symbolP, zbss_section); + case ZCOMMON_SECTION: + S_SET_SEGMENT (symbolP, v850_seg_table[ZBSS_SECTION].s); break; - case AREA_TDA: - S_SET_SEGMENT (symbolP, tbss_section); + case TCOMMON_SECTION: + S_SET_SEGMENT (symbolP, v850_seg_table[TBSS_SECTION].s); break; default: @@ -473,54 +401,11 @@ v850_comm (area) switch (area) { - case AREA_SDA: - if (scommon_section == NULL) - { - flagword applicable = - bfd_applicable_section_flags (stdoutput); - - scommon_section = subseg_new (".scommon", 0); - - bfd_set_section_flags (stdoutput, scommon_section, - (applicable - & (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA - | SEC_HAS_CONTENTS)) | SEC_IS_COMMON); - } - S_SET_SEGMENT (symbolP, scommon_section); - break; - - case AREA_ZDA: - if (zcommon_section == NULL) - { - flagword applicable = - bfd_applicable_section_flags (stdoutput); - - zcommon_section = subseg_new (".zcommon", 0); - - bfd_set_section_flags (stdoutput, zcommon_section, - (applicable - & (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA - | SEC_HAS_CONTENTS)) | SEC_IS_COMMON); - } - S_SET_SEGMENT (symbolP, zcommon_section); - break; - - case AREA_TDA: - if (tcommon_section == NULL) - { - flagword applicable = - bfd_applicable_section_flags (stdoutput); - - tcommon_section = subseg_new (".tcommon", 0); - - bfd_set_section_flags (stdoutput, tcommon_section, - ((applicable - & (SEC_ALLOC | SEC_LOAD - | SEC_RELOC | SEC_DATA - | SEC_HAS_CONTENTS)) - | SEC_IS_COMMON)); - } - S_SET_SEGMENT (symbolP, tcommon_section); + case SCOMMON_SECTION: + case ZCOMMON_SECTION: + case TCOMMON_SECTION: + do_v850_seg (area, 0); + S_SET_SEGMENT (symbolP, v850_seg_table[area].s); break; default: @@ -570,8 +455,11 @@ v850_comm (area) } } -void -set_machine (int number) +static void set_machine PARAMS ((int)); + +static void +set_machine (number) + int number; { machine = number; bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine); @@ -586,28 +474,28 @@ set_machine (int number) /* The target specific pseudo-ops which we support. */ const pseudo_typeS md_pseudo_table[] = { - {"sdata", v850_sdata, 0}, - {"tdata", v850_tdata, 0}, - {"zdata", v850_zdata, 0}, - {"sbss", v850_sbss, 0}, - {"tbss", v850_tbss, 0}, - {"zbss", v850_zbss, 0}, - {"rosdata", v850_rosdata, 0}, - {"rozdata", v850_rozdata, 0}, - {"bss", v850_bss, 0}, - {"offset", v850_offset, 0}, - {"word", cons, 4}, - {"zcomm", v850_comm, AREA_ZDA}, - {"scomm", v850_comm, AREA_SDA}, - {"tcomm", v850_comm, AREA_TDA}, - {"v850", set_machine, 0}, - {"call_table_data", v850_call_table_data, 0}, - {"call_table_text", v850_call_table_text, 0}, - {"v850e", set_machine, bfd_mach_v850e}, - {"v850ea", set_machine, bfd_mach_v850ea}, - {"file", dwarf2_directive_file, 0}, - {"loc", dwarf2_directive_loc, 0}, - { NULL, NULL, 0} + { "sdata", v850_seg, SDATA_SECTION }, + { "tdata", v850_seg, TDATA_SECTION }, + { "zdata", v850_seg, ZDATA_SECTION }, + { "sbss", v850_seg, SBSS_SECTION }, + { "tbss", v850_seg, TBSS_SECTION }, + { "zbss", v850_seg, ZBSS_SECTION }, + { "rosdata", v850_seg, ROSDATA_SECTION }, + { "rozdata", v850_seg, ROZDATA_SECTION }, + { "bss", v850_seg, BSS_SECTION }, + { "offset", v850_offset, 0 }, + { "word", cons, 4 }, + { "zcomm", v850_comm, ZCOMMON_SECTION }, + { "scomm", v850_comm, SCOMMON_SECTION }, + { "tcomm", v850_comm, TCOMMON_SECTION }, + { "v850", set_machine, 0 }, + { "call_table_data", v850_seg, CALL_TABLE_DATA_SECTION }, + { "call_table_text", v850_seg, CALL_TABLE_TEXT_SECTION }, + { "v850e", set_machine, bfd_mach_v850e }, + { "v850ea", set_machine, bfd_mach_v850ea }, + { "file", dwarf2_directive_file, 0 }, + { "loc", dwarf2_directive_loc, 0 }, + { NULL, NULL, 0 } }; /* Opcode hash table. */ @@ -716,6 +604,9 @@ static const struct reg_name cc_names[] valid regiter name. Return the register number from the array on success, or -1 on failure. */ +static int reg_name_search + PARAMS ((const struct reg_name *, int, const char *, boolean)); + static int reg_name_search (regs, regcount, name, accept_numbers) const struct reg_name *regs; @@ -776,6 +667,8 @@ reg_name_search (regs, regcount, name, a * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ +static boolean register_name PARAMS ((expressionS *)); + static boolean register_name (expressionP) expressionS *expressionP; @@ -831,6 +724,8 @@ register_name (expressionP) * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ +static boolean system_register_name PARAMS ((expressionS *, boolean, boolean)); + static boolean system_register_name (expressionP, accept_numbers, accept_list_names) expressionS *expressionP; @@ -912,6 +807,8 @@ system_register_name (expressionP, accep * Input_line_pointer->(next non-blank) char after operand, or is in * its original state. */ +static boolean cc_name PARAMS ((expressionS *)); + static boolean cc_name (expressionP) expressionS *expressionP; @@ -951,8 +848,10 @@ cc_name (expressionP) } } +static void skip_white_space PARAMS ((void)); + static void -skip_white_space (void) +skip_white_space () { while (*input_line_pointer == ' ' || *input_line_pointer == '\t') @@ -984,6 +883,9 @@ skip_white_space (void) * and so on upwards. System registers are considered to be very * high numbers. */ +static char *parse_register_list + PARAMS ((unsigned long *, const struct v850_operand *)); + static char * parse_register_list (insn, operand) unsigned long *insn; @@ -1374,7 +1276,6 @@ md_begin () { char *prev_name = ""; register const struct v850_opcode *op; - flagword applicable; if (strncmp (TARGET_CPU, "v850ea", 6) == 0) { @@ -1423,26 +1324,16 @@ md_begin () op++; } + v850_seg_table[BSS_SECTION].s = bss_section; bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine); - - applicable = bfd_applicable_section_flags (stdoutput); - - call_table_data_section = subseg_new (".call_table_data", 0); - bfd_set_section_flags (stdoutput, call_table_data_section, - applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC - | SEC_DATA | SEC_HAS_CONTENTS)); - - call_table_text_section = subseg_new (".call_table_text", 0); - bfd_set_section_flags (stdoutput, call_table_text_section, - applicable & (SEC_ALLOC | SEC_LOAD | SEC_READONLY - | SEC_CODE)); - - /* Restore text section as the current default. */ - subseg_set (text_section, 0); } +static bfd_reloc_code_real_type handle_ctoff + PARAMS ((const struct v850_operand *)); + static bfd_reloc_code_real_type -handle_ctoff (const struct v850_operand *operand) +handle_ctoff (operand) + const struct v850_operand *operand; { if (operand == NULL) return BFD_RELOC_V850_CALLT_16_16_OFFSET; @@ -1457,8 +1348,12 @@ handle_ctoff (const struct v850_operand return BFD_RELOC_V850_CALLT_6_7_OFFSET; } +static bfd_reloc_code_real_type handle_sdaoff + PARAMS ((const struct v850_operand *)); + static bfd_reloc_code_real_type -handle_sdaoff (const struct v850_operand *operand) +handle_sdaoff (operand) + const struct v850_operand *operand; { if (operand == NULL) return BFD_RELOC_V850_SDA_16_16_OFFSET; @@ -1479,8 +1374,12 @@ handle_sdaoff (const struct v850_operand return BFD_RELOC_V850_SDA_16_16_OFFSET; } +static bfd_reloc_code_real_type handle_zdaoff + PARAMS ((const struct v850_operand *)); + static bfd_reloc_code_real_type -handle_zdaoff (const struct v850_operand *operand) +handle_zdaoff (operand) + const struct v850_operand *operand; { if (operand == NULL) return BFD_RELOC_V850_ZDA_16_16_OFFSET; @@ -1502,8 +1401,12 @@ handle_zdaoff (const struct v850_operand return BFD_RELOC_V850_ZDA_16_16_OFFSET; } +static bfd_reloc_code_real_type handle_tdaoff + PARAMS ((const struct v850_operand *)); + static bfd_reloc_code_real_type -handle_tdaoff (const struct v850_operand *operand) +handle_tdaoff (operand) + const struct v850_operand *operand; { if (operand == NULL) /* Data item, not an instruction. */ @@ -1541,8 +1444,12 @@ handle_tdaoff (const struct v850_operand in the v850_operands[] array (defined in opcodes/v850-opc.c) matching the hard coded values contained herein. */ +static bfd_reloc_code_real_type v850_reloc_prefix + PARAMS ((const struct v850_operand *)); + static bfd_reloc_code_real_type -v850_reloc_prefix (const struct v850_operand *operand) +v850_reloc_prefix (operand) + const struct v850_operand *operand; { boolean paren_skipped = false; @@ -1578,6 +1485,10 @@ v850_reloc_prefix (const struct v850_ope /* Insert an operand value into an instruction. */ +static unsigned long v850_insert_operand + PARAMS ((unsigned long, const struct v850_operand *, offsetT, char *, + unsigned int, char *)); + static unsigned long v850_insert_operand (insn, operand, val, file, line, str) unsigned long insn; diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-v850.h binutils-2.11.93.0.2/gas/config/tc-v850.h --- binutils-2.11.92.0.12.3/gas/config/tc-v850.h Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/config/tc-v850.h Sun Feb 3 11:22:31 2002 @@ -92,6 +92,6 @@ extern const struct relax_type md_relax_ { ".call_table_text", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_EXECINSTR }, #define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section) -extern long v850_pcrel_from_section (); +extern long v850_pcrel_from_section PARAMS ((struct fix *, asection *)); #define DWARF2_LINE_MIN_INSN_LENGTH 2 diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-xstormy16.c binutils-2.11.93.0.2/gas/config/tc-xstormy16.c --- binutils-2.11.92.0.12.3/gas/config/tc-xstormy16.c Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/config/tc-xstormy16.c Sun Feb 3 11:22:31 2002 @@ -0,0 +1,653 @@ +/* tc-xstormy16.c -- Assembler for the Sanyo XSTORMY16. + Copyright (C) 2000, 2001, 2002 Free Software Foundation. + + 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. */ + +#include +#include "as.h" +#include "subsegs.h" +#include "symcat.h" +#include "opcodes/xstormy16-desc.h" +#include "opcodes/xstormy16-opc.h" +#include "cgen.h" + +/* Structure to hold all of the different components describing + an individual instruction. */ +typedef struct +{ + const CGEN_INSN * insn; + const CGEN_INSN * orig_insn; + CGEN_FIELDS fields; +#if CGEN_INT_INSN_P + CGEN_INSN_INT buffer [1]; +#define INSN_VALUE(buf) (*(buf)) +#else + unsigned char buffer [CGEN_MAX_INSN_SIZE]; +#define INSN_VALUE(buf) (buf) +#endif + char * addr; + fragS * frag; + int num_fixups; + fixS * fixups [GAS_CGEN_MAX_FIXUPS]; + int indices [MAX_OPERAND_INSTANCES]; +} +xstormy16_insn; + +const char comment_chars[] = ";"; +const char line_comment_chars[] = "#"; +const char line_separator_chars[] = "|"; +const char EXP_CHARS[] = "eE"; +const char FLT_CHARS[] = "dD"; + +#define O_fptr_symbol (O_max + 1) + +#define XSTORMY16_SHORTOPTS "" +const char * md_shortopts = XSTORMY16_SHORTOPTS; + +struct option md_longopts[] = +{ + {NULL, no_argument, NULL, 0} +}; +size_t md_longopts_size = sizeof (md_longopts); + +int +md_parse_option (c, arg) + int c ATTRIBUTE_UNUSED; + char * arg ATTRIBUTE_UNUSED; +{ + return 0; +} + +void +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[] = +{ + { "word", cons, 4 }, + { NULL, NULL, 0 } +}; + + +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, + CGEN_ENDIAN_LITTLE, + CGEN_CPU_OPEN_END); + xstormy16_cgen_init_asm (gas_cgen_cpu_desc); + + /* This is a callback from cgen to gas to parse operands. */ + cgen_set_parse_operand_fn (gas_cgen_cpu_desc, gas_cgen_parse_operand); +} + +void +md_assemble (str) + char * str; +{ + xstormy16_insn insn; + char * errmsg; + + /* Initialize GAS's cgen interface for a new instruction. */ + gas_cgen_init_parse (); + + insn.insn = xstormy16_cgen_assemble_insn + (gas_cgen_cpu_desc, str, & insn.fields, insn.buffer, & errmsg); + + if (!insn.insn) + { + as_bad (errmsg); + return; + } + + /* Doesn't really matter what we pass for RELAX_P here. */ + gas_cgen_finish_insn (insn.insn, insn.buffer, + CGEN_FIELDS_BITSIZE (& insn.fields), 0, NULL); +} + +void +md_operand (e) + expressionS * e; +{ + if (*input_line_pointer != '@') + return; + + if (strncmp (input_line_pointer+1, "fptr", 4) == 0) + { + input_line_pointer += 5; + SKIP_WHITESPACE (); + if (*input_line_pointer != '(') + { + as_bad ("Expected '('"); + goto err; + } + input_line_pointer++; + + expression (e); + + if (*input_line_pointer != ')') + { + as_bad ("Missing ')'"); + goto err; + } + input_line_pointer++; + + if (e->X_op != O_symbol) + as_bad ("Not a symbolic expression"); + else + e->X_op = O_fptr_symbol; + } + + return; + err: + ignore_rest_of_line (); +} + +/* Called while parsing data to create a fixup. + Create BFD_RELOC_XSTORMY16_FPTR16 relocations. */ + +void +xstormy16_cons_fix_new (f, where, nbytes, exp) + fragS *f; + int where; + int nbytes; + expressionS *exp; +{ + bfd_reloc_code_real_type code; + fixS *fix; + + if (exp->X_op == O_fptr_symbol) + { + if (nbytes != 2) + { + as_bad ("unsupported fptr fixup size %d", nbytes); + return; + } + exp->X_op = O_symbol; + code = BFD_RELOC_XSTORMY16_FPTR16; + } + else if (nbytes == 1) + code = BFD_RELOC_8; + else if (nbytes == 2) + code = BFD_RELOC_16; + else if (nbytes == 4) + code = BFD_RELOC_32; + else + { + as_bad ("unsupported fixup size %d", nbytes); + return; + } + + fix = fix_new_exp (f, where, nbytes, exp, 0, code); +} + +/* Called while parsing an instruction to create a fixup. + Create BFD_RELOC_XSTORMY16_FPTR16 relocations. */ + +fixS * +xstormy16_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp) + fragS * frag; + int where; + const CGEN_INSN * insn; + int length; + const CGEN_OPERAND * operand; + int opinfo; + expressionS * exp; +{ + fixS *fixP; + operatorT op = exp->X_op; + + if (op == O_fptr_symbol) + exp->X_op = O_symbol; + + fixP = gas_cgen_record_fixup_exp (frag, where, insn, length, + operand, opinfo, exp); + + if (op == O_fptr_symbol) + { + if (operand->type != XSTORMY16_OPERAND_IMM16) + as_bad ("unsupported fptr fixup"); + else + { + fixP->fx_r_type = BFD_RELOC_XSTORMY16_FPTR16; + fixP->fx_where += 2; + } + } + + return fixP; +} + +valueT +md_section_align (segment, size) + segT segment; + valueT size; +{ + int align = bfd_get_section_alignment (stdoutput, segment); + return ((size + (1 << align) - 1) & (-1 << align)); +} + +symbolS * +md_undefined_symbol (name) + char * name ATTRIBUTE_UNUSED; +{ + return 0; +} + +/* Return an initial guess of the length by which a fragment must grow to + hold a branch to reach its destination. + Also updates fr_type/fr_subtype as necessary. + + Called just before doing relaxation. + Any symbol that is now undefined will not become defined. + The guess for fr_var is ACTUALLY the growth beyond fr_fix. + Whatever we do to grow fr_fix or fr_var contributes to our returned value. + Although it may not be explicit in the frag, pretend fr_var starts with a + 0 value. */ + +int +md_estimate_size_before_relax (fragP, segment) + fragS * fragP ATTRIBUTE_UNUSED; + segT segment ATTRIBUTE_UNUSED; +{ + /* 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. + + Called after relaxation is finished. + fragP->fr_type == rs_machine_dependent. + fragP->fr_subtype is the subtype of what the address relaxed to. */ + +void +md_convert_frag (abfd, sec, fragP) + bfd * abfd ATTRIBUTE_UNUSED; + segT sec ATTRIBUTE_UNUSED; + fragS * fragP ATTRIBUTE_UNUSED; +{ + /* No assembler relaxation is defined (or necessary) for this port. */ + abort (); +} + +/* Functions concerning relocs. */ + +/* The location from which a PC relative jump should be calculated, + given a PC relative reloc. */ + +long +md_pcrel_from_section (fixP, sec) + fixS * fixP; + segT sec; +{ + if (fixP->fx_addsy != (symbolS *) NULL + && (! S_IS_DEFINED (fixP->fx_addsy) + || S_GET_SEGMENT (fixP->fx_addsy) != sec)) + { + /* The symbol is undefined (or is defined but not in this section). + Let the linker figure it out. */ + return 0; + } + + return fixP->fx_frag->fr_address + fixP->fx_where; +} + +/* Return the bfd reloc type for OPERAND of INSN at fixup FIXP. + Returns BFD_RELOC_NONE if no reloc type can be found. + *FIXP may be modified if desired. */ + +bfd_reloc_code_real_type +md_cgen_lookup_reloc (insn, operand, fixP) + const CGEN_INSN * insn ATTRIBUTE_UNUSED; + const CGEN_OPERAND * operand; + fixS * fixP; +{ + switch (operand->type) + { + case XSTORMY16_OPERAND_IMM2: + case XSTORMY16_OPERAND_IMM3: + case XSTORMY16_OPERAND_IMM3B: + case XSTORMY16_OPERAND_IMM4: + 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; + + case XSTORMY16_OPERAND_ABS24: + return BFD_RELOC_XSTORMY16_24; + + case XSTORMY16_OPERAND_REL8_2: + case XSTORMY16_OPERAND_REL8_4: + fixP->fx_pcrel = 1; + return BFD_RELOC_8_PCREL; + + case XSTORMY16_OPERAND_REL12: + fixP->fx_where += 2; + /* Fall through... */ + case XSTORMY16_OPERAND_REL12A: + fixP->fx_pcrel = 1; + return BFD_RELOC_XSTORMY16_REL_12; + + default : /* avoid -Wall warning */ + abort (); + } +} + +/* See whether we need to force a relocation into the output file. + This is used to force out switch and PC relative relocations when + relaxing. */ + +int +xstormy16_force_relocation (fix) + fixS * fix; +{ + switch (fix->fx_r_type) + { + case BFD_RELOC_XSTORMY16_FPTR16: + case BFD_RELOC_VTABLE_INHERIT: + case BFD_RELOC_VTABLE_ENTRY: + return 1; + + default: + return 0; + } +} + +/* Return true if a relocation against a symbol may be replaced with + a relocation against section+offset. */ + +boolean +xstormy16_fix_adjustable (fixP) + fixS * fixP; +{ + if (fixP->fx_addsy == NULL) + return 1; + + /* 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) + return 0; + + return ! xstormy16_force_relocation (fixP); +} + +/* This is a copy of gas_cgen_md_apply_fix3, with some enhancements to + do various things that would not be valid for all ports. */ + +void +xstormy16_md_apply_fix3 (fixP, valueP, seg) + fixS * fixP; + valueT * valueP; + segT seg ATTRIBUTE_UNUSED; +{ + char *where = fixP->fx_frag->fr_literal + fixP->fx_where; + valueT value; + /* Canonical name, since used a lot. */ + CGEN_CPU_DESC cd = gas_cgen_cpu_desc; + + /* This port has pc-relative relocs and DIFF_EXPR_OK defined, so + it must deal with turning a BFD_RELOC_{8,16,32,64} into a + BFD_RELOC_*_PCREL for the case of + + .word something-. + */ + if (fixP->fx_pcrel) + switch (fixP->fx_r_type) + { + case BFD_RELOC_8: + fixP->fx_r_type = BFD_RELOC_8_PCREL; + break; + case BFD_RELOC_16: + fixP->fx_r_type = BFD_RELOC_16_PCREL; + break; + case BFD_RELOC_32: + fixP->fx_r_type = BFD_RELOC_32_PCREL; + break; + case BFD_RELOC_64: + fixP->fx_r_type = BFD_RELOC_64_PCREL; + break; + 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 + bfd_install_relocation, which is also going to use the symbol + value. That means that if the reloc is fully resolved we want to + use *valuep since bfd_install_relocation is not being used. + However, if the reloc is not fully resolved we do not want to use + *valuep, and must use fx_offset instead. However, if the reloc + is PC relative, we do want to use *valuep since it includes the + result of md_pcrel_from. This is confusing. */ + + if (fixP->fx_addsy == (symbolS *) NULL) + { + value = *valueP; + fixP->fx_done = 1; + } + else if (fixP->fx_pcrel) + value = *valueP; + else + { + value = fixP->fx_offset; + if (fixP->fx_subsy != (symbolS *) NULL) + { + if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section) + value -= S_GET_VALUE (fixP->fx_subsy); + else + { + /* We don't actually support subtracting a symbol. */ + as_bad_where (fixP->fx_file, fixP->fx_line, + _("expression too complex")); + } + } + } + + if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED) + { + int opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED; + const CGEN_OPERAND *operand = cgen_operand_lookup_by_num (cd, opindex); + const char *errmsg; + bfd_reloc_code_real_type reloc_type; + CGEN_FIELDS *fields = alloca (CGEN_CPU_SIZEOF_FIELDS (cd)); + const CGEN_INSN *insn = fixP->fx_cgen.insn; + + /* If the reloc has been fully resolved finish the operand here. */ + /* FIXME: This duplicates the capabilities of code in BFD. */ + if (fixP->fx_done) + { + CGEN_CPU_SET_FIELDS_BITSIZE (cd) (fields, CGEN_INSN_BITSIZE (insn)); + CGEN_CPU_SET_VMA_OPERAND (cd) (cd, opindex, fields, (bfd_vma) value); + +#if CGEN_INT_INSN_P + { + CGEN_INSN_INT insn_value = + cgen_get_insn_value (cd, where, CGEN_INSN_BITSIZE (insn)); + + /* ??? 0 is passed for `pc'. */ + errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, + &insn_value, (bfd_vma) 0); + cgen_put_insn_value (cd, where, CGEN_INSN_BITSIZE (insn), + insn_value); + } +#else + /* ??? 0 is passed for `pc'. */ + errmsg = CGEN_CPU_INSERT_OPERAND (cd) (cd, opindex, fields, where, + (bfd_vma) 0); +#endif + if (errmsg) + as_bad_where (fixP->fx_file, fixP->fx_line, "%s", errmsg); + } + + if (fixP->fx_done) + return; + + /* The operand isn't fully resolved. Determine a BFD reloc value + based on the operand information and leave it to + bfd_install_relocation. Note that this doesn't work when + partial_inplace == false. */ + + reloc_type = md_cgen_lookup_reloc (insn, operand, fixP); + if (reloc_type != BFD_RELOC_NONE) + { + fixP->fx_r_type = reloc_type; + } + else + { + as_bad_where (fixP->fx_file, fixP->fx_line, + _("unresolved expression that must be resolved")); + fixP->fx_done = 1; + return; + } + } + else if (fixP->fx_done) + { + /* We're finished with this fixup. Install it because + bfd_install_relocation won't be called to do it. */ + switch (fixP->fx_r_type) + { + case BFD_RELOC_8: + md_number_to_chars (where, value, 1); + break; + case BFD_RELOC_16: + md_number_to_chars (where, value, 2); + break; + case BFD_RELOC_32: + md_number_to_chars (where, value, 4); + break; + case BFD_RELOC_64: + md_number_to_chars (where, value, 8); + break; + default: + as_bad_where (fixP->fx_file, fixP->fx_line, + _("internal error: can't install fix for reloc type %d (`%s')"), + fixP->fx_r_type, bfd_get_reloc_code_name (fixP->fx_r_type)); + break; + } + } + else + { + /* bfd_install_relocation will be called to finish things up. */ + } + + /* 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) + *valueP = 0; + + /* Tuck `value' away for use by tc_gen_reloc. + See the comment describing fx_addnumber in write.h. + This field is misnamed (or misused :-). */ + fixP->fx_addnumber = value; +} + + +/* Write a value out to the object file, using the appropriate endianness. */ + +void +md_number_to_chars (buf, val, n) + char * buf; + valueT val; + int n; +{ + number_to_chars_littleendian (buf, val, n); +} + +/* Turn a string in input_line_pointer into a floating point constant of type + type, and store the appropriate bytes in *litP. The number of LITTLENUMS + emitted is stored in *sizeP . An error message is returned, or NULL on OK. +*/ + +/* Equal to MAX_PRECISION in atof-ieee.c */ +#define MAX_LITTLENUMS 6 + +char * +md_atof (type, litP, sizeP) + char type; + char * litP; + int * sizeP; +{ + int prec; + LITTLENUM_TYPE words [MAX_LITTLENUMS]; + LITTLENUM_TYPE *wordP; + char * t; + + switch (type) + { + case 'f': + case 'F': + prec = 2; + break; + + case 'd': + case 'D': + prec = 4; + break; + + /* FIXME: Some targets allow other format chars for bigger sizes here. */ + + default: + * sizeP = 0; + return _("Bad call to md_atof()"); + } + + t = atof_ieee (input_line_pointer, type, words); + if (t) + input_line_pointer = t; + * sizeP = prec * sizeof (LITTLENUM_TYPE); + + *sizeP = prec * sizeof (LITTLENUM_TYPE); + /* This loops outputs the LITTLENUMs in REVERSE order; in accord with + the littleendianness of the processor. */ + for (wordP = words + prec - 1; prec--;) + { + md_number_to_chars (litP, (valueT) (*wordP--), sizeof (LITTLENUM_TYPE)); + litP += sizeof (LITTLENUM_TYPE); + } + + return 0; +} diff -uprN binutils-2.11.92.0.12.3/gas/config/tc-xstormy16.h binutils-2.11.93.0.2/gas/config/tc-xstormy16.h --- binutils-2.11.92.0.12.3/gas/config/tc-xstormy16.h Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/config/tc-xstormy16.h Sun Feb 3 11:22:31 2002 @@ -0,0 +1,69 @@ +/* tc-xstormy16.h -- Header file for tc-xstormy16.c. + Copyright (C) 2000, 2001 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. */ + +#define TC_XSTORMY16 + +#ifndef BFD_ASSEMBLER +/* leading space so will compile with cc */ + #error XSTORMY16 support requires BFD_ASSEMBLER +#endif + +#define LISTING_HEADER "XSTORMY16 GAS " + +/* The target BFD architecture. */ +#define TARGET_ARCH bfd_arch_xstormy16 + +#define TARGET_FORMAT "elf32-xstormy16" + +#define TARGET_BYTES_BIG_ENDIAN 0 + +/* call md_pcrel_from_section, not md_pcrel_from */ +long md_pcrel_from_section PARAMS ((struct fix *, segT)); +#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC) + +/* Permit temporary numeric labels. */ +#define LOCAL_LABELS_FB 1 + +#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ + +/* We don't need to handle .word strangely. */ +#define WORKING_DOT_WORD + +#define MD_APPLY_FIX3 +#define md_apply_fix3 xstormy16_md_apply_fix3 + +#define obj_fix_adjustable(fixP) xstormy16_fix_adjustable (fixP) +extern boolean xstormy16_fix_adjustable PARAMS ((struct fix *)); + +#define TC_FORCE_RELOCATION(fix) xstormy16_force_relocation (fix) +extern int xstormy16_force_relocation PARAMS ((struct fix *)); + +#define TC_HANDLES_FX_DONE + +#define tc_gen_reloc gas_cgen_tc_gen_reloc + +/* Call md_pcrel_from_section(), not md_pcrel_from(). */ +#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC) +extern long md_pcrel_from_section PARAMS ((struct fix *, segT)); + +#define TC_CONS_FIX_NEW xstormy16_cons_fix_new +extern void xstormy16_cons_fix_new PARAMS ((fragS *f, int, int, expressionS *)); + +#define md_cgen_record_fixup_exp xstormy16_cgen_record_fixup_exp diff -uprN binutils-2.11.92.0.12.3/gas/configure binutils-2.11.93.0.2/gas/configure --- binutils-2.11.92.0.12.3/gas/configure Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/configure Sun Feb 3 11:22:31 2002 @@ -1507,9 +1507,18 @@ gnu*) ;; hpux10.20*|hpux11*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl + case $host_cpu in + hppa*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + esac ;; irix5* | irix6*) @@ -1593,13 +1602,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:1597: checking for object suffix" >&5 +echo "configure:1606: 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:1603: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then for ac_file in conftest.*; do case $ac_file in *.c) ;; @@ -1619,7 +1628,7 @@ ac_objext=$ac_cv_objext echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1623: checking for executable suffix" >&5 +echo "configure:1632: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1629,7 +1638,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:1633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:1642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -1662,7 +1671,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:1666: checking for ${ac_tool_prefix}file" >&5 +echo "configure:1675: 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 @@ -1724,7 +1733,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:1728: checking for file" >&5 +echo "configure:1737: 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 @@ -1795,7 +1804,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:1799: checking for $ac_word" >&5 +echo "configure:1808: 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 @@ -1827,7 +1836,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:1831: checking for $ac_word" >&5 +echo "configure:1840: 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 @@ -1862,7 +1871,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:1866: checking for $ac_word" >&5 +echo "configure:1875: 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 @@ -1894,7 +1903,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:1898: checking for $ac_word" >&5 +echo "configure:1907: 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 @@ -1961,8 +1970,8 @@ test x"$pic_mode" = xno && libtool_flags case $host in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1965 "configure"' > conftest.$ac_ext - if { (eval echo configure:1966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1974 "configure"' > conftest.$ac_ext + if { (eval echo configure:1975: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" @@ -1978,12 +1987,28 @@ case $host in rm -rf conftest* ;; +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo configure:1994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + case "`/usr/bin/file conftest.o`" in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; + *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1987: checking whether the C compiler needs -belf" >&5 +echo "configure:2012: 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 @@ -1996,14 +2021,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:2032: \"$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 @@ -2256,6 +2281,7 @@ for this_target in $target $canon_target m8*) cpu_type=m88k ;; mips*el) cpu_type=mips endian=little ;; mips*) cpu_type=mips endian=big ;; + or32*) cpu_type=or32 endian=big ;; pjl*) cpu_type=pj endian=little ;; pj*) cpu_type=pj endian=big ;; powerpc*le*) cpu_type=ppc endian=little ;; @@ -2263,6 +2289,7 @@ for this_target in $target $canon_target rs6000*) cpu_type=ppc ;; s390x*) cpu_type=s390 arch=s390x ;; s390*) cpu_type=s390 arch=s390 ;; + sh*le) cpu_type=sh endian=little ;; sh*) cpu_type=sh endian=big ;; sparclite*) cpu_type=sparc arch=sparclite ;; sparclet*) cpu_type=sparc arch=sparclet ;; @@ -2312,6 +2339,7 @@ for this_target in $target $canon_target arm-*-linux*aout*) fmt=aout em=linux ;; arm*-*-linux-gnu* | arm*-*-uclinux*) fmt=elf em=linux ;; + arm-*-netbsdelf*) fmt=elf em=nbsd ;; arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;; arm-*-oabi | thumb-*-oabi) fmt=elf ;; arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;; @@ -2338,6 +2366,7 @@ for this_target in $target $canon_target esac ;; hppa-*-*elf*) fmt=elf em=hppa ;; hppa-*-lites*) fmt=elf em=hppa ;; + hppa-*-netbsd*) fmt=elf em=nbsd ;; hppa-*-osf*) fmt=som em=hppa ;; hppa-*-rtems*) fmt=elf em=hppa ;; hppa-*-hpux11*) case ${cpu} in @@ -2364,8 +2393,16 @@ 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-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; - i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-netbsd*) em=nbsd bfd_gas=yes + case ${cpu} in + x86_64) fmt=elf ;; + *) case ${os} in + *elf*) fmt=elf ;; + *) fmt=aout ;; + esac + ;; + esac + ;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; i386-*-linux*coff*) fmt=coff em=linux ;; @@ -2427,6 +2464,7 @@ EOF ia64-*-aix*) fmt=elf em=ia64aix ;; ia64-*-linux-gnu*) fmt=elf em=linux ;; ia64-*-hpux*) fmt=elf em=hpux ;; + ia64-*-netbsd*) fmt=elf em=nbsd ;; m32r-*-*) fmt=elf bfd_gas=yes ;; @@ -2448,7 +2486,9 @@ EOF m68k-*-linux-gnu*) fmt=elf em=linux ;; m68k-*-gnu*) fmt=elf ;; m68k-*-lynxos*) fmt=coff em=lynx ;; - m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; + m68k-*-netbsdaout* | m68k-*-netbsd*) + fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; @@ -2460,7 +2500,6 @@ EOF mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf endian=little ;; mips-dec-openbsd*) fmt=elf endian=little ;; mips-dec-bsd*) fmt=aout endian=little ;; mips-sony-bsd*) fmt=ecoff ;; @@ -2485,6 +2524,9 @@ EOF mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; openrisc-*-*) fmt=elf bfd_gas=yes ;; + or32-*-rtems*) fmt=coff ;; + or32-*-coff) fmt=coff ;; + or32-*-elf) fmt=elf ;; pj*) fmt=elf ;; ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*) fmt=coff em=pe ;; @@ -2518,8 +2560,14 @@ EOF s390x-*-linux-gnu*) fmt=elf em=linux ;; s390-*-linux-gnu*) fmt=elf em=linux ;; - sh*eb-*-linux*) fmt=elf em=linux endian=big ;; - sh*-*-linux*) fmt=elf em=linux endian=little ;; + sh*-*-linux*) fmt=elf em=linux + case ${cpu} in + sh*eb) + endian=big ;; + sh*) + endian=little ;; + esac ;; + sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff bfd_gas=yes;; sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; @@ -2573,12 +2621,13 @@ EOF fmt=aout ;; vax-*-vms) fmt=vms ;; + w65-*-*) fmt=coff ;; + + xstormy16-*-*) fmt=elf bfd_gas=yes ;; z8k-*-coff | z8k-*-sim) fmt=coff ;; - w65-*-*) fmt=coff ;; - *-*-aout | *-*-scout) fmt=aout ;; *-*-freebsd*) fmt=elf em=freebsd bfd_gas=yes ;; @@ -2701,6 +2750,11 @@ EOF fi ;; + + xstormy16) + using_cgen=yes + ;; + *) ;; esac @@ -3078,7 +3132,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:3082: checking for $ac_word" >&5 +echo "configure:3136: 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 @@ -3108,7 +3162,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:3112: checking for $ac_word" >&5 +echo "configure:3166: 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 @@ -3159,7 +3213,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:3163: checking for $ac_word" >&5 +echo "configure:3217: 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 @@ -3191,7 +3245,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3195: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:3249: 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. @@ -3202,12 +3256,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 3206 "configure" +#line 3260 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3265: \"$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 @@ -3233,12 +3287,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:3237: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3291: 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:3242: checking whether we are using GNU C" >&5 +echo "configure:3296: 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 @@ -3247,7 +3301,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3251: \"$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:3305: \"$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 @@ -3266,7 +3320,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:3270: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3324: 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 @@ -3303,7 +3357,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:3307: checking for $ac_word" >&5 +echo "configure:3361: 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 @@ -3334,7 +3388,7 @@ done test -n "$YACC" || YACC="yacc" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:3338: checking how to run the C preprocessor" >&5 +echo "configure:3392: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -3349,13 +3403,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:3359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3413: \"$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 : @@ -3366,13 +3420,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:3376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3430: \"$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 : @@ -3383,13 +3437,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:3393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3447: \"$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 : @@ -3419,7 +3473,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:3423: checking for $ac_word" >&5 +echo "configure:3477: 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 @@ -3452,7 +3506,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:3456: checking for $ac_word" >&5 +echo "configure:3510: 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 @@ -3486,7 +3540,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:3490: checking for yywrap in -l$ac_lib" >&5 +echo "configure:3544: 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 @@ -3494,7 +3548,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:3563: \"$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 @@ -3528,7 +3582,7 @@ fi fi echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:3532: checking lex output file root" >&5 +echo "configure:3586: 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 @@ -3549,7 +3603,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:3553: checking whether yytext is a pointer" >&5 +echo "configure:3607: 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 @@ -3561,14 +3615,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:3626: \"$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 @@ -3590,11 +3644,11 @@ EOF fi -ALL_LINGUAS="fr" +ALL_LINGUAS="fr tr" # 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:3598: checking for $ac_word" >&5 +echo "configure:3652: 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 @@ -3622,12 +3676,12 @@ else fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3626: checking for ANSI C header files" >&5 +echo "configure:3680: 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 @@ -3635,7 +3689,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3693: \"$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* @@ -3652,7 +3706,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 @@ -3670,7 +3724,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 @@ -3691,7 +3745,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3702,7 +3756,7 @@ if (XOR (islower (i), ISLOWER (i)) || to exit (0); } EOF -if { (eval echo configure:3706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3726,12 +3780,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3730: checking for working const" >&5 +echo "configure:3784: 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:3838: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3801,21 +3855,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3805: checking for inline" >&5 +echo "configure:3859: 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:3873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3841,12 +3895,12 @@ EOF esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3845: checking for off_t" >&5 +echo "configure:3899: 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 @@ -3874,12 +3928,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3878: checking for size_t" >&5 +echo "configure:3932: 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 @@ -3909,19 +3963,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:3913: checking for working alloca.h" >&5 +echo "configure:3967: 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:3925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3979: \"$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 @@ -3942,12 +3996,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:3946: checking for alloca" >&5 +echo "configure:4000: 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:4033: \"$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 @@ -4007,12 +4061,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4011: checking whether alloca needs Cray hooks" >&5 +echo "configure:4065: 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:4041: checking for $ac_func" >&5 +echo "configure:4095: 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:4123: \"$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 @@ -4092,7 +4146,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4096: checking stack direction for C alloca" >&5 +echo "configure:4150: 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 @@ -4100,7 +4154,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:4177: \"$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 @@ -4144,17 +4198,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:4148: checking for $ac_hdr" >&5 +echo "configure:4202: 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:4158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4212: \"$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* @@ -4183,12 +4237,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4187: checking for $ac_func" >&5 +echo "configure:4241: 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:4269: \"$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 @@ -4236,7 +4290,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4240: checking for working mmap" >&5 +echo "configure:4294: 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 @@ -4244,7 +4298,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:4442: \"$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 @@ -4412,17 +4466,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:4416: checking for $ac_hdr" >&5 +echo "configure:4470: 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:4480: \"$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* @@ -4452,12 +4506,12 @@ done __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4456: checking for $ac_func" >&5 +echo "configure:4510: 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:4538: \"$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 @@ -4509,12 +4563,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4513: checking for $ac_func" >&5 +echo "configure:4567: 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:4595: \"$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 @@ -4571,19 +4625,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:4575: checking for LC_MESSAGES" >&5 +echo "configure:4629: 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:4587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4641: \"$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 @@ -4604,7 +4658,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:4608: checking whether NLS is requested" >&5 +echo "configure:4662: 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" @@ -4624,7 +4678,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:4628: checking whether included gettext is requested" >&5 +echo "configure:4682: 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" @@ -4643,17 +4697,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:4647: checking for libintl.h" >&5 +echo "configure:4701: 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:4657: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4711: \"$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* @@ -4670,19 +4724,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:4674: checking for gettext in libc" >&5 +echo "configure:4728: 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:4686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4740: \"$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 @@ -4698,7 +4752,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:4702: checking for bindtextdomain in -lintl" >&5 +echo "configure:4756: 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 @@ -4706,7 +4760,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:4775: \"$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 @@ -4733,19 +4787,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:4737: checking for gettext in libintl" >&5 +echo "configure:4791: 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:4803: \"$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 @@ -4773,7 +4827,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:4777: checking for $ac_word" >&5 +echo "configure:4831: 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 @@ -4807,12 +4861,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4811: checking for $ac_func" >&5 +echo "configure:4865: 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:4893: \"$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 @@ -4862,7 +4916,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:4866: checking for $ac_word" >&5 +echo "configure:4920: 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 @@ -4898,7 +4952,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:4902: checking for $ac_word" >&5 +echo "configure:4956: 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 @@ -4930,7 +4984,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -4970,7 +5024,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:4974: checking for $ac_word" >&5 +echo "configure:5028: 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 @@ -5004,7 +5058,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:5008: checking for $ac_word" >&5 +echo "configure:5062: 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 @@ -5040,7 +5094,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:5044: checking for $ac_word" >&5 +echo "configure:5098: 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 @@ -5130,7 +5184,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:5134: checking for catalogs to be installed" >&5 +echo "configure:5188: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -5158,17 +5212,17 @@ echo "configure:5134: 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:5162: checking for linux/version.h" >&5 +echo "configure:5216: 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:5172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5226: \"$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* @@ -5231,7 +5285,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:5235: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:5289: 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" @@ -5256,7 +5310,7 @@ fi echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:5260: checking for executable suffix" >&5 +echo "configure:5314: checking for executable suffix" >&5 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5266,7 +5320,7 @@ else rm -f conftest* echo 'int main () { return 0; }' > conftest.$ac_ext ac_cv_exeext= - if { (eval echo configure:5270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + if { (eval echo configure:5324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then for file in conftest.*; do case $file in *.c | *.o | *.obj) ;; @@ -5291,17 +5345,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:5295: checking for $ac_hdr" >&5 +echo "configure:5349: 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:5305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5359: \"$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* @@ -5331,7 +5385,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:5335: checking whether compiling a cross-assembler" >&5 +echo "configure:5389: checking whether compiling a cross-assembler" >&5 if test "${host}" = "${target}"; then cross_gas=no else @@ -5346,19 +5400,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:5350: checking for working alloca.h" >&5 +echo "configure:5404: 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:5362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5416: \"$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 @@ -5379,12 +5433,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:5383: checking for alloca" >&5 +echo "configure:5437: 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:5470: \"$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 @@ -5444,12 +5498,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:5448: checking whether alloca needs Cray hooks" >&5 +echo "configure:5502: 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:5478: checking for $ac_func" >&5 +echo "configure:5532: 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:5560: \"$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 @@ -5529,7 +5583,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:5533: checking stack direction for C alloca" >&5 +echo "configure:5587: 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 @@ -5537,7 +5591,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:5614: \"$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 @@ -5578,21 +5632,21 @@ EOF fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:5582: checking for inline" >&5 +echo "configure:5636: 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:5650: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -5622,12 +5676,12 @@ esac for ac_func in unlink remove do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5626: checking for $ac_func" >&5 +echo "configure:5680: 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:5708: \"$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 @@ -5679,12 +5733,12 @@ done for ac_func in sbrk do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5683: checking for $ac_func" >&5 +echo "configure:5737: 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:5765: \"$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 @@ -5742,7 +5796,7 @@ case $host in ;; *-ncr-sysv4.3*) echo $ac_n "checking for _mwvalidcheckl in -lmw""... $ac_c" 1>&6 -echo "configure:5746: checking for _mwvalidcheckl in -lmw" >&5 +echo "configure:5800: 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 @@ -5750,7 +5804,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:5819: \"$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 @@ -5782,7 +5836,7 @@ else fi echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5786: checking for main in -lm" >&5 +echo "configure:5840: 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 @@ -5790,14 +5844,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:5855: \"$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 @@ -5820,7 +5874,7 @@ fi ;; *) echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -echo "configure:5824: checking for main in -lm" >&5 +echo "configure:5878: 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 @@ -5828,14 +5882,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:5893: \"$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 @@ -5866,12 +5920,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:5870: checking for working assert macro" >&5 +echo "configure:5924: 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 @@ -5887,7 +5941,7 @@ assert (a == b ; return 0; } EOF -if { (eval echo configure:5891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gas_cv_assert_ok=yes else @@ -5928,12 +5982,12 @@ gas_test_headers=" " echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6 -echo "configure:5932: checking whether declaration is required for strstr" >&5 +echo "configure:5986: 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:6002: \"$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 @@ -5965,12 +6019,12 @@ fi echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6 -echo "configure:5969: checking whether declaration is required for malloc" >&5 +echo "configure:6023: 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:6039: \"$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 @@ -6002,12 +6056,12 @@ fi echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6 -echo "configure:6006: checking whether declaration is required for free" >&5 +echo "configure:6060: 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:6076: \"$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 @@ -6039,12 +6093,12 @@ fi echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6 -echo "configure:6043: checking whether declaration is required for sbrk" >&5 +echo "configure:6097: 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:6113: \"$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 @@ -6076,12 +6130,12 @@ fi echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6 -echo "configure:6080: checking whether declaration is required for environ" >&5 +echo "configure:6134: 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:6150: \"$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 @@ -6116,12 +6170,12 @@ fi # for it? echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6 -echo "configure:6120: checking whether declaration is required for errno" >&5 +echo "configure:6174: 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:6194: \"$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.11.92.0.12.3/gas/configure.in binutils-2.11.93.0.2/gas/configure.in --- binutils-2.11.92.0.12.3/gas/configure.in Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/configure.in Sun Feb 3 11:22:31 2002 @@ -137,6 +137,7 @@ changequote([,])dnl m8*) cpu_type=m88k ;; mips*el) cpu_type=mips endian=little ;; mips*) cpu_type=mips endian=big ;; + or32*) cpu_type=or32 endian=big ;; pjl*) cpu_type=pj endian=little ;; pj*) cpu_type=pj endian=big ;; powerpc*le*) cpu_type=ppc endian=little ;; @@ -144,6 +145,7 @@ changequote([,])dnl rs6000*) cpu_type=ppc ;; s390x*) cpu_type=s390 arch=s390x ;; s390*) cpu_type=s390 arch=s390 ;; + sh*le) cpu_type=sh endian=little ;; sh*) cpu_type=sh endian=big ;; sparclite*) cpu_type=sparc arch=sparclite ;; sparclet*) cpu_type=sparc arch=sparclet ;; @@ -193,6 +195,7 @@ changequote([,])dnl arm-*-linux*aout*) fmt=aout em=linux ;; arm*-*-linux-gnu* | arm*-*-uclinux*) fmt=elf em=linux ;; + arm-*-netbsdelf*) fmt=elf em=nbsd ;; arm-*-netbsd* | arm-*-openbsd*) fmt=aout em=nbsd ;; arm-*-oabi | thumb-*-oabi) fmt=elf ;; arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;; @@ -219,6 +222,7 @@ changequote([,])dnl esac ;; hppa-*-*elf*) fmt=elf em=hppa ;; hppa-*-lites*) fmt=elf em=hppa ;; + hppa-*-netbsd*) fmt=elf em=nbsd ;; hppa-*-osf*) fmt=som em=hppa ;; hppa-*-rtems*) fmt=elf em=hppa ;; hppa-*-hpux11*) case ${cpu} in @@ -245,8 +249,16 @@ 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-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; - i386-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes;; + i386-*-netbsd*) em=nbsd bfd_gas=yes + case ${cpu} in + x86_64) fmt=elf ;; + *) case ${os} in + *elf*) fmt=elf ;; + *) fmt=aout ;; + esac + ;; + esac + ;; i386-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes;; i386-*-linux*aout* | i386-*-linux*oldld) fmt=aout em=linux ;; i386-*-linux*coff*) fmt=coff em=linux ;; @@ -305,6 +317,7 @@ changequote([,])dnl ia64-*-aix*) fmt=elf em=ia64aix ;; ia64-*-linux-gnu*) fmt=elf em=linux ;; ia64-*-hpux*) fmt=elf em=hpux ;; + ia64-*-netbsd*) fmt=elf em=nbsd ;; m32r-*-*) fmt=elf bfd_gas=yes ;; @@ -326,7 +339,9 @@ changequote([,])dnl m68k-*-linux-gnu*) fmt=elf em=linux ;; m68k-*-gnu*) fmt=elf ;; m68k-*-lynxos*) fmt=coff em=lynx ;; - m68k-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;; + m68k-*-netbsdelf*) fmt=elf em=nbsd bfd_gas=yes ;; + m68k-*-netbsdaout* | m68k-*-netbsd*) + fmt=aout em=nbsd bfd_gas=yes ;; m68k-*-openbsd*) fmt=aout em=nbsd bfd_gas=yes ;; m68k-apple-aux*) fmt=coff em=aux ;; m68k-*-psos*) fmt=elf em=psos;; @@ -338,7 +353,6 @@ changequote([,])dnl mcore-*-pe) fmt=coff em=pe bfd_gas=yes ;; # don't change em like *-*-bsd does - mips-dec-netbsd*) fmt=elf endian=little ;; mips-dec-openbsd*) fmt=elf endian=little ;; mips-dec-bsd*) fmt=aout endian=little ;; mips-sony-bsd*) fmt=ecoff ;; @@ -363,6 +377,9 @@ changequote([,])dnl mn10200-*-*) fmt=elf bfd_gas=yes ;; mn10300-*-*) fmt=elf bfd_gas=yes ;; openrisc-*-*) fmt=elf bfd_gas=yes ;; + or32-*-rtems*) fmt=coff ;; + or32-*-coff) fmt=coff ;; + or32-*-elf) fmt=elf ;; pj*) fmt=elf ;; ppc-*-pe | ppc-*-cygwin* | ppc-*-winnt*) fmt=coff em=pe ;; @@ -394,8 +411,14 @@ changequote([,])dnl s390x-*-linux-gnu*) fmt=elf em=linux ;; s390-*-linux-gnu*) fmt=elf em=linux ;; - sh*eb-*-linux*) fmt=elf em=linux endian=big ;; - sh*-*-linux*) fmt=elf em=linux endian=little ;; + sh*-*-linux*) fmt=elf em=linux + case ${cpu} in + sh*eb) + endian=big ;; + sh*) + endian=little ;; + esac ;; + sh*-*-netbsdelf*) fmt=elf em=nbsd ;; sh-*-elf*) fmt=elf ;; sh-*-coff*) fmt=coff bfd_gas=yes;; sh-*-pe*) fmt=coff em=pe bfd_gas=yes endian=little ;; @@ -449,12 +472,13 @@ changequote([,])dnl fmt=aout ;; vax-*-vms) fmt=vms ;; + w65-*-*) fmt=coff ;; + + xstormy16-*-*) fmt=elf bfd_gas=yes ;; z8k-*-coff | z8k-*-sim) fmt=coff ;; - w65-*-*) fmt=coff ;; - *-*-aout | *-*-scout) fmt=aout ;; *-*-freebsd*) fmt=elf em=freebsd bfd_gas=yes ;; @@ -570,6 +594,11 @@ changequote([,])dnl AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.]) fi ;; + + xstormy16) + using_cgen=yes + ;; + *) ;; esac @@ -846,7 +875,7 @@ AC_PROG_CC AC_PROG_YACC AM_PROG_LEX -ALL_LINGUAS="fr" +ALL_LINGUAS="fr tr" CY_GNU_GETTEXT AM_MAINTAINER_MODE diff -uprN binutils-2.11.92.0.12.3/gas/doc/Makefile.am binutils-2.11.93.0.2/gas/doc/Makefile.am --- binutils-2.11.92.0.12.3/gas/doc/Makefile.am Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/doc/Makefile.am Sun Feb 3 11:22:31 2002 @@ -59,6 +59,10 @@ gasver.texi: Makefile as.info: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) as.dvi: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info + # This one isn't ready for prime time yet. Not even a little bit. noinst_TEXINFOS = internals.texi diff -uprN binutils-2.11.92.0.12.3/gas/doc/Makefile.in binutils-2.11.93.0.2/gas/doc/Makefile.in --- binutils-2.11.92.0.12.3/gas/doc/Makefile.in Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/doc/Makefile.in Sun Feb 3 11:22:31 2002 @@ -129,6 +129,7 @@ TEXI2POD = perl $(top_srcdir)/../etc/tex POD2MAN = pod2man --center="GNU Development Tools" \ --release="binutils-$(VERSION)" --section=1 + man_MANS = as.1 info_TEXINFOS = as.texinfo gasp.texi @@ -459,6 +460,10 @@ gasver.texi: Makefile as.info: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) as.dvi: $(srcdir)/as.texinfo asconfig.texi gasver.texi $(CPU_DOCS) +# We want install to imply install-info as per GNU standards, despite the +# cygnus option. +install: install-info + # Maintenance # We need it for the taz target in ../../Makefile.in. diff -uprN binutils-2.11.92.0.12.3/gas/doc/as.texinfo binutils-2.11.93.0.2/gas/doc/as.texinfo --- binutils-2.11.92.0.12.3/gas/doc/as.texinfo Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/doc/as.texinfo Sun Feb 3 11:22:31 2002 @@ -1,6 +1,6 @@ \input texinfo @c -*-Texinfo-*- @c Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -@c 2001 +@c 2001, 2002 @c Free Software Foundation, Inc. @c UPDATE!! On future updates-- @c (1) check for new machine-dep cmdline options in @@ -127,7 +127,7 @@ END-INFO-DIR-ENTRY This file documents the GNU Assembler "@value{AS}". @c man begin COPYRIGHT -Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. +Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 @@ -180,7 +180,7 @@ done. @end tex @vskip 0pt plus 1filll -Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc. +Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 @@ -274,18 +274,11 @@ gcc(1), ld(1), and the Info entries for @ifset ARM @emph{Target ARM options:} - [@b{-m[arm]1}|@b{-m[arm]2}|@b{-m[arm]250}|@b{-m[arm]3}| - @b{-m[arm]6}|@b{-m[arm]60}|@b{-m[arm]600}|@b{-m[arm]610}| - @b{-m[arm]620}|@b{-m[arm]7[t][[d]m[i]][fe]}|@b{-m[arm]70}| - @b{-m[arm]700}|@b{-m[arm]710[c]}|@b{-m[arm]7100}| - @b{-m[arm]7500}|@b{-m[arm]8}|@b{-m[arm]810}|@b{-m[arm]9}| - @b{-m[arm]920}|@b{-m[arm]920t}|@b{-m[arm]9tdmi}| - @b{-mstrongarm}|@b{-mstrongarm110}|@b{-mstrongarm1100}] - [@b{-m[arm]v2}|@b{-m[arm]v2a}|@b{-m[arm]v3}|@b{-m[arm]v3m}| - @b{-m[arm]v4}|@b{-m[arm]v4t}|@b{-m[arm]v5}|@b{-[arm]v5t}| - @b{-[arm]v5te}] - [@b{-mthumb}|@b{-mall}] - [@b{-mfpa10}|@b{-mfpa11}|@b{-mfpe-old}|@b{-mno-fpu}] +@c Don't document the deprecated options + [@b{-mcpu}=@var{processor}[+@var{extension}@dots{}]] + [@b{-march}=@var{architecture}[+@var{extension}@dots{}]] + [@b{-mfpu}=@var{floating-point-fromat}] + [@b{-mthumb}] [@b{-EB}|@b{-EL}] [@b{-mapcs-32}|@b{-mapcs-26}|@b{-mapcs-float}| @b{-mapcs-reentrant}] @@ -361,6 +354,7 @@ gcc(1), ld(1), and the Info entries for [@b{--fixed-special-register-names}] [@b{--globalize-symbols}] [@b{--gnu-syntax}] [@b{--relax}] [@b{--no-predefined-symbols}] [@b{--no-expand}] [@b{--no-merge-gregs}] [@b{-x}] + [@b{--linker-allocated-gregs}] @end ifset @ifset PDP11 @@ -568,14 +562,14 @@ The following options are available when processor family. @table @gcctabopt -@item -m[arm][1|2|3|6|7|8|9][...] +@item -mcpu=@var{processor}[+@var{extension}@dots{}] Specify which ARM processor variant is the target. -@item -m[arm]v[2|2a|3|3m|4|4t|5|5t] +@item -march=@var{architecture}[+@var{extension}@dots{}] Specify which ARM architecture variant is used by the target. -@item -mthumb | -mall -Enable or disable Thumb only instruction decoding. -@item -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu +@item -mfpu=@var{floating-point-format} Select which Floating Point architecture is the target. +@item -mthumb +Enable Thumb only instruction decoding. @item -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi Select which procedure calling convention is in use. @item -EB | -EL diff -uprN binutils-2.11.92.0.12.3/gas/doc/c-arm.texi binutils-2.11.93.0.2/gas/doc/c-arm.texi --- binutils-2.11.92.0.12.3/gas/doc/c-arm.texi Mon Oct 15 21:27:23 2001 +++ binutils-2.11.93.0.2/gas/doc/c-arm.texi Sun Feb 3 11:22:32 2002 @@ -31,45 +31,149 @@ @table @code -@cindex @code{-marm} command line option, ARM -@item -marm@code{[2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|810|9|9tdmi|920|strongarm|strongarm110|strongarm1100]} -@itemx -mxscale -@itemx -marm9e +@cindex @code{-mcpu=} command line option, ARM +@item -mcpu=@var{processor}[+@var{extension}@dots{}] This option specifies the target processor. The assembler will issue an error message if an attempt is made to assemble an instruction which -will not execute on the target processor. +will not execute on the target processor. The following processor names are +recognized: +@code{arm1}, +@code{arm2}, +@code{arm250}, +@code{arm3}, +@code{arm6}, +@code{arm60}, +@code{arm600}, +@code{arm610}, +@code{arm620}, +@code{arm7}, +@code{arm7m}, +@code{arm7d}, +@code{arm7dm}, +@code{arm7di}, +@code{arm7dmi}, +@code{arm70}, +@code{arm700}, +@code{arm700i}, +@code{arm710}, +@code{arm710t}, +@code{arm720}, +@code{arm720t}, +@code{arm740t}, +@code{arm710c}, +@code{arm7100}, +@code{arm7500}, +@code{arm7500fe}, +@code{arm7t}, +@code{arm7tdmi}, +@code{arm8}, +@code{arm810}, +@code{strongarm}, +@code{strongarm1}, +@code{strongarm110}, +@code{strongarm1100}, +@code{strongarm1110}, +@code{arm9}, +@code{arm920}, +@code{arm920t}, +@code{arm922t}, +@code{arm940t}, +@code{arm9tdmi}, +@code{arm9e}, +@code{arm946e-r0}, +@code{arm946e}, +@code{arm966e-r0}, +@code{arm966e}, +@code{arm10t}, +@code{arm10e}, +@code{arm1020}, +@code{arm1020t}, +@code{arm1020e}, +@code{ep9312} (ARM920 with Cirrus Maverick coprocessor), +@code{i80200} (Intel XScale processor) +and +@code{xscale}. +The special name @code{all} may be used to allow the +assembler to accept instructions valid for any ARM processor. + +In addition to the basic instruction set, the assembler can be told to +accept various extension mnemonics that extend the processor using the +co-processor instruction space. For example, @code{-mcpu=arm920+maverick} +is equivalent to specifying @code{-mcpu=ep9312}. The following extensions +are currently supported: +@code{+maverick} +and +@code{+xscale}. -The option @code{-marm9e} specifies that the target processor is the -Cirrus ARM processor with the Maverick DSP co-processor. - -@cindex @code{-marmv} command line option, ARM -@item -marmv@code{[2|2a|3|3m|4|4t|5|5t|5te]} +@cindex @code{-march=} command line option, ARM +@item -march=@var{architecture}[+@var{extension}@dots{}] This option specifies the target architecture. The assembler will issue an error message if an attempt is made to assemble an instruction which -will not execute on the target architecture. -The option @code{-marmv5te} specifies that v5t architecture should be -used with the El Segundo extensions enabled. +will not execute on the target architecture. The following architecture +names are recognized: +@code{armv1}, +@code{armv2}, +@code{armv2a}, +@code{armv2s}, +@code{armv3}, +@code{armv3m}, +@code{armv4}, +@code{armv4xm}, +@code{armv4t}, +@code{armv4txm}, +@code{armv5}, +@code{armv5t}, +@code{armv5txm}, +@code{armv5te}, +@code{armv5texp} +and +@code{xscale}. +If both @code{-mcpu} and +@code{-march} are specified, the assembler will use +the setting for @code{-mcpu}. + +The architecture option can be extended with the same instruction set +extension options as the @code{-mcpu} option. + +@cindex @code{-mfpu=} command line option, ARM +@item -mfpu=@var{floating-point-format} + +This option specifies the floating point format to assemble for. The +assembler will issue an error message if an attempt is made to assemble +an instruction which will not execute on the target floating point unit. +The following format options are recognized: +@code{softfpa}, +@code{fpe}, +@code{fpe2}, +@code{fpe3}, +@code{fpa}, +@code{fpa10}, +@code{fpa11}, +@code{arm7500fe}, +@code{softvfp}, +@code{softvfp+vfp}, +@code{vfp}, +@code{vfp10}, +@code{vfp10-r0}, +@code{vfp9}, +@code{vfpxd}, +@code{arm1020t} +and +@code{arm1020e}. + +In addition to determining which instructions are assembled, this option +also affects the way in which the @code{.double} assembler directive behaves +when assembling little-endian code. + +The default is dependent on the processor selected. For Architecture 5 or +later, the default is to assembler for VFP instructions; for earlier +architectures the default is to assemble for FPA instructions. @cindex @code{-mthumb} command line option, ARM @item -mthumb -This option specifies that only Thumb instructions should be assembled. - -@cindex @code{-mall} command line option, ARM -@item -mall -This option specifies that any Arm or Thumb instruction should be assembled. - -@cindex @code{-mfpa} command line option, ARM -@item -mfpa @code{[10|11]} -This option specifies the floating point architecture in use on the -target processor. - -@cindex @code{-mfpe-old} command line option, ARM -@item -mfpe-old -Do not allow the assembly of floating point multiple instructions. - -@cindex @code{-mno-fpu} command line option, ARM -@item -mno-fpu -Do not allow the assembly of any floating point instructions. +This option specifies that the assembler should start assembling Thumb +instructions; that is, it should behave as though the file starts with a +@code{.code 16} directive. @cindex @code{-mthumb-interwork} command line option, ARM @item -mthumb-interwork diff -uprN binutils-2.11.92.0.12.3/gas/doc/c-mmix.texi binutils-2.11.93.0.2/gas/doc/c-mmix.texi --- binutils-2.11.92.0.12.3/gas/doc/c-mmix.texi Wed Nov 21 15:35:32 2001 +++ binutils-2.11.93.0.2/gas/doc/c-mmix.texi Sun Feb 3 11:22:32 2002 @@ -1,4 +1,4 @@ -@c Copyright 2001 Free Software Foundation, Inc. +@c Copyright 2001, 2002 Free Software Foundation, Inc. @c This is part of the GAS manual. @c For copying conditions, see the file as.texinfo. @c MMIX description by Hans-Peter Nilsson, hp@bitrange.com @@ -79,7 +79,15 @@ is specified, and assembly fails otherwi be expanded. It needs to be kept in mind that @code{mmixal} is both an assembler and linker, while @code{@value{AS}} will expand instructions that at link stage can be contracted. (Though linker relaxation isn't yet -implemented in @code{@value{LD}}.) +implemented in @code{@value{LD}}.) The option @samp{-x} also imples +@samp{--linker-allocated-gregs}. + +@cindex @samp{--linker-allocated-gregs} command line option, MMIX +Usually a two-operand-expression (@pxref{GREG-base}) without a matching +@samp{GREG} directive is treated as an error by @code{@value{AS}}. When +the option @samp{--linker-allocated-gregs} is in effect, they are instead +passed through to the linker, which will allocate as many global registers +as is needed. @node MMIX-Expand @section Instruction expansion @@ -381,7 +389,10 @@ Global registers allocated with this dir higher-to-lower within a file. Other than that, the exact order of register allocation and elimination is undefined. For example, the order is undefined when more than one file with such directives are linked -together. +together. With the options @samp{-x} and @samp{--linker-allocated-gregs}, +@samp{GREG} directives for two-operand cases like the one mentioned above +can be omitted. Sufficient global registers will then be allocated by the +linker. @item BYTE @cindex assembler directive BYTE, MMIX @@ -544,10 +555,11 @@ upper-case characters. There's no unicode support. -The following is a list of programs in -@url{http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html} dated -2001-08-25 (md5sum c393470cfc86fac040487d22d2bf0172) that assemble with -@code{mmixal} but do not assemble with @code{@value{AS}}: +The following is a list of programs in @samp{mmix.tar.gz}, available at +@url{http://www-cs-faculty.stanford.edu/~knuth/mmix-news.html}, last +checked with the version dated 2001-08-25 (md5sum +c393470cfc86fac040487d22d2bf0172) that assemble with @code{mmixal} but do +not assemble with @code{@value{AS}}: @table @code @item silly.mms diff -uprN binutils-2.11.92.0.12.3/gas/doc/internals.texi binutils-2.11.93.0.2/gas/doc/internals.texi --- binutils-2.11.92.0.12.3/gas/doc/internals.texi Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/doc/internals.texi Sun Feb 3 11:22:32 2002 @@ -843,11 +843,13 @@ zero if the target is little endian. @itemx md_longopts_size @itemx md_parse_option @itemx md_show_usage +@itemx md_after_parse_args @cindex md_shortopts @cindex md_longopts @cindex md_longopts_size @cindex md_parse_option @cindex md_show_usage +@cindex md_after_parse_args GAS uses these variables and functions during option processing. @code{md_shortopts} is a @code{const char *} which GAS adds to the machine independent string passed to @code{getopt}. @code{md_longopts} is a @@ -859,6 +861,9 @@ GAS will call @code{md_parse_option} whe unrecognized code, presumably indicating a special code value which appears in @code{md_longopts}. GAS will call @code{md_show_usage} when a usage message is printed; it should print a description of the machine specific options. +@code{md_after_pase_args}, if defined, is called after all options are +processed, to let the backend override settings done by the generic option +parsing. @item md_begin @cindex md_begin diff -uprN binutils-2.11.92.0.12.3/gas/dwarf2dbg.c binutils-2.11.93.0.2/gas/dwarf2dbg.c --- binutils-2.11.92.0.12.3/gas/dwarf2dbg.c Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/dwarf2dbg.c Sun Feb 3 11:22:31 2002 @@ -230,11 +230,20 @@ dwarf2_gen_line_info (ofs, loc) { struct line_subseg *ss; struct line_entry *e; + static unsigned int line = -1; + static unsigned int filenum = -1; /* Early out for as-yet incomplete location information. */ if (loc->filenum == 0 || loc->line == 0) return; + /* Don't emit sequences of line symbols for the same line. */ + if (line == loc->line && filenum == loc->filenum) + return; + + line = loc->line; + filenum = loc->filenum; + e = (struct line_entry *) xmalloc (sizeof (*e)); e->next = NULL; e->frag = frag_now; diff -uprN binutils-2.11.92.0.12.3/gas/gasp.c binutils-2.11.93.0.2/gas/gasp.c --- binutils-2.11.92.0.12.3/gas/gasp.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/gas/gasp.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* gasp.c - Gnu assembler preprocessor main program. - 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 Steve and Judy Chamberlain of Cygnus Support, @@ -1549,6 +1549,7 @@ get_any_string (idx, in, out, expand, pr int val; char buf[20]; /* Turns the next expression into a string. */ + /* xgettext: no-c-format */ idx = exp_get_abs (_("% operator needs absolute expression"), idx + 1, in, @@ -3537,6 +3538,8 @@ show_help () show_usage (stdout, 0); } +int main PARAMS ((int, char **)); + int main (argc, argv) int argc; diff -uprN binutils-2.11.92.0.12.3/gas/macro.c binutils-2.11.93.0.2/gas/macro.c --- binutils-2.11.92.0.12.3/gas/macro.c Mon Oct 1 15:25:22 2001 +++ binutils-2.11.93.0.2/gas/macro.c Sun Feb 3 11:22:31 2002 @@ -1,5 +1,5 @@ /* macro.c - macro support for gas and gasp - 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 Steve and Judy Chamberlain of Cygnus Support, @@ -378,6 +378,7 @@ get_any_string (idx, in, out, expand, pr int val; char buf[20]; /* Turns the next expression into a string. */ + /* xgettext: no-c-format */ idx = (*macro_expr) (_("% operator needs absolute expression"), idx + 1, in, diff -uprN binutils-2.11.92.0.12.3/gas/po/.cvsignore binutils-2.11.93.0.2/gas/po/.cvsignore --- binutils-2.11.92.0.12.3/gas/po/.cvsignore Wed Dec 31 16:00:00 1969 +++ binutils-2.11.93.0.2/gas/po/.cvsignore Sun Feb 3 11:22:32 2002 @@ -0,0 +1 @@ +*.gmo diff -uprN binutils-2.11.92.0.12.3/gas/po/POTFILES.in binutils-2.11.93.0.2/gas/po/POTFILES.in --- binutils-2.11.92.0.12.3/gas/po/POTFILES.in Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/po/POTFILES.in Sun Feb 3 11:22:32 2002 @@ -96,6 +96,8 @@ config/tc-ns32k.c config/tc-ns32k.h config/tc-openrisc.c config/tc-openrisc.h +config/tc-or32.c +config/tc-or32.h config/tc-pdp11.c config/tc-pdp11.h config/tc-pj.c @@ -122,6 +124,8 @@ config/tc-vax.c config/tc-vax.h config/tc-w65.c config/tc-w65.h +config/tc-xstormy16.c +config/tc-xstormy16.h config/tc-z8k.c config/tc-z8k.h depend.c diff -uprN binutils-2.11.92.0.12.3/gas/po/fr.po binutils-2.11.93.0.2/gas/po/fr.po --- binutils-2.11.92.0.12.3/gas/po/fr.po Fri Nov 16 14:05:52 2001 +++ binutils-2.11.93.0.2/gas/po/fr.po Sun Feb 3 11:22:32 2002 @@ -4,82 +4,81 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU gas 2.11\n" -"POT-Creation-Date: 2001-01-11 12:04-0800\n" -"PO-Revision-Date: 2001-10-02 08:00-0500\n" +"Project-Id-Version: GNU gas 2.12-pre020121\n" +"POT-Creation-Date: 2002-01-17 12:56+0000\n" +"PO-Revision-Date: 2002-01-25 08:00-0500\n" "Last-Translator: Michel Robitaille \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: app.c:464 app.c:478 +#: app.c:476 app.c:490 msgid "end of file in comment" msgstr "fin du fichier dans le commentaire" -#: app.c:557 -msgid "end of file in string: inserted '\"'" -msgstr "fin du fichier dans la chaîne: inséré '\"'" +#: app.c:569 +msgid "end of file in string; inserted '\"'" +msgstr "fin du fichier dans la chaîne: '\"' inséré" -#: app.c:623 +#: app.c:635 #, c-format -msgid "Unknown escape '\\%c' in string: Ignored" -msgstr "Caractère d'échappement inconnue '\\%c' dans la chaîne: ignoré" +msgid "unknown escape '\\%c' in string; ignored" +msgstr "échappement inconnu '\\%c' dans la chaîne; ignoré" -#: app.c:632 -msgid "End of file in string: '\"' inserted" -msgstr "Fin du fichier dans la chaîne: '\"' inséré" +#: app.c:644 +msgid "end of file in string; '\"' inserted" +msgstr "fin du fichier dans la chaîne; '\"' inséré" -#: app.c:752 +#: app.c:764 msgid "end of file not at end of a line; newline inserted" msgstr "fin du fichier n'est pas à la fin de la ligne; nouvelle ligne insérée" -#: app.c:910 +#: app.c:923 msgid "end of file in multiline comment" msgstr "fin de fichier dans un commentaire multilignes" -#: app.c:974 MRO +#: app.c:987 msgid "end of file after a one-character quote; \\0 inserted" msgstr "fin du fichier après la présence d'un seul caractère apostrophe; \\0 inséré" -#: app.c:982 +#: app.c:995 msgid "end of file in escape character" msgstr "fin de fichier dans le caractère d'échappement" -#: app.c:994 -msgid "Missing close quote: (assumed)" -msgstr "Apostrophe de fermeture manquant: (assumé)" +#: app.c:1007 +msgid "missing close quote; (assumed)" +msgstr "apostrophe de fermeture manquant; (assumé)" -#: app.c:1057 app.c:1111 app.c:1186 +#: app.c:1075 app.c:1129 app.c:1139 app.c:1204 msgid "end of file in comment; newline inserted" msgstr "fin de fichier dans le commentaire; nouvelle ligne insérée" -#: app.c:1121 -msgid "EOF in Comment: Newline inserted" -msgstr "EOF dans le commentaire: nouvelle ligne insérée" - -#: as.c:147 +#: as.c:148 msgid "missing emulation mode name" msgstr "nom du mode d'émulation manquant" -#: as.c:162 +#: as.c:163 +#, c-format msgid "unrecognized emulation name `%s'" msgstr "nom de l'émulation non reconnu `%s'" -#: as.c:209 +#: as.c:210 #, c-format msgid "GNU assembler version %s (%s) using BFD version %s" msgstr "Version de l'assembleur GNU %s (%s) utilisant la version BFD %s" -#: as.c:212 +#: as.c:213 +#, c-format msgid "GNU assembler version %s (%s)" msgstr "Version de l'assembleur GNU %s (%s)" -#: as.c:221 +#: as.c:222 +#, c-format msgid "Usage: %s [option...] [asmfile...]\n" msgstr "Usage: %s [option...] [fichier-assembleur...]\n" -#: as.c:223 +#: as.c:224 msgid "" "Options:\n" " -a[sub-option...]\t turn on listings\n" @@ -91,7 +90,6 @@ msgid "" " \t m include macro expansions\n" " \t n omit forms processing\n" " \t s include symbols\n" -" \t L include line debug statistics (if applicable)\n" " \t =FILE list to FILE (must be last sub-option)\n" msgstr "" "Options:\n" @@ -104,8 +102,6 @@ msgstr "" " \t m inclure l'expansion de macros\n" " \t n omettre le tratiement des formulaires (forms)\n" " \t s inclure les symboles\n" -" \t L inclure les lignes pour les statistiques de débug\n" -" (si applicable)\n" " \t =FICHIER les lister au FICHIER (doit être la dernière sous-option)\n" #: as.c:237 @@ -117,6 +113,7 @@ msgid " --defsym SYM=VAL define msgstr " --defsym SYMBOLE=VALEUR définir le SYMBOLE avec une valeur\n" #: as.c:255 +#, c-format msgid " emulate output (default %s)\n" msgstr " émuler la sortie (par défaut %s)\n" @@ -124,7 +121,7 @@ msgstr " émuler msgid " -f skip whitespace and comment preprocessing\n" msgstr " -f escamoter le pré-traitement des espaces blancs et des commentaires\n" -#: as.c:261 MRO +#: as.c:261 msgid " --gstabs generate stabs debugging information\n" msgstr " --gstabs générer les talons d'information pour le débug\n" @@ -265,21 +262,22 @@ msgstr "" " --listing-cont-lines initialiser le nombre maximal de lignes de continuation à utiliser\n" " pour la colonne de donnée en sortie dans le listing\n" -#: as.c:327 gasp.c:3527 +#: as.c:327 gasp.c:3528 #, c-format msgid "Report bugs to %s\n" msgstr "Rapporter toutes anomalies à %s\n" #. This output is intended to follow the GNU standards document. #: as.c:527 +#, c-format msgid "GNU assembler %s\n" msgstr "Assembleur GNU %s\n" #: as.c:528 -msgid "Copyright 2000 Free Software Foundation, Inc.\n" -msgstr "Copyright 2000 Free Software Foundation, Inc.\n" +msgid "Copyright 2001 Free Software Foundation, Inc.\n" +msgstr "Copyright 2001 Free Software Foundation, Inc.\n" -#: as.c:529 gasp.c:3621 +#: as.c:529 gasp.c:3627 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" @@ -301,6 +299,7 @@ msgid "emulations not handled in this co msgstr "émulations non traités dans cette configuration" #: as.c:546 +#, c-format msgid "alias = %s\n" msgstr "alias = %s\n" @@ -315,6 +314,7 @@ msgid "cpu-type = %s\n" msgstr "type de CPU = %s\n" #: as.c:550 +#, c-format msgid "format = %s\n" msgstr "format = %s\n" @@ -328,32 +328,35 @@ msgid "bad defsym; format is --defsym na msgstr "defsym erroné; format est --defsym nom=valeur" #: as.c:590 -msgid "No file name following -t option\n" -msgstr "Aucun nom de fichier après l'option -t\n" +msgid "no file name following -t option" +msgstr "aucun nom de fichier après l'option -t" -#: as.c:606 -msgid "Failed to read instruction table %s\n" -msgstr "Échec de lecture de la table d'instructions %s\n" +#: as.c:605 +#, c-format +msgid "failed to read instruction table %s\n" +msgstr "échec de lecture de la table d'instructions %s\n" -#: as.c:723 +#: as.c:720 +#, c-format msgid "invalid listing option `%c'" msgstr "Option de listage invalide '%c'" -#: as.c:922 +#: as.c:928 #, c-format msgid "%d warnings, treating warnings as errors" msgstr "%d AVERTISSEMENTS, traitement des avertissements comme des erreurs" -#: as.c:953 +#: as.c:959 #, c-format msgid "%s: total time in assembly: %ld.%06ld\n" msgstr "%s: temps total d'assemblage: %ld.%06ld\n" -#: as.c:956 +#: as.c:962 +#, c-format msgid "%s: data size %ld\n" msgstr "%s: taille des données %ld\n" -#: as.h:225 +#: as.h:216 #, c-format msgid "Case value %ld unexpected at line %d of file \"%s\"\n" msgstr "Casse inattendue valeur %ld à la ligne %d du fichier \"%s\"\n" @@ -362,73 +365,71 @@ msgstr "Casse inattendue valeur %ld à la #. * We have a GROSS internal error. #. * This should never happen. #. -#: atof-generic.c:437 config/tc-a29k.c:544 config/tc-i860.c:340 -#: config/tc-i860.c:832 config/tc-m68k.c:3176 config/tc-m68k.c:3205 -#: config/tc-sparc.c:2543 -msgid "failed sanity check." +#: atof-generic.c:437 config/tc-m68k.c:2879 +msgid "failed sanity check" msgstr "la vérification de l'état de santé a échoué" -#: cond.c:77 +#: cond.c:79 msgid "invalid identifier for \".ifdef\"" msgstr "identificateur invalide pour \".ifdef\"" -#: cond.c:131 +#: cond.c:133 msgid "non-constant expression in \".if\" statement" msgstr "expression n'est pas une constante dans la déclaration \".if\"" -#: cond.c:227 +#: cond.c:229 msgid "bad format for ifc or ifnc" msgstr "mauvais format pour ifc ou ifnc" -#: cond.c:261 -msgid "\".elseif\" without matching \".if\" - ignored" -msgstr "\".elseif\" sans pairage \".if\" - ignoré" - -#: cond.c:266 -msgid "\".elseif\" after \".else\" - ignored" -msgstr "\".elseif\" après \".else\" - ignoré" +#: cond.c:260 +msgid "\".elseif\" without matching \".if\"" +msgstr "\".elseif\" sans pairage \".if\"" + +#: cond.c:264 +msgid "\".elseif\" after \".else\"" +msgstr "\".elseif\" après \".else\"" -#: cond.c:269 cond.c:378 +#: cond.c:267 cond.c:375 msgid "here is the previous \"else\"" msgstr "voici le \"else\" précédent" -#: cond.c:272 cond.c:381 +#: cond.c:270 cond.c:378 msgid "here is the previous \"if\"" msgstr "voici le \"if\" précédent" -#: cond.c:305 +#: cond.c:299 msgid "non-constant expression in \".elseif\" statement" msgstr "expression n'est pas une constante dans la déclaration \".elseif\"" -#: cond.c:340 +#: cond.c:338 msgid "\".endif\" without \".if\"" msgstr "\".endif\" sans \".if\"" -#: cond.c:370 -msgid ".else without matching .if - ignored" -msgstr ".else sans concordance avec .if - ignoré" - -#: cond.c:375 -msgid "duplicate \"else\" - ignored" -msgstr "duplicité du \"else\" - ignoré" +#: cond.c:368 +msgid "\".else\" without matching \".if\"" +msgstr "\".else\" non pairé avec \"if\"" + +#: cond.c:372 +msgid "duplicate \"else\"" +msgstr "duplicité du \"else\"" -#: cond.c:426 +#: cond.c:424 msgid ".ifeqs syntax error" msgstr ".ifeqs erreur de syntaxe" -#: cond.c:509 +#: cond.c:507 msgid "end of macro inside conditional" msgstr "fin de macro à l'intérieur d'un conditionnel" -#: cond.c:511 +#: cond.c:509 msgid "end of file inside conditional" msgstr "fin de fichier à l'intérieur d'un conditionnel" -#: cond.c:514 +#: cond.c:512 msgid "here is the start of the unterminated conditional" msgstr "voici le début du conditionnel non terminé" -#: cond.c:518 +#: cond.c:516 msgid "here is the \"else\" of the unterminated conditional" msgstr "voici le \"else\" du conditionnel non terminé" @@ -442,17 +443,16 @@ msgstr "Tentative de placer un symbole c msgid "Attempt to put an undefined symbol into set %s" msgstr "Tentative de placer le symbole indéfini dans l'ensemble %s" -#: config/obj-aout.c:197 config/obj-coff.c:1246 config/obj-elf.c:1739 -#: ecoff.c:3647 +#: config/obj-aout.c:197 config/obj-coff.c:1274 #, c-format msgid "Symbol `%s' can not be both weak and common" msgstr "Symbole `%s' ne peut être à la fois 'weak' et 'common'" -#: config/obj-aout.c:255 config/obj-coff.c:1982 +#: config/obj-aout.c:255 config/obj-coff.c:2010 msgid "unresolved relocation" msgstr "relocalisation non résolue" -#: config/obj-aout.c:257 config/obj-coff.c:1984 +#: config/obj-aout.c:257 config/obj-coff.c:2012 #, c-format msgid "bad relocation: symbol `%s' not in symbol table" msgstr "relocalisation erronée: symbole `%s' n'est pas dans la table des symboles" @@ -462,7 +462,7 @@ msgstr "relocalisation erronée: symbole msgid "%s: bad type for weak symbol" msgstr "%s: type erroné pour un symbole faible" -#: config/obj-aout.c:458 config/obj-coff.c:2913 write.c:1868 +#: config/obj-aout.c:458 config/obj-coff.c:2940 write.c:1933 #, c-format msgid "%s: global symbols not supported in common sections" msgstr "%s: symboles globaux non supportés dans les section communes" @@ -476,176 +476,181 @@ msgstr "Symbole local %s n'a jamais été msgid "subsegment index too high" msgstr "index de sous-segments trop grand" -#: config/obj-bout.c:319 config/obj-vms.c:561 +#: config/obj-bout.c:319 config/obj-vms.c:562 #, c-format msgid "Local symbol %s never defined" msgstr "Symbole local %s n'a jamais été défini." -#: config/obj-coff.c:156 +#: config/obj-coff.c:166 #, c-format msgid "Inserting \"%s\" into structure table failed: %s" msgstr "Insertion de \"%s\" dans la table de structure a échoué: %s" #. Zero is used as an end marker in the file. -#: config/obj-coff.c:451 +#: config/obj-coff.c:469 msgid "Line numbers must be positive integers\n" msgstr "Les numéros de lignes doit être des entiers positifs\n" -#: config/obj-coff.c:484 config/obj-coff.c:2328 +#: config/obj-coff.c:503 config/obj-coff.c:2355 msgid ".ln pseudo-op inside .def/.endef: ignored." msgstr ".ln pseudo opérateur à l'intérieur de .def/.endef: ignoré." -#: config/obj-coff.c:527 ecoff.c:3283 +#: config/obj-coff.c:546 ecoff.c:3280 msgid ".loc outside of .text" msgstr ".loc à l'extérieur de .text" -#: config/obj-coff.c:534 +#: config/obj-coff.c:553 msgid ".loc pseudo-op inside .def/.endef: ignored." msgstr ".loc pseudo opérateur à l'intérieur de .def/.endef: ignoré." -#: config/obj-coff.c:622 config/obj-coff.c:2385 +#: config/obj-coff.c:641 config/obj-coff.c:2412 msgid ".def pseudo-op used inside of .def/.endef: ignored." msgstr ".def pseudo opérateur utilisé à l'intérieur de .def/.endef: ignoré." -#: config/obj-coff.c:668 config/obj-coff.c:2437 +#: config/obj-coff.c:687 config/obj-coff.c:2464 msgid ".endef pseudo-op used outside of .def/.endef: ignored." msgstr ".endef pseudo opérateur utilisé à l'extérieur de .def/.endef: ignoré." -#: config/obj-coff.c:706 +#: config/obj-coff.c:725 +#, c-format msgid "`%s' symbol without preceding function" msgstr "`%s' symbole sans fonction qui la précède" -#: config/obj-coff.c:793 config/obj-coff.c:2512 +#: config/obj-coff.c:812 config/obj-coff.c:2539 +#, c-format msgid "unexpected storage class %d" msgstr "classe de stockage inattendue %d" -#: config/obj-coff.c:906 config/obj-coff.c:2619 +#: config/obj-coff.c:925 config/obj-coff.c:2646 msgid ".dim pseudo-op used outside of .def/.endef: ignored." msgstr ".dim pseudo opérateur utilisé à l'extérieur de .def/.endef: ignoré." -#: config/obj-coff.c:926 config/obj-coff.c:2639 +#: config/obj-coff.c:945 config/obj-coff.c:2666 msgid "badly formed .dim directive ignored" msgstr "directive .dim mal composée - ignorée" -#: config/obj-coff.c:977 config/obj-coff.c:2702 +#: config/obj-coff.c:996 config/obj-coff.c:2729 msgid ".size pseudo-op used outside of .def/.endef ignored." msgstr ".size pseudo opérateur utilisé à l'extérieur de .def/.endef ignoré." -#: config/obj-coff.c:993 config/obj-coff.c:2718 +#: config/obj-coff.c:1012 config/obj-coff.c:2745 msgid ".scl pseudo-op used outside of .def/.endef ignored." msgstr ".scl pseudo opérateur utilisé à l'extérieur de .def/.endef ignoré." -#: config/obj-coff.c:1011 config/obj-coff.c:2736 +#: config/obj-coff.c:1030 config/obj-coff.c:2763 msgid ".tag pseudo-op used outside of .def/.endef ignored." msgstr ".tag pseudo opérateur utilisé à l'extérieur de .def/.endef ignoré." -#: config/obj-coff.c:1030 config/obj-coff.c:2754 +#: config/obj-coff.c:1049 config/obj-coff.c:2781 #, c-format msgid "tag not found for .tag %s" msgstr "étiquette non repérée pour .tag %s" -#: config/obj-coff.c:1045 config/obj-coff.c:2769 +#: config/obj-coff.c:1064 config/obj-coff.c:2796 msgid ".type pseudo-op used outside of .def/.endef ignored." msgstr ".type pseudo opérateur utilisé à l'extérieur de .def/.endef ignoré." -#: config/obj-coff.c:1067 config/obj-coff.c:2791 +#: config/obj-coff.c:1086 config/obj-coff.c:2818 msgid ".val pseudo-op used outside of .def/.endef ignored." msgstr ".val pseudo opérateur utilisé à l'extérieur de .def/.endef ignoré." -#: config/obj-coff.c:1207 config/obj-coff.c:2986 +#: config/obj-coff.c:1231 config/obj-coff.c:3013 msgid "mismatched .eb" msgstr ".eb ne concorde pas" -#: config/obj-coff.c:1225 config/obj-coff.c:3026 +#: config/obj-coff.c:1252 config/obj-coff.c:3053 msgid "C_EFCN symbol out of scope" msgstr "symbole C_EFCN hors gamme" #. STYP_INFO #. STYP_LIB #. STYP_OVER -#: config/obj-coff.c:1447 +#: config/obj-coff.c:1476 +#, c-format msgid "unsupported section attribute '%c'" msgstr "attribut de section non supporté '%c'" -#: config/obj-coff.c:1452 config/obj-coff.c:3726 config/tc-ppc.c:3925 +#: config/obj-coff.c:1481 config/obj-coff.c:3758 config/tc-ppc.c:4211 +#, c-format msgid "unknown section attribute '%c'" msgstr "attribut de section inconnu '%c'" -#: config/obj-coff.c:1482 config/tc-ppc.c:3943 read.c:2512 +#: config/obj-coff.c:1511 config/tc-ppc.c:4229 config/tc-tic54x.c:4130 +#: read.c:2555 #, c-format msgid "error setting flags for \"%s\": %s" msgstr "erreur lors de l'initialisation des fanions de \"%s\": %s" -#: config/obj-coff.c:1493 config/obj-elf.c:723 +#: config/obj-coff.c:1522 #, c-format msgid "Ignoring changed section attributes for %s" msgstr "A ignoré les attributs de section modifiés pour %s" -#: config/obj-coff.c:1629 +#: config/obj-coff.c:1658 #, c-format msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n" msgstr "0x%lx: \"%s\" type = %ld, classe = %d, segment = %d\n" -#: config/obj-coff.c:1809 config/obj-ieee.c:69 +#: config/obj-coff.c:1838 config/obj-ieee.c:69 msgid "Out of step\n" msgstr "Compteur d'étapes épuisée\n" -#: config/obj-coff.c:2244 +#: config/obj-coff.c:2271 msgid "bfd_coff_swap_scnhdr_out failed" msgstr "bfd_coff_swap_scnhdr_out a échoué" -#: config/obj-coff.c:2469 +#: config/obj-coff.c:2496 msgid "`.bf' symbol without preceding function\n" msgstr "`.bf' symbole sans fonction qui la précède\n" -#: config/obj-coff.c:3422 config/obj-ieee.c:507 output-file.c:52 -#: output-file.c:119 +#: config/obj-coff.c:3450 config/obj-ieee.c:507 #, c-format msgid "FATAL: Can't create %s" msgstr "FATALE: ne peut créer %s" -#: config/obj-coff.c:3600 +#: config/obj-coff.c:3632 +#, c-format msgid "Can't close %s: %s" msgstr "Ne peut fermer %s: %s" -#: config/obj-coff.c:3634 +#: config/obj-coff.c:3666 #, c-format msgid "Too many new sections; can't add \"%s\"" msgstr "Trop de nouvelles sections; ne peut l'ajouter \"%s\"" -#: config/obj-coff.c:4041 config/tc-m88k.c:1257 config/tc-sparc.c:3531 +#: config/obj-coff.c:4073 config/tc-sparc.c:3537 msgid "Expected comma after name" msgstr "Virgule attendue après le nom" -#: config/obj-coff.c:4047 read.c:1956 +#: config/obj-coff.c:4079 msgid "Missing size expression" msgstr "Expression de la taille manquante" -#: config/obj-coff.c:4053 +#: config/obj-coff.c:4085 #, c-format msgid "lcomm length (%d.) <0! Ignored." msgstr "longueur lcomm (%d.) <0! Ignoré." -#: config/obj-coff.c:4081 read.c:2190 +#: config/obj-coff.c:4113 #, c-format msgid "Symbol %s already defined" msgstr "Symbole %s est déjà défini" -#: config/obj-coff.c:4176 config/tc-i960.c:3215 +#: config/obj-coff.c:4208 config/tc-i960.c:3206 #, c-format msgid "No 'bal' entry point for leafproc %s" msgstr "Pas de point d'entrée 'bal' pour la procédure leafproc %s" -#: config/obj-coff.c:4255 write.c:2575 +#: config/obj-coff.c:4287 #, c-format msgid "Negative of non-absolute symbol %s" msgstr "Négatif d'un symbole non absolu %s" -#: config/obj-coff.c:4276 write.c:2589 MRO +#: config/obj-coff.c:4308 msgid "callj to difference of 2 symbols" msgstr "appel de callj pour différencier 2 symboles" -#: config/obj-coff.c:4322 +#: config/obj-coff.c:4354 #, c-format msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld." msgstr "Ne peut produire de relocalisation {- %s-seg symbole \"%s\"} @ fichier adresse %ld." @@ -653,155 +658,196 @@ msgstr "Ne peut produire de relocalisati #. 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. -#: config/obj-coff.c:4411 config/tc-i960.c:3235 write.c:2733 +#: config/obj-coff.c:4443 config/tc-i960.c:3226 write.c:2826 msgid "can't use COBR format with external label" msgstr "ne peut utiliser un format COBR avec une étiquette externe" -#: config/obj-coff.c:4490 +#: config/obj-coff.c:4518 #, c-format msgid "Value of %ld too large for field of %d bytes at 0x%lx" msgstr "Valeur de %ld trop grande pour un champ de %d octets à 0x%lx" -#: config/obj-coff.c:4504 write.c:2823 +#: config/obj-coff.c:4532 #, c-format msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx" msgstr "Débordement de .word signé; commutation peut être trop grande; %ld à 0x%lx" -#: config/obj-ecoff.c:241 +#: config/obj-ecoff.c:227 msgid "Can't set GP value" msgstr "Ne peut initialiser une valeur GP" -#: config/obj-ecoff.c:248 +#: config/obj-ecoff.c:234 msgid "Can't set register masks" msgstr "Ne peut initialiser les masques de registres" -#: config/obj-elf.c:308 config/tc-sparc.c:3674 config/tc-v850.c:259 -msgid "Expected comma after symbol-name" -msgstr "Virgule attendue après un nom de symbole" +#: config/obj-elf.c:308 +msgid "expected comma after symbol-name" +msgstr "virgule attendue après un nom de symbole" -#: config/obj-elf.c:315 config/tc-sparc.c:3684 +#: config/obj-elf.c:315 config/tc-sparc.c:3690 #, c-format msgid ".COMMon length (%d.) <0! Ignored." msgstr "longueur de .common (%d.) <0! Ignoré." -#: config/obj-elf.c:325 config/tc-alpha.c:4335 config/tc-sparc.c:3694 -#: config/tc-v850.c:282 -msgid "Ignoring attempt to re-define symbol" -msgstr "Tentative ignorée de re-définition de symbole" +#: config/obj-elf.c:325 ecoff.c:3399 read.c:1403 read.c:1504 read.c:2137 +#: read.c:2226 read.c:2856 read.c:4937 symbols.c:361 symbols.c:460 +#, c-format +msgid "symbol `%s' is already defined" +msgstr "symbole `%s' est déjà défini" -#: config/obj-elf.c:333 config/tc-sparc.c:3702 config/tc-v850.c:292 +#: config/obj-elf.c:333 #, c-format -msgid "Length of .comm \"%s\" is already %ld. Not changed to %d." -msgstr "longueur de .comm \"%s\" est déjà %ld. N'a pas été modifié à %d." +msgid "length of .comm \"%s\" is already %ld; not changed to %d" +msgstr "longueur de .comm \"%s\" est déjà %ld; n''a pas été modifié à %d." -#: config/obj-elf.c:356 config/tc-v850.c:319 -msgid "Common alignment negative; 0 assumed" -msgstr "Alignement négative du commun; 0 est assumé" +#: config/obj-elf.c:356 +msgid "common alignment negative; 0 assumed" +msgstr "alignement négatif du commun; 0 est assumé" -#: config/obj-elf.c:375 config/tc-m32r.c:1286 config/tc-ppc.c:1518 -#: config/tc-v850.c:382 -msgid "Common alignment not a power of 2" -msgstr "Alignement du commun n'est pas une puissance de 2" +#: config/obj-elf.c:375 +msgid "common alignment not a power of 2" +msgstr "alignement du commun n'est pas une puissance de 2" -#: config/obj-elf.c:438 config/tc-sparc.c:3826 config/tc-v850.c:564 +#: config/obj-elf.c:438 config/tc-sparc.c:3832 config/tc-v850.c:565 #, c-format msgid "bad .common segment %s" msgstr "segment .common erroné %s" -#: config/obj-elf.c:664 +#: config/obj-elf.c:668 #, c-format -msgid "Setting incorrect section type for %s" -msgstr "Initialisation incorrect du type de section de %s" +msgid "setting incorrect section type for %s" +msgstr "initialisation incorrecte du type de section pour %s" -#: config/obj-elf.c:668 +#: config/obj-elf.c:672 +#, c-format +msgid "ignoring incorrect section type for %s" +msgstr "type de section incorrect de %s a été ignoré" + +#: config/obj-elf.c:685 #, c-format -msgid "Ignoring incorrect section type for %s" -msgstr "A ignoré le type de section incorrect de %s" +msgid "setting incorrect section attributes for %s" +msgstr "initialisation incorrecte des attributs de section de %s" -#: config/obj-elf.c:681 +#: config/obj-elf.c:732 #, c-format -msgid "Setting incorrect section attributes for %s" -msgstr "Initialisation incorrecte des attributs de section de %s" +msgid "ignoring changed section attributes for %s" +msgstr "changement d'attributs de section ignoré pour %s" -#: config/obj-elf.c:753 -msgid "Unrecognized .section attribute: want a,w,x" -msgstr "Attribut .section non reconnu: attendu: a,w,x" +#: config/obj-elf.c:734 +#, c-format +msgid "ignoring changed section entity size for %s" +msgstr "changement d'entité de taille de section pour %s" + +#: config/obj-elf.c:737 +#, c-format +msgid "ignoring new section group for %s" +msgstr "nouveau groupe de section ignoré pour %s" -#: config/obj-elf.c:793 -msgid "Unrecognized section attribute" -msgstr "attribut de section non reconnue" +#: config/obj-elf.c:788 +msgid "unrecognized .section attribute: want a,w,x,M,S,G" +msgstr "attribut .section non reconnu: nécessite a,w,x,M,S,G" -#: config/obj-elf.c:815 -msgid "Unrecognized section type" -msgstr "type de section non reconnu" +#: config/obj-elf.c:828 +msgid "unrecognized section attribute" +msgstr "attribut de section non reconnu" -#: config/obj-elf.c:866 -msgid "Missing section name" -msgstr "Nom de section manquant" +#: config/obj-elf.c:850 read.c:2538 +msgid "unrecognized section type" +msgstr "type de section non reconnnu" -#: config/obj-elf.c:932 -msgid "Bad .section directive - character following name is not '#'" -msgstr "Directive .section erronée - caractère suivant le nom n'est pas '#'" +#: config/obj-elf.c:880 +msgid "missing name" +msgstr "nom manquant" + +#: config/obj-elf.c:987 +msgid "invalid merge entity size" +msgstr "fusion invalide d'entité taille" + +#: config/obj-elf.c:994 +msgid "entity size for SHF_MERGE not specified" +msgstr "taille d'entité pour SHF_MERGE non spécifiée" + +#: config/obj-elf.c:1007 +msgid "group name for SHF_GROUP not specified" +msgstr "nom de groupe pour SHF_GROUP non spécifié" + +#: config/obj-elf.c:1020 +msgid "character following name is not '#'" +msgstr "caractère suivant le nom n'est pas '#'" -#: config/obj-elf.c:1033 +#: config/obj-elf.c:1121 msgid ".previous without corresponding .section; ignored" msgstr ".previous sans directive correspondante .section; ignoré" -#: config/obj-elf.c:1060 +#: config/obj-elf.c:1148 msgid ".popsection without corresponding .pushsection; ignored" msgstr ".popsection sans directive correspondante .pushsection; ignoré" -#: config/obj-elf.c:1113 +#: config/obj-elf.c:1202 msgid "expected comma after name in .symver" msgstr "virgule attendue après le nom dans .symver" -#: config/obj-elf.c:1137 +#: config/obj-elf.c:1225 #, c-format msgid "missing version name in `%s' for symbol `%s'" msgstr "nom de version manquant dans `%s' pour le symbole `%s'" -#: config/obj-elf.c:1148 +#: config/obj-elf.c:1236 #, c-format msgid "multiple versions [`%s'|`%s'] for symbol `%s'" msgstr "version multiples [`%s'|`%s'] pour le symbole `%s'" -#: config/obj-elf.c:1361 config/obj-som.c:155 config/obj-som.c:201 -msgid "Expected quoted string" -msgstr "chaîne mise en commentaire attendue" +#: config/obj-elf.c:1470 +msgid "expected quoted string" +msgstr "chaîne en commentaire attendue" -#: config/obj-elf.c:1382 +#: config/obj-elf.c:1491 #, c-format msgid "expected comma after name `%s' in .size directive" msgstr "virgule attendue après le nom `%s' dans la directive .size" -#: config/obj-elf.c:1391 +#: config/obj-elf.c:1500 msgid "missing expression in .size directive" msgstr "expression manquante dans la directive .size" -#: config/obj-elf.c:1467 -msgid "ignoring unrecognized symbol type \"%s\"" -msgstr "type de symbole non reconnu est ignoré \"%s\"" +#: config/obj-elf.c:1583 +#, c-format +msgid "unrecognized symbol type \"%s\"" +msgstr "type de symbole non reconnu \"%s\"" -#: config/obj-elf.c:1648 +#: config/obj-elf.c:1764 msgid ".size expression too complicated to fix up" msgstr "expression .size trop compliquée pour tenter de la corriger" -#: config/obj-elf.c:1680 +#: config/obj-elf.c:1796 #, c-format msgid "invalid attempt to declare external version name as default in symbol `%s'" msgstr "tentative invalide de déclaration d'un nom de version externe comme symbole par défaut `%s'" -#: config/obj-elf.c:1862 -msgid "Failed to set up debugging information: %s" -msgstr "Échec d'initialisation des informations de débug: %s" - -#: config/obj-elf.c:1882 -msgid "Can't start writing .mdebug section: %s" -msgstr "Ne peut débuter l'écriture de la section .mdebug %s" - -#: config/obj-elf.c:1890 -msgid "Could not write .mdebug section: %s" -msgstr "Ne peut écrire la section .mdebug: %s" +#: config/obj-elf.c:1855 ecoff.c:3644 +#, c-format +msgid "symbol `%s' can not be both weak and common" +msgstr "Symbole `%s' ne peut être à la fois weak et common" + +#: config/obj-elf.c:1971 +#, c-format +msgid "can't create group: %s" +msgstr "ne peut créet le groupe: %s" + +#: config/obj-elf.c:2068 +#, c-format +msgid "failed to set up debugging information: %s" +msgstr "échec d'initialisation des informations de débug: %s" + +#: config/obj-elf.c:2088 +#, c-format +msgid "can't start writing .mdebug section: %s" +msgstr "ne peut débuter l'écriture de la section .mdebug: %s" + +#: config/obj-elf.c:2096 +#, c-format +msgid "could not write .mdebug section: %s" +msgstr "ne peut écrire la section .mdebug: %s" #: config/obj-ieee.c:455 msgid "too many sections" @@ -811,6 +857,10 @@ msgstr "trop de sections" msgid "Only one .version pseudo-op per file!" msgstr "Un seul pseudo opérateur .version par fichier!" +#: config/obj-som.c:155 config/obj-som.c:201 +msgid "Expected quoted string" +msgstr "chaîne mise en commentaire attendue" + #: config/obj-som.c:164 #, c-format msgid "FATAL: Attaching version header %s" @@ -825,44 +875,45 @@ msgstr "Un seul pseudo opérateur .copyri msgid "FATAL: Attaching copyright header %s" msgstr "FATAL: attachement de l'en-tête de version %s" -#: config/obj-vms.c:462 +#: config/obj-vms.c:463 #, c-format msgid "compiler emitted zero-size common symbol `%s' already defined" msgstr "compilateur a donné une taille zéro pour un symbole commun `%s' déjà défini" -#: config/obj-vms.c:472 +#: config/obj-vms.c:473 #, c-format msgid "compiler redefined zero-size common symbol `%s'" msgstr "compilateur a re-défini la taille zéro du symbole commun `%s'" -#: config/obj-vms.c:591 +#: config/obj-vms.c:592 #, c-format msgid "Couldn't create VMS object file \"%s\"" msgstr "Ne peut créer un fichier objet VMS \"%s\"" -#: config/obj-vms.c:616 +#: config/obj-vms.c:617 msgid "I/O error writing VMS object file (length prefix)" msgstr "Erreur d'E/S lors de l'écriture du fichier objet VMS (préfixe de longueur)" -#: config/obj-vms.c:630 +#: config/obj-vms.c:631 msgid "I/O error writing VMS object file" msgstr "Erreur d'E/S lors de l'écriture du fichier objet VMS" -#: config/obj-vms.c:1220 +#: config/obj-vms.c:1221 +#, c-format msgid "Couldn't find source file \"%s\", status=%%X%x" msgstr "Ne peut repérer le fichier source \"%s\", état=%%X%x" -#: config/obj-vms.c:1718 config/obj-vms.c:2894 +#: config/obj-vms.c:1719 config/obj-vms.c:2895 #, c-format msgid "debugger forward reference error, dbx type %d" msgstr "erreur de référence avant en débug, dbx type %d" -#: config/obj-vms.c:1793 +#: config/obj-vms.c:1794 #, c-format msgid "Variable descriptor %d too complicated. Defined as `void *'." msgstr "Descripteur de variable %d trop compliqué. Défini comme 'void *'." -#: config/obj-vms.c:2107 +#: config/obj-vms.c:2108 msgid "" "***Warning - the assembly code generated by the compiler has placed \n" " global constant(s) in the text psect. These will not be available to \n" @@ -883,80 +934,81 @@ msgstr "" " des modules sources.\n" " Vous avez été maintenant averti! \n" -#: config/obj-vms.c:2421 +#: config/obj-vms.c:2422 #, c-format msgid "debugginer output: %d is an unknown untyped variable." msgstr "résultat de débug: %d est un type inconnu de variable sans type." -#: config/obj-vms.c:2639 +#: config/obj-vms.c:2640 #, c-format msgid "debugger output: structure element `%s' has undefined type" msgstr "résultat de débug: élément de structure `%s' a un type indéfini" -#: config/obj-vms.c:2750 +#: config/obj-vms.c:2751 #, c-format msgid "debugger output: %d is an unknown type of variable." msgstr "résultat de débug: %d a un type indéfini de variable" -#: config/obj-vms.c:2883 +#: config/obj-vms.c:2884 #, c-format msgid "debugger output: Unable to resolve %d circular references." msgstr "résultat de débug: incapable de résoudre %d les références circurlaires" -#: config/obj-vms.c:3085 +#: config/obj-vms.c:3086 #, c-format msgid "Module name truncated: %s\n" msgstr "Nom du module a été tronqué: %s\n" -#: config/obj-vms.c:3363 +#: config/obj-vms.c:3364 #, c-format msgid "Symbol %s replaced by %s\n" msgstr "Symbole %s remplacé par %s\n" #. impossible -#: config/obj-vms.c:3646 +#: config/obj-vms.c:3647 +#, c-format msgid "Unknown VMS psect type (%ld)" msgstr "Type de section psect VMS inconnue (%ld)" -#: config/obj-vms.c:3687 +#: config/obj-vms.c:3688 #, c-format msgid "Globalsymbol attribute for symbol %s was unexpected." msgstr "Attribut de type Globalsymbol pour le symbole %s attendu." -#: config/obj-vms.c:3836 +#: config/obj-vms.c:3837 msgid "Invalid data type for globalvalue" msgstr "Type de données invalide pour un type globalvalue" -#: config/obj-vms.c:3848 +#: config/obj-vms.c:3849 #, c-format msgid "Invalid globalvalue of %s" msgstr "Valeur de type globalvalue invalide pour %s" -#: config/obj-vms.c:4198 +#: config/obj-vms.c:4199 msgid "Couldn't find fixup fragment when checking for indirect reference" msgstr "Ne peut repérer un fragment de correctif lors de la vérification des références indirectes" -#: config/obj-vms.c:4541 config/obj-vms.c:4682 +#: config/obj-vms.c:4542 config/obj-vms.c:4683 msgid "Fixup data addsy and subsy don't have the same type" msgstr "Les correctifs de données 'addsy' et 'subsy' n'ont pas le même type" -#: config/obj-vms.c:4545 config/obj-vms.c:4686 +#: config/obj-vms.c:4546 config/obj-vms.c:4687 msgid "Fixup data addsy and subsy don't have an appropriate type" msgstr "Les correctifs de données 'addsy' et 'subsy' n'ont pas un type approprié" -#: config/obj-vms.c:4548 config/obj-vms.c:4689 +#: config/obj-vms.c:4549 config/obj-vms.c:4690 msgid "Fixup data is erroneously \"pcrel\"" msgstr "Correctif de données est erroné \"pcrel\"" -#: config/obj-vms.c:4564 config/obj-vms.c:4708 +#: config/obj-vms.c:4565 config/obj-vms.c:4709 msgid "Fixup datum is not a longword" msgstr "Correctif des données n'est pas un 'longword'" -#: config/obj-vms.c:4568 config/obj-vms.c:4712 +#: config/obj-vms.c:4569 config/obj-vms.c:4713 msgid "Fixup datum is not \"fixP->fx_addsy\"" msgstr "Correctif des données n'est pas \"fixP->fx_addsy\"" -#: config/obj-vms.c:4783 +#: config/obj-vms.c:4784 #, c-format msgid "" "g++ wrote an extern reference to `%s' as a routine.\n" @@ -965,114 +1017,128 @@ msgstr "" "g++ a écrit une référence externe vers `%s' comme étant une routine.\n" "Cela sera corrigé, mais en en espérant qu'il ne s'agit pas réellement d'une routine." -#: config/obj-vms.c:4915 +#: config/obj-vms.c:4916 msgid "Can't handle global xtors symbols yet." msgstr "Ne peut traiter les symboles xtors globaux encore." -#: config/obj-vms.c:4918 +#: config/obj-vms.c:4919 +#, c-format msgid "Unknown %s" msgstr "inconnu: %s" #. #. * Error otherwise. #. -#: config/obj-vms.c:5003 +#: config/obj-vms.c:5004 +#, c-format msgid "unhandled stab type %d" msgstr "type de 'stab' non traité %d" -#: config/tc-a29k.c:160 config/tc-sparc.c:3878 +#: config/tc-a29k.c:160 config/tc-sparc.c:3884 msgid "Unknown segment type" msgstr "type de segment inconnu" #. Probably a memory allocation problem? Give up now. -#: config/tc-a29k.c:330 config/tc-hppa.c:1412 config/tc-mips.c:1030 -#: config/tc-mips.c:1072 config/tc-sparc.c:846 +#: config/tc-a29k.c:330 config/tc-hppa.c:1462 config/tc-mips.c:1251 +#: config/tc-mips.c:1293 config/tc-sparc.c:847 msgid "Broken assembler. No assembly attempted." msgstr "Bris d'assemblage. Aucune tentative d'assemblage." -#: config/tc-a29k.c:375 config/tc-avr.c:1124 config/tc-d10v.c:532 -#: config/tc-d30v.c:552 config/tc-h8300.c:296 config/tc-h8500.c:294 -#: config/tc-mcore.c:655 config/tc-mn10200.c:954 config/tc-mn10300.c:1335 -#: config/tc-ppc.c:1974 config/tc-sh.c:838 config/tc-tic80.c:282 -#: config/tc-v850.c:2076 config/tc-w65.c:248 config/tc-z8k.c:336 +#: config/tc-a29k.c:375 config/tc-avr.c:1131 config/tc-d10v.c:540 +#: config/tc-d30v.c:552 config/tc-h8300.c:313 config/tc-h8500.c:284 +#: config/tc-mcore.c:655 config/tc-mmix.c:468 config/tc-mn10200.c:940 +#: config/tc-mn10300.c:1311 config/tc-ppc.c:2106 config/tc-s390.c:1054 +#: config/tc-sh.c:869 config/tc-tic80.c:283 config/tc-v850.c:2073 +#: config/tc-w65.c:241 config/tc-z8k.c:343 msgid "missing operand" msgstr "opérande manquante" -#: config/tc-a29k.c:415 config/tc-cris.c:913 config/tc-cris.c:921 -#: config/tc-hppa.c:1545 config/tc-i860.c:431 config/tc-i860.c:448 -#: config/tc-sparc.c:1408 config/tc-sparc.c:1414 +#: config/tc-a29k.c:414 config/tc-cris.c:950 config/tc-cris.c:958 +#: config/tc-hppa.c:1598 config/tc-i860.c:431 config/tc-i860.c:448 +#: config/tc-sparc.c:1409 config/tc-sparc.c:1415 +#, c-format msgid "Unknown opcode: `%s'" -msgstr "code-op inconnu: `%s'" +msgstr "opcode inconnu: `%s'" -#: config/tc-a29k.c:420 +#: config/tc-a29k.c:419 +#, c-format msgid "Unknown opcode `%s'." -msgstr "code-op inconnu `%s'" +msgstr "opcode inconnu `%s'" -#: config/tc-a29k.c:452 +#: config/tc-a29k.c:451 +#, c-format msgid "Too many operands: %s" msgstr "Trop d'opérandes: %s" -#: config/tc-a29k.c:474 config/tc-a29k.c:505 +#: config/tc-a29k.c:473 config/tc-a29k.c:504 #, c-format msgid "Immediate value of %ld is too large" msgstr "Valeur immédiate de %ld est trop grande" -#: config/tc-a29k.c:890 +#: config/tc-a29k.c:543 config/tc-i860.c:340 config/tc-i860.c:832 +#: config/tc-m68k.c:3181 config/tc-m68k.c:3210 config/tc-sparc.c:2544 +msgid "failed sanity check." +msgstr "la vérification de l'état de santé a échoué" + +#: config/tc-a29k.c:889 #, c-format msgid "bad relocation type: 0x%02x" msgstr "type de relocalisation erroné: 0x%02x" -#: config/tc-a29k.c:914 +#: config/tc-a29k.c:916 #, c-format msgid "need %o3\n" msgstr "a besoin de %o3\n" -#: config/tc-a29k.c:930 +#: config/tc-a29k.c:932 msgid "a29k_convert_frag\n" msgstr "a29k_convert_frag\n" -#: config/tc-a29k.c:939 +#: config/tc-a29k.c:941 msgid "a29k_estimate_size_before_relax\n" msgstr "a29k_estimate_size_before_relax\n" -#: config/tc-a29k.c:1090 +#: config/tc-a29k.c:1092 #, c-format msgid "label \"$%d\" redefined" msgstr "étiquette \"$%d\" redéfinie" -#: config/tc-a29k.c:1163 +#: config/tc-a29k.c:1165 +#, c-format msgid "Invalid expression after %%%%\n" msgstr "expression invalide après %%%%\n" -#: config/tc-a29k.c:1174 +#: config/tc-a29k.c:1176 msgid "Invalid register in & expression" msgstr "registre invalide dans l'expression &" -#: config/tc-alpha.c:837 +#: config/tc-alpha.c:789 +#, c-format msgid "internal error: can't hash opcode `%s': %s" -msgstr "erreur interne: ne peut insérer dans la table de hachage le code-op `%s': %s" +msgstr "erreur interne: ne peut insérer dans la table de hachage le opcode `%s': %s" -#: config/tc-alpha.c:871 +#: config/tc-alpha.c:824 #, c-format msgid "internal error: can't hash macro `%s': %s" msgstr "erreur interne: ne peut insérer dans la table de hachage la macro `%s': %s" -#: config/tc-alpha.c:954 config/tc-i960.c:2700 +#: config/tc-alpha.c:906 config/tc-i960.c:2701 msgid "syntax error" msgstr "erreur de syntaxe" -#: config/tc-alpha.c:1028 config/tc-arm.c:6629 config/tc-h8300.c:1373 -#: config/tc-h8500.c:1197 config/tc-hppa.c:3939 config/tc-i860.c:931 -#: config/tc-m68hc11.c:478 config/tc-m68k.c:4179 config/tc-m88k.c:1105 -#: config/tc-ns32k.c:1663 config/tc-sparc.c:2830 config/tc-z8k.c:1324 +#: config/tc-alpha.c:980 config/tc-h8300.c:1413 config/tc-h8500.c:1187 +#: config/tc-hppa.c:4017 config/tc-i860.c:931 config/tc-m68hc11.c:500 +#: config/tc-m68k.c:4201 config/tc-m88k.c:1011 config/tc-ns32k.c:1663 +#: config/tc-sparc.c:2831 config/tc-z8k.c:1321 msgid "Bad call to MD_ATOF()" msgstr "Appel erroné de MD_ATOF()" -#: config/tc-alpha.c:1078 +#: config/tc-alpha.c:1030 +#, c-format msgid "Unknown CPU identifier `%s'" msgstr "identificateur de CPU inconnu `%s'" -#: config/tc-alpha.c:1122 +#: config/tc-alpha.c:1074 msgid "" "Alpha options:\n" "-32addr\t\t\ttreat addresses as 32-bit values\n" @@ -1088,9 +1154,9 @@ msgstr "" "-mev4 | -mev45 | -mev5 | -mev56 | -mpca56 | -mev6 | -mall\n" " spécifier le type d'architecture Alpha\n" "-m21064 | -m21066 | -m21164 | -m21164a | -m21164pc | -m21264\n" -" inclure les code-op PAL des variantes d'architecture\n" +" inclure les opcode PAL des variantes d'architecture\n" -#: config/tc-alpha.c:1132 +#: config/tc-alpha.c:1084 msgid "" "VMS options:\n" "-+\t\t\thash encode (don't truncate) names longer than 64 characters\n" @@ -1099,946 +1165,1051 @@ msgstr "" "-+ encoder par hachage (sans tronquer) les noms plus longs que 64 caractères\n" "-H afficher les nouveaux symboles après une troncation du hachage\n" -#: config/tc-alpha.c:1305 +#: config/tc-alpha.c:1242 #, c-format msgid "unhandled relocation type %s" msgstr "type de relocalisation non traité %s" -#: config/tc-alpha.c:1318 +#: config/tc-alpha.c:1255 msgid "non-absolute expression in constant field" msgstr "expression non absolue dams le champ de constante" -#: config/tc-alpha.c:1332 +#: config/tc-alpha.c:1269 #, c-format msgid "type %d reloc done?\n" msgstr "type %d relocalisation complété?\n" -#: config/tc-alpha.c:1383 config/tc-alpha.c:1390 config/tc-mips.c:7356 +#: config/tc-alpha.c:1317 config/tc-alpha.c:1324 config/tc-mips.c:7965 msgid "Used $at without \".set noat\"" msgstr "Utilisation de $at sans \".set noat\"" -#: config/tc-alpha.c:1572 +#: config/tc-alpha.c:1481 #, c-format msgid "cannot represent `%s' relocation in object file" msgstr "ne peut représenter la relocalisation `%s' dans le fichier objet" -#: config/tc-alpha.c:1579 +#: config/tc-alpha.c:1488 #, c-format msgid "internal error? cannot generate `%s' relocation" msgstr "erreur interne? ne peut générer la relocalisation `%s'" -#: config/tc-alpha.c:1633 +#: config/tc-alpha.c:1543 #, c-format msgid "frame reg expected, using $%d." msgstr "registre de trame attendu, utilise $%d" -#: config/tc-alpha.c:1758 +#: config/tc-alpha.c:1646 +#, c-format +msgid "No !literal!%ld was found" +msgstr "Aucun !literal!%ld n'a été retrouvé" + +#: config/tc-alpha.c:1654 +#, c-format +msgid "No ldah !gpdisp!%ld was found" +msgstr "Aucun ldah !gpdisp!%ld n'a été retrouvé" + +#: config/tc-alpha.c:1705 #, c-format -msgid "No !literal!%d was found" -msgstr "Aucun !literal!%d n'a été retrouvé" +msgid "No lda !gpdisp!%ld was found" +msgstr "Aucun lda !gpdisp!%ld n'a été retrouvé" #. only support one relocation op per insn -#: config/tc-alpha.c:1946 +#: config/tc-alpha.c:1841 msgid "More than one relocation op per insn" msgstr "Plus d'un opérateur de relocalisation par insn" -#: config/tc-alpha.c:1963 +#: config/tc-alpha.c:1857 msgid "No relocation operand" msgstr "Pas d'opérande de relocalisation" -#: config/tc-alpha.c:1969 +#: config/tc-alpha.c:1867 #, c-format -msgid "No !sequence-number after !%s" -msgstr "Pas de !sequence-number après !%s" - -#: config/tc-alpha.c:1982 msgid "Unknown relocation operand: !%s" msgstr "Opérande de relocalisation inconnue: !%s" -#: config/tc-alpha.c:1995 +#: config/tc-alpha.c:1877 +#, c-format +msgid "no sequence number after !%s" +msgstr "pas de numéro de séquence après !%s" + +#: config/tc-alpha.c:1887 +#, c-format +msgid "!%s does not use a sequence number" +msgstr "!%s n'utilise pas un numéro de séquence" + +#: config/tc-alpha.c:1897 #, c-format msgid "Bad sequence number: !%s!%s" msgstr "Numéro de séquence erroné: !%s!%s" -#: config/tc-alpha.c:2346 +#: config/tc-alpha.c:2224 #, c-format msgid "operand out of range (%s not between %d and %d)" msgstr "opérande hors gamme (%s n'est pas entre %d et %d)" -#: config/tc-alpha.c:2445 config/tc-d10v.c:621 config/tc-d30v.c:640 -#: config/tc-mn10200.c:1009 config/tc-mn10300.c:1406 config/tc-ppc.c:1940 -#: config/tc-ppc.c:2048 config/tc-ppc.c:2060 config/tc-v850.c:1856 -#: config/tc-v850.c:1879 config/tc-v850.c:2099 +#: config/tc-alpha.c:2338 config/tc-alpha.c:2362 config/tc-d10v.c:629 +#: config/tc-d30v.c:640 config/tc-mn10200.c:995 config/tc-mn10300.c:1382 +#: config/tc-ppc.c:2072 config/tc-ppc.c:2256 config/tc-ppc.c:2268 +#: config/tc-s390.c:1064 config/tc-s390.c:1121 config/tc-v850.c:1853 +#: config/tc-v850.c:1876 config/tc-v850.c:2096 msgid "too many fixups" msgstr "trop de correctifs" -#: config/tc-alpha.c:2660 config/tc-alpha.c:2729 +#: config/tc-alpha.c:2374 +msgid "invalid relocation for instruction" +msgstr "relocalisation invalide pour l'instruction" + +#: config/tc-alpha.c:2385 +msgid "invalid relocation for field" +msgstr "relocalisation invalide pour le champ" + +#: config/tc-alpha.c:2484 +#, c-format +msgid "too many ldah insns for !gpdisp!%ld" +msgstr "trop de ldah insns pour !gpdisp!%ld" + +#: config/tc-alpha.c:2486 config/tc-alpha.c:2498 +#, c-format +msgid "both insns for !gpdisp!%ld must be in the same section" +msgstr "les deux insns pour !gpdisp!%ld doivent être dans la même section" + +#: config/tc-alpha.c:2496 +#, c-format +msgid "too many lda insns for !gpdisp!%ld" +msgstr "trop de lda insns pour !gpdisp!%ld" + +#: config/tc-alpha.c:2577 config/tc-alpha.c:2647 #, c-format msgid "inappropriate arguments for opcode `%s'" -msgstr "arguments inappropriés pour le code-op `%s'" +msgstr "arguments inappropriés pour le opcode `%s'" -#: config/tc-alpha.c:2662 config/tc-alpha.c:2731 +#: config/tc-alpha.c:2579 config/tc-alpha.c:2649 +#, c-format msgid "opcode `%s' not supported for target %s" -msgstr "code-op `%s' n'est pas supporté pour la cible %s" +msgstr "opcode `%s' n'est pas supporté pour la cible %s" -#: config/tc-alpha.c:2666 config/tc-alpha.c:2734 config/tc-avr.c:1090 +#: config/tc-alpha.c:2583 config/tc-alpha.c:2653 config/tc-avr.c:1097 +#, c-format msgid "unknown opcode `%s'" -msgstr "code-op inconnu `%s'" +msgstr "opcode inconnu `%s'" -#: config/tc-alpha.c:2706 config/tc-alpha.c:2773 config/tc-alpha.c:3284 -#: config/tc-alpha.c:3344 config/tc-alpha.c:3396 config/tc-alpha.c:3471 -#: config/tc-alpha.c:3556 config/tc-alpha.c:3682 config/tc-alpha.c:3859 -#: config/tc-alpha.c:3916 config/tc-alpha.c:4026 config/tc-alpha.c:4133 -#: config/tc-alpha.c:4210 -msgid "Cannot use !%s!%d with %s" -msgstr "Ne peut utiliser !%s!%d avec %s" - -#: config/tc-alpha.c:2794 +#: config/tc-alpha.c:2701 msgid "can not resolve expression" msgstr "ne peut résoudre l'expression" -#: config/tc-alpha.c:2936 config/tc-alpha.c:3128 +#: config/tc-alpha.c:2845 config/tc-alpha.c:3024 msgid "overflow in literal (.lita) table" msgstr "débordement dans la table de litérals (.lita)" -#: config/tc-alpha.c:2943 config/tc-alpha.c:2966 config/tc-alpha.c:3141 -#: config/tc-alpha.c:3485 config/tc-alpha.c:3563 config/tc-alpha.c:3611 -#: config/tc-alpha.c:3711 config/tc-alpha.c:3936 config/tc-alpha.c:4048 +#: config/tc-alpha.c:2852 config/tc-alpha.c:2875 config/tc-alpha.c:3037 +#: config/tc-alpha.c:3252 config/tc-alpha.c:3297 config/tc-alpha.c:3371 +#: config/tc-alpha.c:3463 config/tc-alpha.c:3712 config/tc-alpha.c:3813 msgid "macro requires $at register while noat in effect" msgstr "macro requiert le registre $at alors qu'il n'est pas effectif" -#: config/tc-alpha.c:2945 config/tc-alpha.c:2968 config/tc-alpha.c:3143 +#: config/tc-alpha.c:2854 config/tc-alpha.c:2877 config/tc-alpha.c:3039 msgid "macro requires $at while $at in use" msgstr "macro requiert $at alors que $at est utilisé" -#: config/tc-alpha.c:3090 expr.c:83 read.c:3164 +#: config/tc-alpha.c:2985 msgid "bignum invalid; zero assumed" msgstr "grand nombre invalide; zéro assumé" -#: config/tc-alpha.c:3092 expr.c:85 read.c:3166 read.c:3499 read.c:4397 +#: config/tc-alpha.c:2987 msgid "floating point number invalid; zero assumed" msgstr "nombre flottant invalide; zéro assumé" -#: config/tc-alpha.c:3097 +#: config/tc-alpha.c:2992 msgid "can't handle expression" msgstr "ne peut traiter l'expression" -#: config/tc-alpha.c:3134 +#: config/tc-alpha.c:3030 msgid "overflow in literal (.lit8) table" msgstr "débordement dans la table de litérals (.lit8)" -#: config/tc-alpha.c:3306 -msgid "bad instruction format for lda !%s!%ld" -msgstr "format d'instruction erroné pour lda !%s!%ld" - -#: config/tc-alpha.c:4306 config/tc-ppc.c:1467 config/tc-ppc.c:3689 -#: read.c:1369 +#: config/tc-alpha.c:4042 config/tc-ppc.c:1579 config/tc-ppc.c:3974 #, c-format msgid ".COMMon length (%ld.) <0! Ignored." msgstr "longueur de .COMMon (%ld.) <0! ignoré." -#: config/tc-alpha.c:4344 config/tc-alpha.c:4353 config/tc-ppc.c:3726 -#: read.c:1393 +#: config/tc-alpha.c:4071 config/tc-sparc.c:3700 config/tc-v850.c:283 +msgid "Ignoring attempt to re-define symbol" +msgstr "Tentative ignorée de re-définition de symbole" + +#: config/tc-alpha.c:4080 config/tc-alpha.c:4089 config/tc-ppc.c:4011 #, c-format msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld." msgstr "Longueur de .comm \"%s\" est déjà %ld. N'a pas été changé pour %ld." -#: config/tc-alpha.c:4455 ecoff.c:3087 +#: config/tc-alpha.c:4191 ecoff.c:3084 msgid ".ent directive has no name" msgstr "La directive .ent n'a pas de nom" -#: config/tc-alpha.c:4463 +#: config/tc-alpha.c:4199 msgid "nested .ent directives" msgstr "directive .ent imbriquées" -#: config/tc-alpha.c:4499 ecoff.c:3035 +#: config/tc-alpha.c:4235 ecoff.c:3034 msgid ".end directive has no name" msgstr "Directive .end n'a pas de nom" -#: config/tc-alpha.c:4508 +#: config/tc-alpha.c:4244 msgid ".end directive names different symbol than .ent" msgstr "Directive .end a un nom différent de symbole que .ent" -#: config/tc-alpha.c:4585 +#: config/tc-alpha.c:4321 +#, c-format msgid "Invalid argument %d to .prologue." msgstr "argument invalide %d pour .prologue" -#: config/tc-alpha.c:4677 +#: config/tc-alpha.c:4413 msgid "ECOFF debugging is disabled." msgstr "Mise au point de ECOFF est désactivée." -#: config/tc-alpha.c:4698 +#: config/tc-alpha.c:4434 msgid "Unknown section directive" msgstr "Directive de section inconnue" -#: config/tc-alpha.c:4734 +#: config/tc-alpha.c:4470 msgid ".ent directive has no symbol" msgstr "Directive .ent n'a pas de symbole" -#: config/tc-alpha.c:4761 +#: config/tc-alpha.c:4497 msgid "Bad .frame directive 1./2. param" msgstr "Directive .frame erronée paramètre 1./2." -#: config/tc-alpha.c:4773 +#: config/tc-alpha.c:4509 msgid "Bad .frame directive 3./4. param" msgstr "Directive .frame erronée paramètre 3./4." -#: config/tc-alpha.c:4798 +#: config/tc-alpha.c:4534 msgid ".pdesc directive not in link (.link) section" msgstr "Directive .pdesc n'est pas dans la section .link" -#: config/tc-alpha.c:4806 +#: config/tc-alpha.c:4542 msgid ".pdesc has no matching .ent" msgstr ".pdesc n'est pas pairé avec .ent" -#: config/tc-alpha.c:4817 +#: config/tc-alpha.c:4553 msgid ".pdesc directive has no entry symbol" msgstr "Directive .pdesc n'a pas de symbole d'entrée" -#: config/tc-alpha.c:4830 +#: config/tc-alpha.c:4566 msgid "No comma after .pdesc " msgstr "Pas de virgule après .pdesc " -#: config/tc-alpha.c:4853 +#: config/tc-alpha.c:4589 msgid "unknown procedure kind" msgstr "type de procédure inconnue" -#: config/tc-alpha.c:4947 +#: config/tc-alpha.c:4682 msgid ".name directive not in link (.link) section" msgstr "Directive .name n'est pas dans la section .link" -#: config/tc-alpha.c:4955 +#: config/tc-alpha.c:4690 msgid ".name directive has no symbol" msgstr "Directive .name n'a pas de symbole" -#: config/tc-alpha.c:4989 +#: config/tc-alpha.c:4724 msgid "No symbol after .linkage" msgstr "Pas de symbole après .linkage" -#: config/tc-alpha.c:5017 +#: config/tc-alpha.c:4752 msgid "No symbol after .code_address" msgstr "Pas de symbole après .code_address" -#: config/tc-alpha.c:5050 ecoff.c:3253 +#: config/tc-alpha.c:4785 msgid "Bad .mask directive" msgstr "Directive .mask erronée" -#: config/tc-alpha.c:5071 ecoff.c:3183 +#: config/tc-alpha.c:4806 msgid "Bad .fmask directive" msgstr "Directive .fmask erronée" -#: config/tc-alpha.c:5241 config/tc-arm.c:1593 read.c:2150 read.c:2737 -#: stabs.c:464 +#: config/tc-alpha.c:4976 #, c-format msgid "Expected comma after name \"%s\"" msgstr "Virgule attendue après le nom \"%s\"" #. *symbol_get_obj (symbolP) = (signed char) temp; -#: config/tc-alpha.c:5252 +#: config/tc-alpha.c:4987 #, c-format msgid "unhandled: .proc %s,%d" msgstr "non traité: .proc %s,%d" -#: config/tc-alpha.c:5287 +#: config/tc-alpha.c:5022 #, c-format msgid "Tried to .set unrecognized mode `%s'" msgstr "Essayé la directive .set pour un mode non reconnu `%s'" #. not fatal, but it might not work in the end -#: config/tc-alpha.c:5304 +#: config/tc-alpha.c:5039 msgid "File overrides no-base-register option." msgstr "Le fichier écrase l'option no-base-register" -#: config/tc-alpha.c:5321 +#: config/tc-alpha.c:5056 #, c-format msgid "Bad base register, using $%d." msgstr "Registre de base erroné, utilise $%d." -#: config/tc-alpha.c:5343 +#: config/tc-alpha.c:5078 #, c-format msgid "Alignment too large: %d. assumed" msgstr "Alignement trop grand: %d. assumé" -#: config/tc-alpha.c:5347 config/tc-d30v.c:2219 +#: config/tc-alpha.c:5082 config/tc-d30v.c:2214 msgid "Alignment negative: 0 assumed" msgstr "Alignement négatif: 0 assumé" -#: config/tc-alpha.c:5662 +#: config/tc-alpha.c:5394 #, c-format msgid "Chose GP value of %lx\n" msgstr "Choisir une valeur GP de %lx\n" -#: config/tc-arc.c:1618 config/tc-arm.c:7532 +#: config/tc-alpha.c:5410 config/tc-ia64.c:932 +msgid "Bad .section directive: want a,s,w,x,M,S in string" +msgstr "Directive .section erronée: nécessite a,s,w,x,M,S dans la chaîne" + +#: config/tc-arc.c:1616 config/tc-arm.c:10246 msgid "md_estimate_size_before_relax\n" msgstr "md_estimate_size_before_relax\n" -#: config/tc-arc.c:1630 +#: config/tc-arc.c:1628 msgid "md_convert_frag\n" msgstr "md_convert_frag\n" -#: config/tc-arm.c:1156 -msgid "Bad arguments to instruction" -msgstr "Arguments erronés pour l'instruction" +#: config/tc-arm.c:664 +msgid "ARM register expected" +msgstr "registre ARM attendu" + +#: config/tc-arm.c:665 config/tc-arm.c:2814 +msgid "bad or missing co-processor number" +msgstr "numéro de co-processeur erroné ou manquant" + +#. In the few cases where we might be able to accept something else +#. this error can be overridden. +#: config/tc-arm.c:666 config/tc-arm.c:2869 +msgid "co-processor register expected" +msgstr "registre de coprocesseur attendu" + +#: config/tc-arm.c:667 +msgid "FPA register expected" +msgstr "registre FPA attendu" + +#: config/tc-arm.c:668 +msgid "VFP single precision register expected" +msgstr "registre VFP en simple précision attendu" + +#: config/tc-arm.c:669 +msgid "VFP double precision register expected" +msgstr "registre VFP en double précision attendu" + +#: config/tc-arm.c:670 +msgid "Maverick MVF register expected" +msgstr "registre Maverick MVF attendu" + +#: config/tc-arm.c:671 +msgid "Maverick MVD register expected" +msgstr "registre Maverick MVD attendu" + +#: config/tc-arm.c:672 config/tc-arm.c:673 +msgid "Maverick MVFX register expected" +msgstr "registre Maverick MVFX attendu" + +#: config/tc-arm.c:674 +msgid "Maverick MVAX register expected" +msgstr "registre Maverick MVAX attendu" + +#: config/tc-arm.c:675 +msgid "Maverick DSPSC register expected" +msgstr "registre Maverick DSPSC attendu" + +#: config/tc-arm.c:2013 +msgid "bad arguments to instruction" +msgstr "arguments erronés pour l'instruction" -#: config/tc-arm.c:1157 +#: config/tc-arm.c:2014 msgid "r15 not allowed here" msgstr "r15 n'est pas permis ici" -#: config/tc-arm.c:1158 -msgid "Instruction should not have flags" -msgstr "L'instruction ne devrait pas avoir de fanions" - -#: config/tc-arm.c:1159 -msgid "Instruction is not conditional" -msgstr "L'instruction n'est pas conditionnelle" +#: config/tc-arm.c:2015 +msgid "instruction is not conditional" +msgstr "l'instruction n'est pas conditionnelle" -#: config/tc-arm.c:1160 +#: config/tc-arm.c:2016 msgid "acc0 expected" msgstr "acc0 attendu" -#: config/tc-arm.c:1289 -msgid "Literal Pool Overflow" -msgstr "Débordement du bassin de mots" - -#: config/tc-arm.c:1431 -msgid "Invalid syntax for .req directive." -msgstr "Syntaxe invalide pour le directive .req" +#: config/tc-arm.c:2155 +msgid "literal pool overflow" +msgstr "débordement du bassin de mots" -#: config/tc-arm.c:1506 config/tc-mips.c:9916 read.c:2035 +#: config/tc-arm.c:2297 +msgid "invalid syntax for .req directive" +msgstr "syntaxe invalide pour le directive .req" + +#: config/tc-arm.c:2372 #, c-format -msgid "Alignment too large: %d. assumed." -msgstr "Alignement trop grand: %d. assumé." +msgid "alignment too large: %d assumed" +msgstr "alignement trop grand: %d assumé" -#: config/tc-arm.c:1509 read.c:2040 -msgid "Alignment negative. 0 assumed." -msgstr "Alignement négatif: 0 assumé" +#: config/tc-arm.c:2375 +msgid "alignment negative. 0 assumed." +msgstr "alignement négatif: 0 assumé" + +#: config/tc-arm.c:2459 +#, c-format +msgid "expected comma after name \"%s\"" +msgstr "virgule attendue après le nom \"%s\"" -#: config/tc-arm.c:1643 config/tc-m32r.c:417 read.c:2795 read.c:4857 +#: config/tc-arm.c:2509 config/tc-m32r.c:418 #, c-format msgid "symbol `%s' already defined" msgstr "symbole `%s' est déjà défini" -#: config/tc-arm.c:1714 +#: config/tc-arm.c:2580 msgid "selected processor does not support THUMB opcodes" -msgstr "le processeur choisi ne supporte pas les code-op THUMB" +msgstr "le processeur choisi ne supporte pas les opcode THUMB" -#: config/tc-arm.c:1727 +#: config/tc-arm.c:2593 msgid "selected processor does not support ARM opcodes" -msgstr "le processeur choisi ne supporte pas les code-op ARM" +msgstr "le processeur choisi ne supporte pas les opcode ARM" -#: config/tc-arm.c:1739 +#: config/tc-arm.c:2605 #, c-format msgid "invalid instruction size selected (%d)" msgstr "taille d'instruction invalide (%d)" -#: config/tc-arm.c:1774 +#: config/tc-arm.c:2640 #, c-format msgid "invalid operand to .code directive (%d) (expecting 16 or 32)" msgstr "opérande invalide pour la directive .code (%d) (attendu 16 ou 32)" -#: config/tc-arm.c:1785 -msgid "Garbage following instruction" -msgstr "Instruction suivie de rebuts" +#: config/tc-arm.c:2651 +msgid "garbage following instruction" +msgstr "instruction suivie de rebuts" #. In the few cases where we might be able to accept something else #. this error can be overridden. -#: config/tc-arm.c:1835 +#: config/tc-arm.c:2701 #, c-format -msgid "Register expected, not '%.100s'" -msgstr "Registre attendu, pas '%.100s'" +msgid "register expected, not '%.100s'" +msgstr "registre attendu, pas '%.100s'" #. In the few cases where we might be able to accept #. something else this error can be overridden. -#: config/tc-arm.c:1907 +#: config/tc-arm.c:2773 msgid "flag for {c}psr instruction expected" msgstr "fanion pour instruction {c}psr attendu" -#: config/tc-arm.c:1937 -msgid "Illegal co-processor number" -msgstr "Numéro de co-processeur illégal" - -#: config/tc-arm.c:1944 -msgid "Bad or missing co-processor number" -msgstr "Numéro de co-processeur erroné ou manquant" +#: config/tc-arm.c:2807 +msgid "illegal co-processor number" +msgstr "numéro de co-processeur illégal" -#: config/tc-arm.c:1968 config/tc-arm.c:3054 config/tc-arm.c:3246 +#: config/tc-arm.c:2839 config/tc-arm.c:3877 config/tc-arm.c:4059 msgid "bad or missing expression" msgstr "expression erronée ou manquante" -#: config/tc-arm.c:1974 +#: config/tc-arm.c:2845 msgid "immediate co-processor expression too large" msgstr "expression 'immediate' pour co-processeur est trop grande" #. In the few cases where we might be able to accept something else #. this error can be overridden. -#: config/tc-arm.c:1999 -msgid "Co-processor register expected" -msgstr "Registre de coprocesseur attendu" +#: config/tc-arm.c:2892 +msgid "floating point register expected" +msgstr "registre en virgule flottante attendu" -#. In the few cases where we might be able to accept something else -#. this error can be overridden. -#: config/tc-arm.c:2023 -msgid "Floating point register expected" -msgstr "Registre en virgule flottante attendu" - -#: config/tc-arm.c:2040 +#: config/tc-arm.c:2909 msgid "immediate expression expected" msgstr "expression immédiate attendue" -#: config/tc-arm.c:2055 +#: config/tc-arm.c:2924 msgid "co-processor address must be word aligned" msgstr "adresse du coprocesseur doit être alignée sur un mot" -#: config/tc-arm.c:2061 +#: config/tc-arm.c:2930 msgid "offset too large" msgstr "décalage d'adresse trop grand" -#: config/tc-arm.c:2109 +#: config/tc-arm.c:2979 msgid "pc may not be used in post-increment" msgstr "le PC ne peut être utilisé dans une instruction de post-incrémentation" -#: config/tc-arm.c:2125 config/tc-arm.c:2578 config/tc-arm.c:3438 -#: config/tc-arm.c:4358 +#: config/tc-arm.c:2995 config/tc-arm.c:3440 config/tc-arm.c:4228 +#: config/tc-arm.c:5095 config/tc-arm.c:5429 msgid "pre-indexed expression expected" msgstr "instruction pre-indexée attendue" -#: config/tc-arm.c:2138 config/tc-arm.c:2591 config/tc-arm.c:3449 -#: config/tc-arm.c:4370 config/tc-arm.c:4716 +#: config/tc-arm.c:3008 config/tc-arm.c:3453 config/tc-arm.c:4239 +#: config/tc-arm.c:5107 config/tc-arm.c:5441 config/tc-arm.c:5790 +#: config/tc-arm.c:8452 config/tc-arm.c:8467 msgid "missing ]" msgstr "] manquant" -#: config/tc-arm.c:2148 +#: config/tc-arm.c:3018 msgid "pc may not be used with write-back" msgstr "PC le peut être utilisé en mode ré-écriture" -#: config/tc-arm.c:2203 +#: config/tc-arm.c:3070 msgid "comma expected after register name" msgstr "virgule attendue après le nom du registre" -#: config/tc-arm.c:2222 -msgid "{C|S}PSR expected" -msgstr "{C|S}PSR attendu" +#: config/tc-arm.c:3089 +msgid "CPSR or SPSR expected" +msgstr "CPSR ou SPSR attendu" -#: config/tc-arm.c:2250 +#: config/tc-arm.c:3115 msgid "comma missing after psr flags" msgstr "virgule manquante après les fanions psr" -#: config/tc-arm.c:2267 config/tc-arm.c:2277 +#: config/tc-arm.c:3131 config/tc-arm.c:3141 msgid "only a register or immediate value can follow a psr flag" msgstr "seul un registre ou une valeur immédiate peut suivre un fanion PSR" -#: config/tc-arm.c:2284 +#: config/tc-arm.c:3152 msgid "immediate value cannot be used to set this field" msgstr "une valeur immédiate ne peut être utilisée pour ce champ" -#: config/tc-arm.c:2301 config/tc-arm.c:3673 config/tc-arm.c:3939 -#: config/tc-arm.c:3959 -msgid "Invalid constant" +#: config/tc-arm.c:3170 config/tc-arm.c:4455 config/tc-arm.c:4735 +#: config/tc-arm.c:4755 config/tc-i960.c:1924 +msgid "invalid constant" msgstr "constante invalide" -#: config/tc-arm.c:2351 +#: config/tc-arm.c:3218 msgid "rdhi, rdlo and rm must all be different" msgstr "rdhi, rdlo et rm doivent tous être différents" -#: config/tc-arm.c:2407 +#: config/tc-arm.c:3272 msgid "rd and rm should be different in mul" msgstr "rd et rm doivent être différents dans mul" -#: config/tc-arm.c:2463 +#: config/tc-arm.c:3326 msgid "rd and rm should be different in mla" msgstr "rd et rm doivent être différents dans mla" -#: config/tc-arm.c:2512 +#: config/tc-arm.c:3374 #, c-format msgid "acc0 expected, not '%.100s'" msgstr "acc0 attendu, et non pas '%.100s'" -#: config/tc-arm.c:2695 +#: config/tc-arm.c:3552 msgid "rdhi and rdlo must be different" msgstr "rdhi et rdlo doivent être différents" -#: config/tc-arm.c:2815 -msgid "Warning: Instruction unpredictable when using r15" +#: config/tc-arm.c:3660 +msgid "Warning: instruction unpredictable when using r15" msgstr "AVERTISSEMENT: instruction imprévisible lorsque r15 est utilisé" -#: config/tc-arm.c:3063 config/tc-arm.c:3255 config/tc-arm.c:5503 -#: config/tc-arm.c:5536 config/tc-arm.c:5546 +#: config/tc-arm.c:3886 config/tc-arm.c:4068 config/tc-arm.c:7395 +#: config/tc-arm.c:7428 config/tc-arm.c:7438 msgid "immediate value out of range" msgstr "valeur immediate est hors gamme" -#: config/tc-arm.c:3403 +#: config/tc-arm.c:4191 msgid "'[' expected after PLD mnemonic" msgstr "'[' attendu après la mnémonique PLD" -#: config/tc-arm.c:3428 config/tc-arm.c:3458 +#: config/tc-arm.c:4213 +msgid "post-indexed expression used in preload instruction" +msgstr "expression post-indexée dans une instruction préchargée" + +#: config/tc-arm.c:4218 config/tc-arm.c:4248 msgid "writeback used in preload instruction" msgstr "more ré-écriture utilisé dans une instruction de préchargement" -#. Deny all knowledge. -#: config/tc-arm.c:3506 -#, c-format -msgid "bad instruction '%.100s'" -msgstr "instruction erronée '%.100s'" - -#: config/tc-arm.c:3530 -msgid "Destination register must be even" -msgstr "Registre de destination doit être pair" +#: config/tc-arm.c:4290 +msgid "destination register must be even" +msgstr "registre de destination doit être pair" -#: config/tc-arm.c:3536 -msgid "r12 or r14 not allowed here" -msgstr "r12 ou r14 ne sont pas permis ici" +#: config/tc-arm.c:4296 +msgid "r14 not allowed here" +msgstr "r14 n'est pas permis ici" -#: config/tc-arm.c:3544 +#: config/tc-arm.c:4303 msgid "pre/post-indexing used when modified address register is destination" msgstr "pré/post-indexation utilisée alors que le registre d'adresse est modifié pour la destination" -#: config/tc-arm.c:3657 +#: config/tc-arm.c:4313 +msgid "ldrd destination registers must not overlap index register" +msgstr "registres de destination ldrd ne doit pas chevaucher le registre d'index" + +#: config/tc-arm.c:4439 msgid "bad_segment" msgstr "bad_segment" -#: config/tc-arm.c:3703 config/tc-arm.c:3714 -msgid "Shift expression expected" -msgstr "Expression de décalage attendu" +#: config/tc-arm.c:4476 expr.c:1314 read.c:2198 +msgid "bad expression" +msgstr "expression erronée" + +#: config/tc-arm.c:4499 config/tc-arm.c:4510 +msgid "shift expression expected" +msgstr "expression de décalage attendu" -#: config/tc-arm.c:3738 +#: config/tc-arm.c:4534 msgid "shift requires register or #expression" msgstr "décalage requiert un registre ou #expression" -#: config/tc-arm.c:3739 +#: config/tc-arm.c:4535 msgid "shift requires #expression" msgstr "décalage requiert ou #expression" -#: config/tc-arm.c:3769 -msgid "Shift of 0 ignored." +#: config/tc-arm.c:4565 +msgid "shift of 0 ignored." msgstr "décalage de 0 est ignoré" -#: config/tc-arm.c:3775 -msgid "Invalid immediate shift" -msgstr "Décalage immédiat invalide" - -#: config/tc-arm.c:3930 config/tc-arm.c:4400 -msgid "Constant expression expected" -msgstr "Expression de constante attendu" - -#: config/tc-arm.c:3972 -msgid "Register or shift expression expected" -msgstr "Registre ou expression de décalage attendu" - -#: config/tc-arm.c:4025 -msgid "Invalid floating point immediate expression" -msgstr "Expression invalide d'une valeur immédiate en virgule flottante" - -#: config/tc-arm.c:4029 -msgid "Floating point register or immediate expression expected" -msgstr "Registre en virgule flottante ou expression immédiate attendu" +#: config/tc-arm.c:4571 +msgid "invalid immediate shift" +msgstr "décalage immédiat invalide" -#: config/tc-arm.c:4198 -msgid "address offset too large" -msgstr "décalage d'adresse trop grand" +#: config/tc-arm.c:4726 config/tc-arm.c:5143 config/tc-arm.c:5478 +#: config/tc-arm.c:6087 config/tc-v850.c:1956 config/tc-v850.c:1977 +msgid "constant expression expected" +msgstr "expression de constante attendue" -#: config/tc-arm.c:4275 -msgid "Processor does not support halfwords or signed bytes" -msgstr "Le processeur ne supporte pas les demi-mots ou les octets signés" +#: config/tc-arm.c:4768 +msgid "register or shift expression expected" +msgstr "registre ou expression de décalage attendu" + +#: config/tc-arm.c:4821 +msgid "invalid floating point immediate expression" +msgstr "expression invalide d'une valeur immédiate en virgule flottante" + +#: config/tc-arm.c:4825 +msgid "floating point register or immediate expression expected" +msgstr "registre en virgule flottante ou expression immédiate attendu" -#: config/tc-arm.c:4296 -msgid "Address expected" -msgstr "Adresse attendue" +#: config/tc-arm.c:4979 config/tc-arm.c:5309 +msgid "address offset too large" +msgstr "décalage d'adresse trop grand" -#: config/tc-arm.c:4326 config/tc-arm.c:4341 config/tc-arm.c:4379 +#: config/tc-arm.c:5037 config/tc-arm.c:5227 config/tc-arm.c:5369 +msgid "address expected" +msgstr "adresse attendue" + +#: config/tc-arm.c:5067 config/tc-arm.c:5079 config/tc-arm.c:5116 +#: config/tc-arm.c:5245 config/tc-arm.c:5399 config/tc-arm.c:5413 +#: config/tc-arm.c:5450 #, c-format msgid "%s register same as write-back base" msgstr "registre %s identique à la base de ré-écriture arrière" -#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381 +#: config/tc-arm.c:5069 config/tc-arm.c:5081 config/tc-arm.c:5118 +#: config/tc-arm.c:5247 config/tc-arm.c:5401 config/tc-arm.c:5415 +#: config/tc-arm.c:5452 msgid "destination" msgstr "destination" -#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381 +#: config/tc-arm.c:5069 config/tc-arm.c:5081 config/tc-arm.c:5118 +#: config/tc-arm.c:5247 config/tc-arm.c:5401 config/tc-arm.c:5415 +#: config/tc-arm.c:5452 msgid "source" msgstr "source" -#: config/tc-arm.c:4420 +#: config/tc-arm.c:5128 config/tc-arm.c:5462 config/tc-arm.c:7699 +msgid "invalid pseudo operation" +msgstr "pseudo opération invalide" + +#: config/tc-arm.c:5180 config/tc-arm.c:5513 msgid "literal pool insertion failed" msgstr "insertion dans le bassin de mots à échoué" -#: config/tc-arm.c:4459 -msgid "Pre-increment instruction with translate" -msgstr "Instruction de pré-incrémentation avec traduction" +#: config/tc-arm.c:5275 config/tc-arm.c:5281 +msgid "post-indexed expression expected" +msgstr "instruction post-indexée attendue" -#: config/tc-arm.c:4500 -msgid "Bad range in register list" -msgstr "Hors gamme dans la liste de registres" +#: config/tc-arm.c:5579 +msgid "bad range in register list" +msgstr "hors gamme dans la liste de registres" -#: config/tc-arm.c:4508 config/tc-arm.c:4517 config/tc-arm.c:4559 +#: config/tc-arm.c:5587 config/tc-arm.c:5596 config/tc-arm.c:5638 #, c-format -msgid "Warning: Duplicated register (r%d) in register list" +msgid "Warning: duplicated register (r%d) in register list" msgstr "AVERTISSEMENT: duplication de registre (r%d) dans la liste des registres" -#: config/tc-arm.c:4520 -msgid "Warning: Register range not in ascending order" -msgstr "AVERTISSEMENT: registres ne sont pas dans un ordre ascendant" +#: config/tc-arm.c:5599 +msgid "Warning: register range not in ascending order" +msgstr "AVERTISSEMENT: gamme de registres n'est pas en ordre ascendant" -#: config/tc-arm.c:4532 -msgid "Missing `}'" +#: config/tc-arm.c:5611 +msgid "missing `}'" msgstr "`}' manquant" -#: config/tc-arm.c:4548 +#: config/tc-arm.c:5627 msgid "invalid register mask" msgstr "masque de registre invalide" -#: config/tc-arm.c:4569 config/tc-avr.c:852 config/tc-cris.c:2733 -#: config/tc-d10v.c:1560 config/tc-d30v.c:1865 config/tc-mips.c:3230 -#: config/tc-mips.c:4162 config/tc-mips.c:4947 config/tc-mips.c:5493 -#: config/tc-ppc.c:4854 config/tc-v850.c:2385 +#: config/tc-arm.c:5648 config/tc-arm.c:8709 config/tc-arm.c:8809 +#: config/tc-avr.c:860 config/tc-cris.c:3006 config/tc-d10v.c:1563 +#: config/tc-d30v.c:1863 config/tc-mips.c:3641 config/tc-mips.c:4630 +#: config/tc-mips.c:5486 config/tc-mips.c:6091 config/tc-ppc.c:5143 +#: config/tc-v850.c:2376 msgid "expression too complex" msgstr "expression trop complexe" -#: config/tc-arm.c:4608 +#: config/tc-arm.c:5686 msgid "r15 not allowed as base register" -msgstr "R15 n'est pas permis comme registre de base" +msgstr "r15 n'est pas permis comme registre de base" -#: config/tc-arm.c:4676 config/tc-arm.c:4690 +#: config/tc-arm.c:5750 config/tc-arm.c:5764 msgid "r15 not allowed in swap" -msgstr "R15 n'est pas permis dans l'espace de commutation (swap)" +msgstr "r15 n'est pas permis dans l'espace de commutation (swap)" -#: config/tc-arm.c:4788 -msgid "Use of r15 in bx in ARM mode is not really useful" -msgstr "Utilisation de R15 dans le bx en mode ARM n'est pas très utile" - -#: config/tc-arm.c:5044 config/tc-v850.c:1959 config/tc-v850.c:1980 -msgid "constant expression expected" -msgstr "expression de constante attendue" +#: config/tc-arm.c:5859 +msgid "use of r15 in bx in ARM mode is not really useful" +msgstr "utilisation de r15 dans le bx en mode ARM n'est pas très utile" -#: config/tc-arm.c:5050 -msgid "Constant value required for number of registers" -msgstr "Valeur de constante requise pour les numéros de registres" +#: config/tc-arm.c:6093 +msgid "constant value required for number of registers" +msgstr "caleur de constante requise pour les numéros de registres" -#: config/tc-arm.c:5058 +#: config/tc-arm.c:6101 msgid "number of registers must be in the range [1:4]" msgstr "Les numéros de registres doivent être dans les bornes [1:4]" -#: config/tc-arm.c:5119 -msgid "R15 not allowed as base register with write-back" -msgstr "R15 n'est pas permis comme registre de base en mode ré-écriture" +#: config/tc-arm.c:6162 +msgid "r15 not allowed as base register with write-back" +msgstr "r15 n'est pas permis comme registre de base en mode ré-écriture" + +#: config/tc-arm.c:6544 +msgid "only two consecutive VFP SP registers allowed here" +msgstr "seuls deux registres consécutifs VFP SP sont permis ici" + +#: config/tc-arm.c:6712 +msgid "VFP system register expected" +msgstr "registre système VFP attendu" + +#: config/tc-arm.c:6850 config/tc-arm.c:6889 config/tc-arm.c:6902 +#: config/tc-arm.c:6963 config/tc-arm.c:7002 config/tc-arm.c:7015 +#: config/tc-mips.c:9060 config/tc-mips.c:9090 +msgid "invalid register list" +msgstr "liste de registres invalide" + +#: config/tc-arm.c:6856 config/tc-arm.c:6969 +msgid "register list not in ascending order" +msgstr "liste de registres n'est pas en ordre ascendant" + +#: config/tc-arm.c:6881 config/tc-arm.c:6994 +msgid "register range not in ascending order" +msgstr "gamme de registres n'est pas en ordre ascendant" + +#: config/tc-arm.c:6919 config/tc-arm.c:7032 +msgid "non-contiguous register range" +msgstr "game de registres non contiguë" + +#: config/tc-arm.c:7062 config/tc-arm.c:7099 +msgid "this addressing mode requires base-register writeback" +msgstr "ce mode d'adressage requiert un registre de base avec écriture" -#: config/tc-arm.c:5367 +#: config/tc-arm.c:7259 msgid "lo register required" msgstr "registre LO requis" -#: config/tc-arm.c:5375 +#: config/tc-arm.c:7267 msgid "hi register required" msgstr "registre HI requis" -#: config/tc-arm.c:5445 +#: config/tc-arm.c:7337 config/tc-arm.c:8541 msgid "dest and source1 must be the same register" msgstr "dest et source1 doivent être le même registre" -#: config/tc-arm.c:5452 +#: config/tc-arm.c:7344 msgid "subtract valid only on lo regs" msgstr "soustraction valide seulement avec des registres LO" -#: config/tc-arm.c:5476 +#: config/tc-arm.c:7368 msgid "invalid Hi register with immediate" msgstr "registre HI invalide avec une immédiat" -#: config/tc-arm.c:5514 +#: config/tc-arm.c:7406 msgid "invalid immediate value for stack adjust" msgstr "valeur immédiate invalide pour l'ajustement de la pile" -#: config/tc-arm.c:5525 +#: config/tc-arm.c:7417 msgid "invalid immediate for address calculation" msgstr "immédiat invalide pour le calcul d'adresse" -#: config/tc-arm.c:5612 +#: config/tc-arm.c:7504 msgid "source1 and dest must be same register" msgstr "source1 et dest doivent être le même registre" -#: config/tc-arm.c:5646 -msgid "Invalid immediate for shift" +#: config/tc-arm.c:7538 +msgid "invalid immediate for shift" msgstr "immédiat invalide pour un décalage" -#: config/tc-arm.c:5725 +#: config/tc-arm.c:7617 msgid "only lo regs allowed with immediate" msgstr "seul les registres LO sont permis avec un immédiat" -#: config/tc-arm.c:5744 +#: config/tc-arm.c:7636 msgid "invalid immediate" msgstr "type immédiat invalide" -#: config/tc-arm.c:5798 +#: config/tc-arm.c:7690 msgid "expected ']'" msgstr "']' attendu" -#: config/tc-arm.c:5865 +#: config/tc-arm.c:7763 msgid "byte or halfword not valid for base register" msgstr "octet ou demi-mot non valide pour un registre de base" -#: config/tc-arm.c:5870 -msgid "R15 based store not allowed" -msgstr "R15 utilisé comme registre de base de stockage n'est pas permis" - -#: config/tc-arm.c:5875 -msgid "Invalid base register for register offset" -msgstr "Registre de base invalide pour un registre de décalage" +#: config/tc-arm.c:7768 +msgid "r15 based store not allowed" +msgstr "r15 utilisé comme registre de base de stockage n'est pas permis" + +#: config/tc-arm.c:7773 +msgid "invalid base register for register offset" +msgstr "registre de base invalide pour un registre de décalage" -#: config/tc-arm.c:5893 +#: config/tc-arm.c:7791 config/tc-arm.c:7826 msgid "invalid offset" msgstr "décalage invalide" -#: config/tc-arm.c:5904 +#: config/tc-arm.c:7802 msgid "invalid base register in load/store" msgstr "registre de base invalide pour un chargement/stockage" -#: config/tc-arm.c:5928 -msgid "Invalid offset" -msgstr "Décalage invalide" +#: config/tc-arm.c:8345 +msgid "expecting immediate, 7bit operand" +msgstr "immédiat attendu, opérande de 7 bits" -#: config/tc-arm.c:6003 -msgid "dest and source1 one must be the same register" -msgstr "dest et source1 doivent être le même registre" +#: config/tc-arm.c:8360 +msgid "immediate out of range" +msgstr "valeur immediate est hors gamme" + +#: config/tc-arm.c:8403 +msgid "offset expected" +msgstr "décalage attendu" -#: config/tc-arm.c:6011 +#: config/tc-arm.c:8412 config/tc-pj.c:528 config/tc-sh.c:3030 +msgid "offset out of range" +msgstr "décalage hors gamme" + +#: config/tc-arm.c:8549 msgid "Rs and Rd must be different in MUL" msgstr "Rs et Rd doivent être différents dans MUL" -#: config/tc-arm.c:6155 -msgid "Inserted missing '!': load/store multiple always writes back base register" -msgstr "Insertion de '!' manquant: chargement/stockage multiple exécute toujours des ré-écritures sur le registre de base" - -#: config/tc-arm.c:6171 config/tc-arm.c:6271 -msgid "Expression too complex" -msgstr "Expression trop complexe" +#: config/tc-arm.c:8693 +msgid "inserted missing '!': load/store multiple always writes back base register" +msgstr "insertion de '!' manquant: chargement/stockage multiple exécute toujours des ré-écritures sur le registre de base" -#: config/tc-arm.c:6177 +#: config/tc-arm.c:8715 msgid "only lo-regs valid in load/store multiple" msgstr "seuls les registres LO sont valides dans de multiples chargement/stockage" -#: config/tc-arm.c:6223 -msgid "Syntax: ldrs[b] Rd, [Rb, Ro]" -msgstr "Syntaxe: ldrs[b] Rd, [Rb, Ro]" +#: config/tc-arm.c:8761 +msgid "syntax: ldrs[b] Rd, [Rb, Ro]" +msgstr "syntaxe: ldrs[b] Rd, [Rb, Ro]" -#: config/tc-arm.c:6287 +#: config/tc-arm.c:8825 msgid "invalid register list to push/pop instruction" msgstr "liste de registres invalide pour les instructions push/pop" -#: config/tc-arm.c:6429 config/tc-cris.c:664 -msgid "Virtual memory exhausted" -msgstr "Mémoire virtuelle épuisée" +#: config/tc-arm.c:8937 config/tc-arm.c:9115 +msgid "virtual memory exhausted" +msgstr "mémoire virtuelle épuisée" + +#: config/tc-arm.c:9018 +#, c-format +msgid "register '%s' does not exist\n" +msgstr "registre '%s' n'existe pas\n" + +#: config/tc-arm.c:9022 +#, c-format +msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'" +msgstr "redéfinition ignorée de l'alias de registre '%s' pour un registre non existant '%s'" + +#: config/tc-arm.c:9031 +#, c-format +msgid "ignoring redefinition of register alias '%s'" +msgstr "a ignoré la redéfinition de l'alias du registre '%s'" + +#: config/tc-arm.c:9037 +msgid "ignoring incomplete .req pseuso op" +msgstr "a ignoré le pseudo opérateur incomplet .req" -#: config/tc-arm.c:6835 +#: config/tc-arm.c:9312 +msgid "bad call to MD_ATOF()" +msgstr "appel erroné de MD_ATOF()" + +#: config/tc-arm.c:9542 #, c-format msgid "invalid constant (%lx) after fixup" msgstr "constante invalide (%lx) après le correctif" -#: config/tc-arm.c:6871 +#: config/tc-arm.c:9578 #, c-format -msgid "Unable to compute ADRL instructions for PC offset of 0x%lx" -msgstr "Incapable de calculer les instructions ADRL pour le décalage PC de 0x%lx" +msgid "unable to compute ADRL instructions for PC offset of 0x%lx" +msgstr "incapable de calculer les instructions ADRL pour le décalage PC de 0x%lx" -#: config/tc-arm.c:6901 +#: config/tc-arm.c:9608 #, c-format msgid "bad immediate value for offset (%ld)" msgstr "valeur immédiate erronée pour le décalage (%ld)" -#: config/tc-arm.c:6923 config/tc-arm.c:6945 +#: config/tc-arm.c:9630 config/tc-arm.c:9652 msgid "invalid literal constant: pool needs to be closer" msgstr "litéral de constante invalide: le bassin doit être plus près" -#: config/tc-arm.c:6925 +#: config/tc-arm.c:9632 #, c-format msgid "bad immediate value for half-word offset (%ld)" msgstr "valeur immédiate erronée pour le décalage d'un demi-mot (%ld)" -#: config/tc-arm.c:6962 +#: config/tc-arm.c:9669 msgid "shift expression is too large" msgstr "l'expression de décalage est trop grande" -#: config/tc-arm.c:6981 config/tc-arm.c:6990 -msgid "Invalid swi expression" -msgstr "expression 'swi' invalide" - -#: config/tc-arm.c:7000 -msgid "Invalid expression in load/store multiple" -msgstr "Expression invalide dans chargement/stockage multiples" - -#: config/tc-arm.c:7053 -msgid "gas can't handle same-section branch dest >= 0x04000000" -msgstr "gas ne peut traiter la destination d'un branchement d'un même section >= 0x04000000" +#: config/tc-arm.c:9688 config/tc-arm.c:9697 +msgid "invalid swi expression" +msgstr "expression swi invalide" + +#: config/tc-arm.c:9707 +msgid "invalid expression in load/store multiple" +msgstr "expression invalide dans chargement/stockage multiples" + +#: config/tc-arm.c:9760 +msgid "GAS can't handle same-section branch dest >= 0x04000000" +msgstr "GAS ne peut traiter la destination d'un branchement d'une même section >= 0x04000000" -#: config/tc-arm.c:7062 +#: config/tc-arm.c:9769 msgid "out of range branch" msgstr "branchement hors gamme" -#: config/tc-arm.c:7095 config/tc-arm.c:7111 config/tc-mips.c:9743 -msgid "Branch out of range" -msgstr "Branchement hors gammme" +#: config/tc-arm.c:9802 config/tc-arm.c:9818 +msgid "branch out of range" +msgstr "branchement hors gammme" -#: config/tc-arm.c:7134 -msgid "Branch with link out of range" -msgstr "Branchement avec un lien hors gamme" +#: config/tc-arm.c:9841 +msgid "branch with link out of range" +msgstr "branchement avec un lien hors gamme" -#: config/tc-arm.c:7201 -msgid "Illegal value for co-processor offset" -msgstr "Valeur illégale pour un décalage de co-processeur" +#: config/tc-arm.c:9917 +msgid "illegal value for co-processor offset" +msgstr "valeur illégale pour un décalage de co-processeur" -#: config/tc-arm.c:7225 +#: config/tc-arm.c:9941 #, c-format -msgid "Invalid offset, target not word aligned (0x%08X)" -msgstr "Décalage invalide, cible n'est pas aligner sur une frontière de mot (0x%08X)" +msgid "invalid offset, target not word aligned (0x%08X)" +msgstr "décalage invalide, cible n'est pas aligner sur une frontière de mot (0x%08X)" -#: config/tc-arm.c:7231 config/tc-arm.c:7240 config/tc-arm.c:7247 -#: config/tc-arm.c:7254 config/tc-arm.c:7261 +#: config/tc-arm.c:9947 config/tc-arm.c:9956 config/tc-arm.c:9963 +#: config/tc-arm.c:9970 config/tc-arm.c:9977 #, c-format -msgid "Invalid offset, value too big (0x%08lX)" -msgstr "Décalage invalide, valeur trop grande (0x%08lX)" +msgid "invalid offset, value too big (0x%08lX)" +msgstr "décalage invalide, valeur trop grande (0x%08lX)" -#: config/tc-arm.c:7300 -msgid "Invalid immediate for stack address calculation" -msgstr "Immédiat invalide pour un calcul d'adresse de pile" +#: config/tc-arm.c:10016 +msgid "invalid immediate for stack address calculation" +msgstr "immédiat invalide pour un calcul d'adresse de pile" -#: config/tc-arm.c:7309 +#: config/tc-arm.c:10025 #, c-format -msgid "Invalid immediate for address calculation (value = 0x%08lX)" -msgstr "Immédait invalide pour le calcul d'adresse (valeur = 0x%08lX)" +msgid "invalid immediate for address calculation (value = 0x%08lX)" +msgstr "immédiat invalide pour le calcul d'adresse (valeur = 0x%08lX)" -#: config/tc-arm.c:7319 -msgid "Invalid 8bit immediate" -msgstr "Immédiat de 8 bits invalide" +#: config/tc-arm.c:10035 +msgid "invalid 8bit immediate" +msgstr "immédiat de 8 bits invalide" -#: config/tc-arm.c:7327 -msgid "Invalid 3bit immediate" -msgstr "Immédiat de 3 bits invalide" +#: config/tc-arm.c:10043 +msgid "invalid 3bit immediate" +msgstr "immédiat de 3 bits invalide" -#: config/tc-arm.c:7343 +#: config/tc-arm.c:10059 #, c-format -msgid "Invalid immediate: %ld is too large" -msgstr "Immédiat invalide: %ld est trop grand" +msgid "invalid immediate: %ld is too large" +msgstr "immédiat invalide: %ld est trop grand" -#: config/tc-arm.c:7358 +#: config/tc-arm.c:10074 #, c-format -msgid "Illegal Thumb shift value: %ld" -msgstr "Valeur de décalage Thumb illégale: %ld" +msgid "illegal Thumb shift value: %ld" +msgstr "valeur de décalage Thumb illégale: %ld" -#: config/tc-arm.c:7372 config/tc-mn10300.c:1961 +#: config/tc-arm.c:10088 #, c-format -msgid "Bad relocation fixup type (%d)" -msgstr "Type de correctif de relocalisation erroné (%d)" +msgid "bad relocation fixup type (%d)" +msgstr "type erroné de correctif de relocalisation (%d)" -#: config/tc-arm.c:7445 -msgid "Literal referenced across section boundary (Implicit dump?)" -msgstr "Litéral référencé à travers une frontière de section (vidange implicite?)" +#: config/tc-arm.c:10159 +msgid "literal referenced across section boundary (Implicit dump?)" +msgstr "litéral référencé à travers une frontière de section (vidange implicite?)" -#: config/tc-arm.c:7458 +#: config/tc-arm.c:10172 #, c-format -msgid "Internal_relocation (type %d) not fixed up (IMMEDIATE)" -msgstr "Relocalisation interne (type %d) n'est pas corrigé (IMMEDIATE)" +msgid "internal relocation (type %d) not fixed up (IMMEDIATE)" +msgstr "relocalisation interne (type %d) n'est pas corrigé (IMMEDIAT)" -#: config/tc-arm.c:7464 +#: config/tc-arm.c:10178 msgid "ADRL used for a symbol not defined in the same file" msgstr "ADRL utilisé pour un symbole qui n'est pas défini dans le même fichier" -#: config/tc-arm.c:7469 +#: config/tc-arm.c:10183 #, c-format -msgid "Internal_relocation (type %d) not fixed up (OFFSET_IMM)" -msgstr "Relocalisation interne (type %d) n'est pas corrigé (OFFSET_IMM)" +msgid "internal_relocation (type %d) not fixed up (OFFSET_IMM)" +msgstr "relocalisation interne (type %d) n'est pas corrigé (OFFSET_IMM)" -#: config/tc-arm.c:7490 config/tc-cris.c:2672 config/tc-mcore.c:2109 -#: config/tc-ns32k.c:2369 +#: config/tc-arm.c:10204 config/tc-cris.c:2940 config/tc-mcore.c:2104 +#: config/tc-mmix.c:2840 config/tc-ns32k.c:2350 msgid "" msgstr "" -#: config/tc-arm.c:7493 -#, c-format -msgid "Cannot represent %s relocation in this object file format" -msgstr "Ne peut représenter la relocalisation %s dans ce format de fichier objet" - -#: config/tc-arm.c:7514 config/tc-mips.c:11261 config/tc-sh.c:3177 -#, c-format -msgid "Can not represent %s relocation in this object file format" -msgstr "Ne peut représenter la relocalisation %s dans ce format de fichier objet" - -#: config/tc-arm.c:7611 -#, c-format -msgid "No operator -- statement `%s'\n" -msgstr "Pas d'opérateur -- déclaration `%s'\n" - -#: config/tc-arm.c:7629 -msgid "selected processor does not support this opcode" -msgstr "le processeur choisi ne supporte pas ce code-op" - -#: config/tc-arm.c:7675 -#, c-format -msgid "Opcode `%s' must have suffix from list: <%s>" -msgstr "Code-op `%s' doit avoir un suffixe dans la liste: <%s>" - -#: config/tc-arm.c:7706 -msgid "Warning: Use of the 'nv' conditional is deprecated\n" -msgstr "AVERTISSEMENT: utilisation du conditionnal 'nv' est déprécié\n" - -#: config/tc-arm.c:7723 -#, c-format -msgid "Opcode `%s' is unconditional\n" -msgstr "Code-op `%s' est inconditionnel\n" - -#: config/tc-arm.c:7747 +#: config/tc-arm.c:10207 config/tc-arm.c:10228 #, c-format -msgid "Opcode `%s' must have suffix from <%s>\n" -msgstr "Code-op `%s' doit avoir une suffixe dans <%s>\n" - -#: config/tc-arm.c:7838 -#, c-format -msgid "register '%s' does not exist\n" -msgstr "registre '%s' n'existe pas\n" +msgid "cannot represent %s relocation in this object file format" +msgstr "ne peut représenter la relocalisation %s dans ce format de fichier objet" -#: config/tc-arm.c:7843 +#: config/tc-arm.c:10325 #, c-format -msgid "ignoring redefinition of register alias '%s'" -msgstr "a ignoré la redéfinition de l'alias du registre '%s'" +msgid "no operator -- statement `%s'\n" +msgstr "pas d'opérateur -- déclaration `%s'\n" -#: config/tc-arm.c:7849 +#: config/tc-arm.c:10343 config/tc-arm.c:10368 #, c-format -msgid "ignoring redefinition of register alias '%s' to non-existant register '%s'" -msgstr "redéfinition ignorée de l'alias de registre '%s' pour un registre non existant '%s'" +msgid "selected processor does not support `%s'" +msgstr "le processeur choisi ne supporte pas `%s'" -#: config/tc-arm.c:7853 -msgid "ignoring incomplete .req pseuso op" -msgstr "a ignoré le pseudo opérateur incomplet .req" - -#: config/tc-arm.c:7860 +#: config/tc-arm.c:10385 #, c-format msgid "bad instruction `%s'" msgstr "instruction `%s' erronée" -#: config/tc-arm.c:8035 -msgid "Unrecognised APCS switch -m%s" -msgstr "Commutateur APCS non reconnue -m%s" +#: config/tc-arm.c:10583 +#, c-format +msgid "unrecognised APCS switch -m%s" +msgstr "commutateur APCS non reconnue -m%s" -#: config/tc-arm.c:8192 config/tc-arm.c:8205 config/tc-arm.c:8218 -#: config/tc-arm.c:8231 config/tc-arm.c:8237 -msgid "Invalid architecture variant -m%s" -msgstr "Variante d'architecture invalide -m%s" +#: config/tc-arm.c:10738 config/tc-arm.c:10751 config/tc-arm.c:10764 +#: config/tc-arm.c:10777 config/tc-arm.c:10783 +#, c-format +msgid "invalid architecture variant -m%s" +msgstr "variante d'architecture invalide -m%s" -#: config/tc-arm.c:8244 +#: config/tc-arm.c:10790 #, c-format -msgid "Invalid processor variant -m%s" -msgstr "Variante de processor invalide -m%s" +msgid "invalid processor variant -m%s" +msgstr "variante de processor invalide -m%s" -#: config/tc-arm.c:8267 +#: config/tc-arm.c:10813 msgid "" " ARM Specific Assembler Options:\n" " -m[arm][] select processor variant\n" " -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] select architecture variant\n" +" -marm9e allow Cirrus/DSP instructions\n" " -mthumb only allow Thumb instructions\n" " -mthumb-interwork mark the assembled code as supporting interworking\n" " -mall allow any instruction\n" " -mfpa10, -mfpa11 select floating point architecture\n" " -mfpe-old don't allow floating-point multiple instructions\n" +" -mvfpxd allow vfp single-precision instructions\n" +" -mvfp allow all vfp instructions\n" " -mno-fpu don't allow any floating-point instructions.\n" " -k generate PIC code.\n" msgstr "" " Options spécifique de l'assembleur ARM:\n" -" -m[arm][] sélectionner la vairante du processeur\n" +" -m[arm][] sélectionner la variante du processeur\n" " -m[arm]v[2|2a|3|3m|4|4t|5[t][e]] sélectionner la variante d'architecture\n" +" -marm9e permettre les instructions Cirrus/DSP\n" " -mthumb permettre seulement des instruction 'Thumb'\n" " -mthumb-interwork marquer le code assemblé comme supportant\n" " l'inter-réseautage\n" @@ -2050,7 +2221,7 @@ msgstr "" " flottante\n" " -k générer code indépendant de la position PIC\n" -#: config/tc-arm.c:8279 +#: config/tc-arm.c:10828 msgid "" " -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to use\n" " -matpcs use ARM/Thumb Procedure Calling Standard\n" @@ -2064,11 +2235,11 @@ msgstr "" " les registres FP\n" " -mapcs-reentrant le code est indépendant de la position/ré-entrant\n" -#: config/tc-arm.c:8286 +#: config/tc-arm.c:10835 msgid " -moabi support the old ELF ABI\n" msgstr " -moabi supporter l'ancien ABI ELF\n" -#: config/tc-arm.c:8290 +#: config/tc-arm.c:10839 msgid "" " -EB assemble code for a big endian cpu\n" " -EL assemble code for a little endian cpu\n" @@ -2078,19 +2249,24 @@ msgstr "" " -EL assembler le code pour un système à octets\n" " de poids faible\n" -#: config/tc-arm.c:8443 +#: config/tc-arm.c:11023 +#, c-format msgid "%s: unexpected function type: %d" msgstr "%s: type de fonction inattendu: %d" +#: config/tc-arm.c:11389 +msgid "alignments greater than 32 bytes not supported in .text sections." +msgstr "alignements plus grand que 32 octets ne sont pas supportés dans les sections .text" + #: config/tc-arm.h:98 msgid "arm convert_frag\n" msgstr "arm convert_frag\n" -#: config/tc-avr.c:185 +#: config/tc-avr.c:197 msgid "Known MCU names:" msgstr "Noms MCU connus:" -#: config/tc-avr.c:254 +#: config/tc-avr.c:266 msgid "" "AVR options:\n" " -mmcu=[avr-name] select microcontroller variant\n" @@ -2112,7 +2288,7 @@ msgstr "" " avr5 - ATmega161, ATmega163, ATmega32, AT94K\n" " ou un nom immédiat de micro-contrôleur\n" -#: config/tc-avr.c:264 +#: config/tc-avr.c:276 msgid "" " -mall-opcodes accept all AVR opcodes, even if not supported by MCU\n" " -mno-skip-bug disable warnings for skipping two-word instructions\n" @@ -2120,319 +2296,364 @@ msgid "" " -mno-wrap reject rjmp/rcall instructions with 8K wrap-around\n" " (default for avr3, avr5)\n" msgstr "" -" -mall-opcodes accepter tous les code-op AVR, même non supportés par MCU\n" +" -mall-opcodes accepter tous les opcode AVR, même non supportés par MCU\n" " -mno-skip-bug désactiver les avertissements pour l'escamotage des\n" " instructions de 2 mots (par défaut pour avr4, avr5)\n" " -mno-wrap rejeter les instructions rjmp/rcall avec un emballage de 8K\n" " (par défaut pour avr3, avr5)\n" -#: config/tc-avr.c:312 +#: config/tc-avr.c:324 +#, c-format msgid "unknown MCU: %s\n" msgstr "MCU inconnue: %s\n" -#: config/tc-avr.c:321 +#: config/tc-avr.c:333 #, c-format msgid "redefinition of mcu type `%s' to `%s'" msgstr "redéfinition du type MCU `%s' à `%s'" -#: config/tc-avr.c:372 config/tc-d10v.c:313 config/tc-d30v.c:366 -#: config/tc-mips.c:8789 config/tc-mn10200.c:375 config/tc-pj.c:356 -#: config/tc-ppc.c:4518 config/tc-sh.c:2058 config/tc-v850.c:1291 +#: config/tc-avr.c:384 config/tc-d10v.c:314 config/tc-d30v.c:366 +#: config/tc-mips.c:9586 config/tc-mmix.c:2233 config/tc-mn10200.c:361 +#: config/tc-pj.c:357 config/tc-ppc.c:4803 config/tc-sh.c:2090 +#: config/tc-v850.c:1292 msgid "bad call to md_atof" msgstr "appel erroné à md_atof" -#: config/tc-avr.c:435 +#: config/tc-avr.c:447 msgid "constant value required" msgstr "valeur constante requise" -#: config/tc-avr.c:438 +#: config/tc-avr.c:450 +#, c-format msgid "number must be less than %d" msgstr "le nombre doit être plus petit que %d" -#: config/tc-avr.c:490 +#: config/tc-avr.c:502 msgid "`,' required" msgstr "`,' requis" -#: config/tc-avr.c:509 +#: config/tc-avr.c:521 msgid "undefined combination of operands" msgstr "combinaison d'opérandes indéfinie" -#: config/tc-avr.c:518 +#: config/tc-avr.c:530 msgid "skipping two-word instruction" msgstr "escamotage d'une instruction de 2 mots" -#: config/tc-avr.c:580 +#: config/tc-avr.c:592 msgid "register r16-r23 required" -msgstr "resigstres R16-R32 requis" +msgstr "resigstres r16-R32 requis" -#: config/tc-avr.c:586 +#: config/tc-avr.c:598 msgid "register number above 15 required" msgstr "Numéro de registre au-dessus de 15 est requis" -#: config/tc-avr.c:592 +#: config/tc-avr.c:604 msgid "even register number required" msgstr "numéro paire de registre est requis" -#: config/tc-avr.c:598 +#: config/tc-avr.c:610 msgid "register r24, r26, r28 or r30 required" msgstr "registre R24, R26, R28 ou R30 est requis" -#: config/tc-avr.c:604 +#: config/tc-avr.c:616 msgid "register name or number from 0 to 31 required" msgstr "nom de registre ou numéro de registre 0 à 31 est requis" -#: config/tc-avr.c:622 +#: config/tc-avr.c:634 msgid "pointer register (X, Y or Z) required" msgstr "registre de pointeur (X, Y ou Z) est requist" -#: config/tc-avr.c:629 +#: config/tc-avr.c:641 msgid "cannot both predecrement and postincrement" msgstr "ne peut à la fois pré-décrémenter et post-décrémenter" -#: config/tc-avr.c:637 +#: config/tc-avr.c:649 msgid "addressing mode not supported" msgstr "mode d'adressage non supporté" -#: config/tc-avr.c:643 +#: config/tc-avr.c:655 msgid "can't predecrement" msgstr "ne peut faire une pré-décrémentation" -#: config/tc-avr.c:646 +#: config/tc-avr.c:658 msgid "pointer register Z required" msgstr "registre de pointeurs Z requis" -#: config/tc-avr.c:664 +#: config/tc-avr.c:676 msgid "pointer register (Y or Z) required" msgstr "registre de pointeurs (Y ou Z) requis" -#: config/tc-avr.c:769 +#: config/tc-avr.c:781 +#, c-format msgid "unknown constraint `%c'" msgstr "contrainte inconnue `%c'" -#: config/tc-avr.c:882 config/tc-avr.c:898 config/tc-avr.c:999 +#: config/tc-avr.c:890 config/tc-avr.c:906 config/tc-avr.c:1007 #, c-format msgid "odd address operand: %ld" msgstr "opérande d'adresse impaire: %ld" -#: config/tc-avr.c:890 config/tc-avr.c:909 +#: config/tc-avr.c:898 config/tc-avr.c:917 #, c-format msgid "operand out of range: %ld" msgstr "opérande hors gamme: %ld" -#: config/tc-avr.c:1008 config/tc-d10v.c:1631 config/tc-d30v.c:1990 +#: config/tc-avr.c:1016 config/tc-d10v.c:1634 config/tc-d30v.c:1987 +#, c-format msgid "line %d: unknown relocation type: 0x%x" msgstr "ligne %d: type de relocalisation inconnu: 0x%x" -#: config/tc-avr.c:1022 +#: config/tc-avr.c:1030 msgid "only constant expression allowed" msgstr "seule une expression de constante est permise" -#: config/tc-avr.c:1060 config/tc-d10v.c:1495 config/tc-d30v.c:1807 -#: config/tc-mn10200.c:1254 config/tc-mn10300.c:1810 config/tc-ppc.c:5161 -#: config/tc-v850.c:2301 +#: config/tc-avr.c:1067 config/tc-d10v.c:1498 config/tc-d30v.c:1807 +#: config/tc-mn10200.c:1240 config/tc-mn10300.c:1774 config/tc-ppc.c:5534 +#: config/tc-v850.c:2296 #, c-format msgid "reloc %d not supported by object file format" msgstr "relocalisation %d n'est pas supporté dans le format du fichier objet" -#: config/tc-avr.c:1084 config/tc-d10v.c:1102 config/tc-d10v.c:1116 -#: config/tc-h8300.c:1239 config/tc-h8500.c:1098 config/tc-mcore.c:988 -#: config/tc-pj.c:265 config/tc-sh.c:1640 config/tc-z8k.c:1195 +#: config/tc-avr.c:1091 config/tc-d10v.c:1100 config/tc-d10v.c:1114 +#: config/tc-h8300.c:1275 config/tc-h8500.c:1088 config/tc-mcore.c:988 +#: config/tc-pj.c:266 config/tc-sh.c:1670 config/tc-z8k.c:1192 msgid "can't find opcode " -msgstr "ne peut repérer le code-op " +msgstr "ne peut repérer le opcode " -#: config/tc-avr.c:1101 +#: config/tc-avr.c:1108 #, c-format msgid "illegal opcode %s for mcu %s" -msgstr "code-op illégale %s pour MCU %s" +msgstr "opcode illégale %s pour MCU %s" -#: config/tc-avr.c:1109 +#: config/tc-avr.c:1116 msgid "garbage at end of line" msgstr "rebut à la fin de la ligne" -#: config/tc-avr.c:1173 +#: config/tc-avr.c:1180 read.c:3219 msgid "illegal expression" msgstr "expression illégale" -#: config/tc-avr.c:1199 config/tc-avr.c:1265 +#: config/tc-avr.c:1206 config/tc-avr.c:1272 msgid "`)' required" msgstr "`)' requis" -#: config/tc-avr.c:1219 +#: config/tc-avr.c:1226 #, c-format msgid "constant out of 8-bit range: %d" msgstr "constante hors gamme pour les bornes de 8 bits: %d" -#: config/tc-avr.c:1222 +#: config/tc-avr.c:1229 msgid "expression possibly out of 8-bit range" msgstr "expression possiblement hors gamme pour 8 bits" -#: config/tc-avr.c:1293 config/tc-avr.c:1300 +#: config/tc-avr.c:1300 config/tc-avr.c:1307 +#, c-format msgid "illegal %srelocation size: %d" msgstr "taille des %srelocalisations illégale: %d" -#: config/tc-cris.c:672 +#: config/tc-cris.c:681 +msgid "Virtual memory exhausted" +msgstr "Mémoire virtuelle épuisée" + +#: config/tc-cris.c:689 +#, c-format msgid "Can't hash `%s': %s\n" msgstr "Ne peut adresser par hachage `%s': %s\n" -#: config/tc-cris.c:673 +#: config/tc-cris.c:690 msgid "(unknown reason)" msgstr "(raison inconnue)" -#: config/tc-cris.c:677 +#: config/tc-cris.c:694 #, c-format msgid "Buggy opcode: `%s' \"%s\"\n" -msgstr "Code-op erroné: `%s' \"%s\"\n" +msgstr "opcode erroné: `%s' \"%s\"\n" -#: config/tc-cris.c:1002 +#: config/tc-cris.c:1039 #, c-format msgid "Immediate value not in 5 bit unsigned range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 5 bits: %ld" -#: config/tc-cris.c:1018-R option not supported on this target." +#: config/tc-cris.c:1055 #, c-format msgid "Immediate value not in 4 bit unsigned range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 4 bits: %ld" -#: config/tc-cris.c:1057 +#: config/tc-cris.c:1094 #, c-format msgid "Immediate value not in 6 bit range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 6 bits: %ld" -#: config/tc-cris.c:1072 +#: config/tc-cris.c:1109 #, c-format msgid "Immediate value not in 6 bit unsigned range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 6 bits: %ld" #. Others have a generic warning. -#: config/tc-cris.c:1159 +#: config/tc-cris.c:1199 #, c-format msgid "Unimplemented register `%s' specified" msgstr "Registre spécifié non implanté `%s'" #. We've come to the end of instructions with this #. opcode, so it must be an error. -#: config/tc-cris.c:1309 +#: config/tc-cris.c:1358 msgid "Illegal operands" msgstr "opérandes illégales" -#: config/tc-cris.c:1341 config/tc-cris.c:1372 +#: config/tc-cris.c:1389 config/tc-cris.c:1420 #, c-format msgid "Immediate value not in 8 bit range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 8 bits: %ld" -#: config/tc-cris.c:1351 config/tc-cris.c:1379 +#: config/tc-cris.c:1399 config/tc-cris.c:1427 #, c-format msgid "Immediate value not in 16 bit range: %ld" msgstr "Valeur immédiate n'est pas dans les bornes non signées de 16 bits: %ld" -#. FIXME: Find out and change to as_warn_where. Add testcase. -#: config/tc-cris.c:2316 +#: config/tc-cris.c:1448 +msgid "PIC relocation size does not match operand size" +msgstr "la taille de relocalisation PIC ne concorde pas avec la taille de l'opérande" + +#: config/tc-cris.c:2447 msgid "32-bit conditional branch generated" msgstr "Branchement conditionnel 32 bits a été généré" +#: config/tc-cris.c:2501 +msgid "Complex expression not supported" +msgstr "expressions complexes ne sont pas supportées" + #. FIXME: Is this function mentioned in the internals.texi manual? If #. not, add it. -#: config/tc-cris.c:2395 +#: config/tc-cris.c:2622 msgid "Bad call to md_atof () - floating point formats are not supported" msgstr "Appel erroné à md_atof() - format en virgule flottante n'est pas supporté" -#: config/tc-cris.c:2456 +#: config/tc-cris.c:2669 +msgid "PC-relative relocation must be trivially resolved" +msgstr "relocalisation relative au PC doit être résolue de manière triviale" + +#: config/tc-cris.c:2712 #, c-format msgid "Value not in 16 bit range: %ld" msgstr "Valeur n'est pas dans les bornes de 16 bits: %ld" -#: config/tc-cris.c:2466 +#: config/tc-cris.c:2723 #, c-format msgid "Value not in 8 bit range: %ld" msgstr "Valeur n'est pas dans les bornes de 8 bits: %ld" -#: config/tc-cris.c:2473 +#: config/tc-cris.c:2730 #, c-format msgid "Value not in 4 bit unsigned range: %ld" msgstr "Valeur n'est pas dans les bornes de 4 bits: %ld" -#: config/tc-cris.c:2480 +#: config/tc-cris.c:2737 #, c-format msgid "Value not in 5 bit unsigned range: %ld" msgstr "Valeur n'est pas dans les bornes de 5 bits: %ld" -#: config/tc-cris.c:2487 +#: config/tc-cris.c:2744 #, c-format msgid "Value not in 6 bit range: %ld" msgstr "Valeur n'est pas dans les bornes de 6 bits: %ld" -#: config/tc-cris.c:2494 +#: config/tc-cris.c:2751 #, c-format msgid "Value not in 6 bit unsigned range: %ld" msgstr "Valeur n'est pas dans les bornes non signées de 6 bits: %ld" -#: config/tc-cris.c:2542 +#: config/tc-cris.c:2799 msgid "Please use --help to see usage and options for this assembler.\n" msgstr "SVP utiliser --help pour connaître les options pour ect assembleur.\n" -#: config/tc-cris.c:2554 +#: config/tc-cris.c:2811 msgid "--no-underscore is invalid with a.out format" msgstr "--no-underscore est invalide pour une format a.out" -#: config/tc-cris.c:2619 +#: config/tc-cris.c:2887 msgid "Semantics error. This type of operand can not be relocated, it must be an assembly-time constant" msgstr "" "Erreur de sémantique. Ce type d'opérande ne peut être relocalisé, ce doit être\n" "une constante utilisée au moment de l'assemblage" -#: config/tc-cris.c:2673 +#: config/tc-cris.c:2941 #, c-format msgid "Cannot generate relocation type for symbol %s, code %s" msgstr "Ne peut générer un type de relocalisation pour le symbole %s, code %s" -#: config/tc-cris.c:2686 +#. The messages are formatted to line up with the generic options. +#: config/tc-cris.c:2955 msgid "CRIS-specific options:\n" msgstr "Options spécifiques CRIS:\n" -#: config/tc-cris.c:2688 +#: config/tc-cris.c:2957 msgid " -h, -H Don't execute, print this help text. Deprecated.\n" msgstr " -h, -H afficher l'aide mémoire. Déprécié.\n" -#: config/tc-cris.c:2690 +#: config/tc-cris.c:2959 msgid " -N Warn when branches are expanded to jumps.\n" msgstr " -N avertir lorsque l'expansion des branches est faite pour des sauts.\n" -#: config/tc-cris.c:2692 +#: config/tc-cris.c:2961 msgid " --underscore User symbols are normally prepended with underscore.\n" msgstr "" " --underscore symboles usagers sont normalement préfixés avec\n" " le caractère de soulignement.\n" -#: config/tc-cris.c:2694 +#: config/tc-cris.c:2963 msgid " Registers will not need any prefix.\n" msgstr " registres n'ont pas besoin de préfixe\n" -#: config/tc-cris.c:2696 +#: config/tc-cris.c:2965 msgid " --no-underscore User symbols do not have any prefix.\n" msgstr " --no-underscore les symboles usagers n'ont pas de préfixe\n" -#: config/tc-cris.c:2698 +#: config/tc-cris.c:2967 msgid " Registers will require a `$'-prefix.\n" msgstr " registres auront besoin de `$'-prefix\n" -#: config/tc-cris.c:2718 +#: config/tc-cris.c:2969 +msgid " --pic\t\t\tEnable generation of position-independent code.\n" +msgstr " --pic permetre la génération de code indépendant de la position\n" + +#: config/tc-cris.c:2992 msgid "Invalid relocation" msgstr "Relocalisation invalide" -#: config/tc-cris.c:2758 +#: config/tc-cris.c:3033 msgid "Invalid pc-relative relocation" msgstr "relocalisation relative du PC invalide" -#: config/tc-cris.c:2796 +#: config/tc-cris.c:3084 #, c-format msgid "Adjusted signed .word (%ld) overflows: `switch'-statement too large." msgstr "A ajusté le débordement signé de .word (%ld): option -statement trop grande." -#: config/tc-cris.c:2870 +#: config/tc-cris.c:3111 +#, c-format +msgid ".syntax %s requires command-line option `--underscore'" +msgstr ".syntax %s requiert l'option `--underscore'" + +#: config/tc-cris.c:3120 +#, c-format +msgid ".syntax %s requires command-line option `--no-underscore'" +msgstr ".syntax %s requiert l'option `--no-underscore'" + +#: config/tc-cris.c:3158 msgid "Unknown .syntax operand" msgstr "Opérande inconnue .syntax" -#: config/tc-d10v.c:246 +#: config/tc-cris.c:3169 +msgid "Pseudodirective .file is only valid when generating ELF" +msgstr "Pseudo-directive .file est valide seulement lors de la génération ELF" + +#: config/tc-cris.c:3182 +msgid "Pseudodirective .loc is only valid when generating ELF" +msgstr "Pseudo-directive .loc est valide seulement lors de la génération ELF" + +#: config/tc-d10v.c:247 msgid "" "D10V options:\n" "-O Optimize. Will do some operations in parallel.\n" @@ -2448,26 +2669,26 @@ msgstr "" "--no-gstabs-packing Si --gstabs est spécifié, ne pas empaqueter les instructions\n" " adjacentes ensembles.\n" -#: config/tc-d10v.c:530 config/tc-d30v.c:550 config/tc-mn10200.c:951 -#: config/tc-mn10300.c:1332 config/tc-ppc.c:1972 config/tc-tic80.c:278 -#: config/tc-v850.c:2073 +#: config/tc-d10v.c:538 config/tc-d30v.c:550 config/tc-mn10200.c:937 +#: config/tc-mn10300.c:1308 config/tc-ppc.c:2104 config/tc-s390.c:1052 +#: config/tc-tic80.c:279 config/tc-v850.c:2070 msgid "illegal operand" msgstr "opérande illégale" -#: config/tc-d10v.c:573 config/tc-d10v.c:655 config/tc-d30v.c:656 +#: config/tc-d10v.c:581 config/tc-d10v.c:663 config/tc-d30v.c:656 #, c-format msgid "operand out of range: %d" msgstr "opérande hors gamme: %d" -#: config/tc-d10v.c:716 +#: config/tc-d10v.c:724 msgid "Instruction must be executed in parallel with another instruction." msgstr "L'instruction doit être exécutée en parallèle avec une autre." -#: config/tc-d10v.c:772 +#: config/tc-d10v.c:780 msgid "Instruction must be executed in parallel" msgstr "L'instruction doit être exécutée en parallèle" -#: config/tc-d10v.c:775 +#: config/tc-d10v.c:783 msgid "Long instructions may not be combined." msgstr "Les instructions longues ne peuvent pas être combinées." @@ -2479,8 +2700,8 @@ msgstr "Une de ces instructions ne peut msgid "Two IU instructions may not be executed in parallel" msgstr "Deux instruction IU ne peuvent pas être exécutées en parallèle" -#: config/tc-d10v.c:823 config/tc-d10v.c:831 config/tc-d10v.c:848 -#: config/tc-d10v.c:865 config/tc-d30v.c:878 config/tc-d30v.c:887 +#: config/tc-d10v.c:823 config/tc-d10v.c:831 config/tc-d10v.c:844 +#: config/tc-d10v.c:859 config/tc-d30v.c:878 config/tc-d30v.c:887 msgid "Swapping instruction order" msgstr "Ordre d'instruction de commutation (swapping)" @@ -2488,37 +2709,38 @@ msgstr "Ordre d'instruction de commutati msgid "Two MU instructions may not be executed in parallel" msgstr "Deux instructions MU ne peuvent pas être exécutées en parallèle." -#: config/tc-d10v.c:852 config/tc-d30v.c:904 +#: config/tc-d10v.c:848 config/tc-d30v.c:904 msgid "IU instruction may not be in the left container" msgstr "L'instruction IU ne peut pas être laissé dans le conteneur de gauche" -#: config/tc-d10v.c:854 config/tc-d10v.c:871 MRO +#: config/tc-d10v.c:850 config/tc-d10v.c:865 msgid "Instruction in R container is squashed by flow control instruction in L container." msgstr "" "Instruction dans le conteneur R est écrasé par une instruction de contrôle de flux\n" "du conteneur L." -#: config/tc-d10v.c:869 config/tc-d30v.c:915 +#: config/tc-d10v.c:863 config/tc-d30v.c:915 msgid "MU instruction may not be in the right container" msgstr "L'instruction MU ne peut pas être dans le conteneur de droite" -#: config/tc-d10v.c:877 config/tc-d30v.c:927 +#: config/tc-d10v.c:869 config/tc-d30v.c:927 msgid "unknown execution type passed to write_2_short()" msgstr "type d'excution inconnue passé à write_2_short()" -#: config/tc-d10v.c:1130 config/tc-d10v.c:1151 config/tc-d30v.c:1411 +#: config/tc-d10v.c:1128 config/tc-d10v.c:1149 config/tc-d30v.c:1411 msgid "Unable to mix instructions as specified" msgstr "Incapable de mélanger les instructions tel que spécifié" -#: config/tc-d10v.c:1198 config/tc-d30v.c:1548 +#: config/tc-d10v.c:1196 config/tc-d30v.c:1548 +#, c-format msgid "unknown opcode: %s" -msgstr "code-op inconnu: %s" +msgstr "opcode inconnu: %s" -#: config/tc-d10v.c:1280 config/tc-d10v.c:1451 config/tc-tic80.c:535 +#: config/tc-d10v.c:1279 config/tc-d10v.c:1451 config/tc-tic80.c:536 msgid "bad opcode or operands" -msgstr "Code-op ou opérandes erronés" +msgstr "opcode ou opérandes erronés" -#: config/tc-d10v.c:1353 config/tc-m68k.c:4286 +#: config/tc-d10v.c:1352 config/tc-m68k.c:4310 msgid "value out of range" msgstr "valeur hors gamme" @@ -2526,11 +2748,15 @@ msgstr "valeur hors gamme" msgid "illegal operand - register name found where none expected" msgstr "opérande illégale - nom de registre repéré alors qu'aucun n'était attendu" -#: config/tc-d10v.c:1462 config/tc-tic80.c:546 +#: config/tc-d10v.c:1462 config/tc-tic80.c:547 msgid "Register number must be EVEN" msgstr "le numéro de registre doit être PAIR" -#: config/tc-d10v.c:1611 +#: config/tc-d10v.c:1465 +msgid "Unsupported use of sp" +msgstr "Utilisation non supporté de sp" + +#: config/tc-d10v.c:1614 #, c-format msgid "line %d: rep or repi must include at least 4 instructions" msgstr "ligne %d: rep ou repi doit inclure au moins 4 instructions" @@ -2616,7 +2842,7 @@ msgstr "Ne peut assembler l'instruction" #: config/tc-d30v.c:1292 msgid "First opcode is long. Unable to mix instructions as specified." -msgstr "Le 1er code-op est long. Incapable de mélanger des instructions tel que spécifié." +msgstr "Le 1er opcode est long. Incapable de mélanger des instructions tel que spécifié." #: config/tc-d30v.c:1361 msgid "word of NOPs added between word multiply and load" @@ -2631,6 +2857,7 @@ msgid "Instruction uses long version, so msgstr "L'instruction utilise une version avec long, aussi elle ne peut être mélangée tel que spécifié" #: config/tc-d30v.c:1478 config/tc-d30v.c:1516 +#, c-format msgid "unknown condition code: %s" msgstr "code de condition inconnue: %s" @@ -2642,43 +2869,43 @@ msgstr "cmpu ne supporte pas le code de #: config/tc-d30v.c:1559 #, c-format msgid "operands for opcode `%s' do not match any valid format" -msgstr "opérande pour le code-op `%s' ne correspond pas avec un format valide" +msgstr "opérande pour le opcode `%s' ne correspond pas avec un format valide" #: config/tc-d30v.c:1777 msgid "Odd numbered register used as target of multi-register instruction" msgstr "Registre numéroté impair utilisé comme cible d'une instruction à multiples resgistres" -#: config/tc-d30v.c:1879 +#: config/tc-d30v.c:1876 #, c-format msgid "line %d: unable to place address of symbol '%s' into a byte" msgstr "ligne %d: incapable d'insérer l'adresse du symbole '%s' dans un octet" -#: config/tc-d30v.c:1882 +#: config/tc-d30v.c:1879 #, c-format msgid "line %d: unable to place value %x into a byte" msgstr "ligne %d: incapable d'insérer la valeur %x dans un octet" -#: config/tc-d30v.c:1890 +#: config/tc-d30v.c:1887 #, c-format msgid "line %d: unable to place address of symbol '%s' into a short" msgstr "ligne %d: incapable d'insérer l'adresse du symbole '%s' dans un short" -#: config/tc-d30v.c:1893 +#: config/tc-d30v.c:1890 #, c-format msgid "line %d: unable to place value %x into a short" msgstr "ligne %d: incpable d'insérer la valeur %x dans un short" -#: config/tc-d30v.c:1901 +#: config/tc-d30v.c:1898 #, c-format msgid "line %d: unable to place address of symbol '%s' into a quad" msgstr "ligne %d: incapable d'insérer l'adresse du symbole '%s' dans un quad" -#: config/tc-d30v.c:2072 +#: config/tc-d30v.c:2067 #, c-format msgid "value too large to fit in %d bits" msgstr "valeur trop grande pour entrer dans %d bits" -#: config/tc-d30v.c:2215 +#: config/tc-d30v.c:2210 #, c-format msgid "Alignment too large: %d assumed" msgstr "Alignement trop grand: %d assumé" @@ -2687,905 +2914,954 @@ msgstr "Alignement trop grand: %d assumé msgid " FR30 specific command line options:\n" msgstr " Options spécifiques de la ligne de commande FR30:\n" -#: config/tc-fr30.c:143 +#: config/tc-fr30.c:143 config/tc-openrisc.c:150 #, c-format msgid "Instruction %s not allowed in a delay slot." msgstr "Instruction %s n'est pas permise dans la plage de délai" -#: config/tc-fr30.c:380 config/tc-m32r.c:1555 +#: config/tc-fr30.c:383 config/tc-m32r.c:1559 msgid "Addend to unresolved symbol not on word boundary." msgstr "Ajout d'un symbole non résolu n'est pas sur une frontière de mot" -#: config/tc-fr30.c:538 config/tc-i960.c:772 config/tc-m32r.c:1864 +#: config/tc-fr30.c:540 config/tc-i960.c:773 config/tc-m32r.c:1867 +#: config/tc-openrisc.c:468 msgid "Bad call to md_atof()" msgstr "appel erroné de md_atof()" -#: config/tc-h8300.c:245 config/tc-h8300.c:253 +#: config/tc-h8300.c:64 config/tc-h8300.c:75 config/tc-h8300.c:134 +#: config/tc-hppa.c:1422 config/tc-hppa.c:6915 config/tc-hppa.c:6921 +#: config/tc-hppa.c:6927 config/tc-hppa.c:6933 config/tc-mn10300.c:900 +#: config/tc-mn10300.c:2164 +msgid "could not set architecture and machine" +msgstr "ne peut initialiser l'architecture et la machine" + +#: config/tc-h8300.c:262 config/tc-h8300.c:270 msgid "Reg not valid for H8/300" msgstr "Registre invalide pour H8/300" -#: config/tc-h8300.c:413 config/tc-h8300.c:416 config/tc-h8300.c:419 -#: config/tc-h8300.c:423 +#: config/tc-h8300.c:430 config/tc-h8300.c:433 config/tc-h8300.c:436 +#: config/tc-h8300.c:440 msgid "Invalid register list for ldm/stm\n" msgstr "Liste de registres invalide pour ldm/stm\n" -#: config/tc-h8300.c:475 config/tc-h8300.c:537 config/tc-h8300.c:544 +#: config/tc-h8300.c:492 config/tc-h8300.c:554 config/tc-h8300.c:561 msgid "Wrong size pointer register for architecture." msgstr "Taille erronée du registre de pointeur pour l'architecture" -#: config/tc-h8300.c:502 config/tc-h8300.c:511 config/tc-h8300.c:521 +#: config/tc-h8300.c:519 config/tc-h8300.c:528 config/tc-h8300.c:538 msgid "expected @(exp, reg16)" msgstr "@ attendu (exp, reg16)" -#: config/tc-h8300.c:600 +#: config/tc-h8300.c:617 msgid "expect :8 or :16 here" msgstr "attendu :8 ou :16 ici" -#: config/tc-h8300.c:801 +#: config/tc-h8300.c:818 +#, c-format msgid "operand %s0x%lx out of range." msgstr "opérande %s0x%lx hors gamme." -#: config/tc-h8300.c:889 +#: config/tc-h8300.c:906 msgid "Can't work out size of operand.\n" msgstr "Ne peut traiter la taille de l'opérande.\n" -#: config/tc-h8300.c:937 +#: config/tc-h8300.c:954 #, c-format msgid "Opcode `%s' with these operand types not available in H8/300 mode" -msgstr "Code-op `%s' avec ces type d'opérandes ne sont pas disponibles en mode H8/300" +msgstr "opcode `%s' avec ces type d'opérandes ne sont pas disponibles en mode H8/300" -#: config/tc-h8300.c:988 config/tc-h8300.c:1008 +#: config/tc-h8300.c:1005 config/tc-h8300.c:1025 msgid "Need #1 or #2 here" msgstr "A besoin de #1 ou #2 ici" -#: config/tc-h8300.c:1003 +#: config/tc-h8300.c:1020 msgid "#4 not valid on H8/300." msgstr "#4 n'est pas valide sur H8/300." -#: config/tc-h8300.c:1089 config/tc-h8300.c:1121 +#: config/tc-h8300.c:1107 config/tc-h8300.c:1157 #, c-format msgid "branch operand has odd offset (%lx)\n" msgstr "opérande de branchement a un décalage impair (%lx)\n" -#: config/tc-h8300.c:1159 +#: config/tc-h8300.c:1195 msgid "destination operand must be 16 bit register" msgstr "opérande de destination doit être un registre de 16 bits" -#: config/tc-h8300.c:1168 +#: config/tc-h8300.c:1204 msgid "source operand must be 8 bit register" msgstr "opérande source doit être un registre de 8 bits" -#: config/tc-h8300.c:1176 +#: config/tc-h8300.c:1212 msgid "destination operand must be 16bit absolute address" msgstr "opérande de destination doit être une adresse absolue de 16 bits" -#: config/tc-h8300.c:1183 +#: config/tc-h8300.c:1219 msgid "destination operand must be 8 bit register" msgstr "opérande de destination doit être un registre de 8 bits" -#: config/tc-h8300.c:1191 +#: config/tc-h8300.c:1227 msgid "source operand must be 16bit absolute address" msgstr "opérande source doit être une adresse absolue de 16 bits" -#: config/tc-h8300.c:1199 +#. This seems more sane than saying "too many operands". We'll +#. get here only if the trailing trash starts with a comma. +#: config/tc-h8300.c:1235 config/tc-mmix.c:452 config/tc-mmix.c:464 +#: config/tc-mmix.c:2485 config/tc-mmix.c:2509 config/tc-mmix.c:2774 msgid "invalid operands" msgstr "opérandes invalides" -#: config/tc-h8300.c:1250 config/tc-h8500.c:1104 config/tc-mips.c:7984 -#: config/tc-sh.c:1877 config/tc-w65.c:740 config/tc-z8k.c:1205 +#: config/tc-h8300.c:1286 config/tc-h8500.c:1094 config/tc-mips.c:8649 +#: config/tc-sh.c:1907 config/tc-w65.c:733 config/tc-z8k.c:1202 msgid "unknown opcode" -msgstr "code-op inconnu" +msgstr "opcode inconnu" -#: config/tc-h8300.c:1296 +#: config/tc-h8300.c:1332 msgid "mismatch between opcode size and operand size" -msgstr "pas de concordance entre la taille du code-op et celle de l'opérande" +msgstr "pas de concordance entre la taille du opcode et celle de l'opérande" -#: config/tc-h8300.c:1307 config/tc-h8500.c:1131 config/tc-sh.c:2013 -#: config/tc-w65.c:770 config/tc-z8k.c:1258 +#: config/tc-h8300.c:1344 config/tc-h8500.c:1121 config/tc-sh.c:2045 +#: config/tc-w65.c:763 config/tc-z8k.c:1255 msgid "call to tc_crawl_symbol_chain \n" msgstr "appel de tc_crawl_symbol_chain \n" -#: config/tc-h8300.c:1321 config/tc-h8500.c:1145 config/tc-sh.c:2020 -#: config/tc-w65.c:784 config/tc-z8k.c:1272 +#: config/tc-h8300.c:1360 config/tc-h8500.c:1135 config/tc-sh.c:2052 +#: config/tc-w65.c:777 config/tc-z8k.c:1269 msgid "call to tc_headers_hook \n" msgstr "appel de tc_headers_hook \n" -#: config/tc-h8300.c:1412 config/tc-h8500.c:1235 config/tc-z8k.c:1386 +#: config/tc-h8300.c:1452 config/tc-h8500.c:1225 config/tc-z8k.c:1383 msgid "call to tc_aout_fix_to_chars \n" msgstr "appel de tc_aout_fix_to_chars \n" -#: config/tc-h8300.c:1422 config/tc-z8k.c:1396 +#: config/tc-h8300.c:1466 config/tc-z8k.c:1393 msgid "call to md_convert_frag \n" msgstr "appel de md_convert_frag \n" -#: config/tc-h8300.c:1467 config/tc-z8k.c:1477 +#: config/tc-h8300.c:1528 config/tc-z8k.c:1479 msgid "call tomd_estimate_size_before_relax \n" msgstr "appel de tomd_estimate_size_before_relax \n" -#: config/tc-h8500.c:333 +#: config/tc-h8300.c:1649 config/tc-mcore.c:2413 config/tc-pj.c:572 +#: config/tc-sh.c:3367 +#, c-format +msgid "Cannot represent relocation type %s" +msgstr "Ne peut représenter le type de relocalisation %s" + +#: config/tc-h8500.c:323 msgid ":24 not valid for this opcode" -msgstr ":24 n'est pas valide pour ce code-op" +msgstr ":24 n'est pas valide pour ce opcode" -#: config/tc-h8500.c:340 +#: config/tc-h8500.c:330 msgid "expect :8,:16 or :24" msgstr "attendu :8,:16 ou :24" -#: config/tc-h8500.c:397 +#: config/tc-h8500.c:387 msgid "syntax error in reg list" msgstr "Erreur de syntaxe dans la liste reg" -#: config/tc-h8500.c:415 +#: config/tc-h8500.c:405 msgid "missing final register in range" msgstr "registre final manque pour définir les bornes" -#: config/tc-h8500.c:502 config/tc-h8500.c:509 config/tc-h8500.c:515 +#: config/tc-h8500.c:492 config/tc-h8500.c:499 config/tc-h8500.c:505 msgid "expected @(exp, Rn)" msgstr "@ attendu (exp, Rn)" -#: config/tc-h8500.c:531 +#: config/tc-h8500.c:521 msgid "@Rn+ needs word register" msgstr "@Rn+ a besoin d'un registre de mots" -#: config/tc-h8500.c:541 +#: config/tc-h8500.c:531 msgid "@Rn needs word register" msgstr "@Rn a besoin d'un registre de mots" -#: config/tc-h8500.c:838 config/tc-sh.c:1357 +#: config/tc-h8500.c:828 config/tc-sh.c:1403 +#, c-format msgid "unhandled %d\n" msgstr "%d non traité\n" -#: config/tc-h8500.c:866 config/tc-sh.c:1382 +#: config/tc-h8500.c:856 #, c-format msgid "operand must be absolute in range %d..%d" msgstr "l'opérande doit être absolu dans les bornes %d..%d" -#: config/tc-h8500.c:955 config/tc-sh.c:1580 +#: config/tc-h8500.c:945 config/tc-sh.c:1610 #, c-format msgid "failed for %d\n" msgstr "a échoué pour %d\n" -#: config/tc-h8500.c:1120 config/tc-sh.c:1681 config/tc-sh.c:1926 -#: config/tc-w65.c:759 +#: config/tc-h8500.c:1110 config/tc-sh.c:1711 config/tc-sh.c:1956 +#: config/tc-w65.c:752 msgid "invalid operands for opcode" -msgstr "opérandes invalides pour code-op" +msgstr "opérandes invalides pour opcode" #. Simple range checking for FIELD againt HIGH and LOW bounds. #. IGNORE is used to suppress the error message. -#: config/tc-hppa.c:1119 +#: config/tc-hppa.c:1155 config/tc-hppa.c:1169 #, c-format msgid "Field out of range [%d..%d] (%d)." msgstr "Champ hors gamme [%d..%d] (%d)." #. Simple alignment checking for FIELD againt ALIGN (a power of two). #. IGNORE is used to suppress the error message. -#: config/tc-hppa.c:1133 +#: config/tc-hppa.c:1183 #, c-format msgid "Field not properly aligned [%d] (%d)." msgstr "Champ incorrectement alligné [%d] (%d)." -#: config/tc-hppa.c:1162 +#: config/tc-hppa.c:1212 msgid "Missing .exit\n" msgstr ".exit manquant\n" -#: config/tc-hppa.c:1165 +#: config/tc-hppa.c:1215 msgid "Missing .procend\n" msgstr ".procend manquant\n" -#: config/tc-hppa.c:1345 +#: config/tc-hppa.c:1395 +#, c-format msgid "Invalid field selector. Assuming F%%." msgstr "Sélecteur de champ invalide. F%% assumé." -#: config/tc-hppa.c:1372 config/tc-hppa.c:6839 config/tc-hppa.c:6845 -#: config/tc-hppa.c:6851 config/tc-hppa.c:6857 config/tc-mn10300.c:924 -#: config/tc-mn10300.c:2133 -msgid "could not set architecture and machine" -msgstr "ne peut initialiser l'architecture et la machine" - -#: config/tc-hppa.c:1378 +#: config/tc-hppa.c:1428 msgid "-R option not supported on this target." msgstr "L'option -R n'est pas supportée pour la cible." -#: config/tc-hppa.c:1394 config/tc-sparc.c:802 config/tc-sparc.c:838 +#: config/tc-hppa.c:1444 config/tc-sparc.c:803 config/tc-sparc.c:839 +#, c-format msgid "Internal error: can't hash `%s': %s\n" msgstr "Erreur interne: ne peut adresser par hachage `%s': %s\n" -#: config/tc-hppa.c:1402 config/tc-i860.c:190 +#: config/tc-hppa.c:1452 config/tc-i860.c:190 +#, c-format msgid "internal error: losing opcode: `%s' \"%s\"\n" -msgstr "erreur interne: perte du code-op: `%s' \"%s\"\n" +msgstr "erreur interne: perte du opcode: `%s' \"%s\"\n" -#: config/tc-hppa.c:1471 config/tc-hppa.c:6978 config/tc-hppa.c:7033 +#: config/tc-hppa.c:1523 config/tc-hppa.c:7054 config/tc-hppa.c:7111 msgid "Missing function name for .PROC (corrupted label chain)" msgstr "Nom de fonction manquant pour .PROC (chaîne d'étiquette corrompue)" -#: config/tc-hppa.c:1474 config/tc-hppa.c:7036 +#: config/tc-hppa.c:1526 config/tc-hppa.c:7114 msgid "Missing function name for .PROC" msgstr "Nom de fonction mauqnat pour .PROC" -#: config/tc-hppa.c:1582 config/tc-hppa.c:4812 +#: config/tc-hppa.c:1633 config/tc-hppa.c:4911 msgid "could not update architecture and machine" msgstr "ne peut mettre à jour l'architecture et la machine" -#: config/tc-hppa.c:1789 +#: config/tc-hppa.c:1841 msgid "Invalid Indexed Load Completer." msgstr "Complèteur de chargement indexé invalide." -#: config/tc-hppa.c:1794 +#: config/tc-hppa.c:1846 msgid "Invalid Indexed Load Completer Syntax." msgstr "Syntaxe de complèteur de chargement indexé invalide." -#: config/tc-hppa.c:1830 +#: config/tc-hppa.c:1883 msgid "Invalid Short Load/Store Completer." msgstr "Short Load/Store Completer invalide." -#: config/tc-hppa.c:1889 config/tc-hppa.c:1894 +#: config/tc-hppa.c:1943 config/tc-hppa.c:1948 msgid "Invalid Store Bytes Short Completer" msgstr "Store Bytes Short Completer invalide" -#: config/tc-hppa.c:2205 config/tc-hppa.c:2211 +#: config/tc-hppa.c:2259 config/tc-hppa.c:2265 msgid "Invalid left/right combination completer" msgstr "Combinaison de complèteur left/right invalide" -#: config/tc-hppa.c:2260 config/tc-hppa.c:2267 +#: config/tc-hppa.c:2314 config/tc-hppa.c:2321 msgid "Invalid permutation completer" msgstr "Permutation de complèteur invalide" -#: config/tc-hppa.c:2368 +#: config/tc-hppa.c:2422 +#, c-format msgid "Invalid Add Condition: %s" msgstr "Condition d'addition invalide: %s" -#: config/tc-hppa.c:2379 config/tc-hppa.c:2389 -#, c-format -msgid "Invalid Add and Branch Condition: %c" -msgstr "Condition d'addition et de branchement invalide: %c" +#: config/tc-hppa.c:2433 config/tc-hppa.c:2443 +msgid "Invalid Add and Branch Condition" +msgstr "Condition d'addition et de branchement invalide" -#: config/tc-hppa.c:2410 +#: config/tc-hppa.c:2464 config/tc-hppa.c:2602 msgid "Invalid Compare/Subtract Condition" msgstr "Condition comparaison/soustraction invalide" -#: config/tc-hppa.c:2450 +#: config/tc-hppa.c:2504 +#, c-format msgid "Invalid Bit Branch Condition: %c" msgstr "Condition de bit de branchement invalide: %c" -#: config/tc-hppa.c:2536 +#: config/tc-hppa.c:2590 #, c-format msgid "Invalid Compare/Subtract Condition: %s" msgstr "Condition comparaison/soustraction invalide: %s" -#: config/tc-hppa.c:2548 -#, c-format -msgid "Invalid Compare/Subtract Condition: %c" -msgstr "Condition comparaison/soustraction invalide: %c" - -#: config/tc-hppa.c:2563 -msgid "Invalid Compare and Branch Condition." -msgstr "Condition comparaison et de branchement invalide." +#: config/tc-hppa.c:2617 +msgid "Invalid Compare and Branch Condition" +msgstr "Condition comparaison et de branchement invalide" -#: config/tc-hppa.c:2659 +#: config/tc-hppa.c:2713 msgid "Invalid Logical Instruction Condition." msgstr "Instruction de condition logique invalide." -#: config/tc-hppa.c:2714 +#: config/tc-hppa.c:2768 msgid "Invalid Shift/Extract/Deposit Condition." msgstr "Condition décalage/extraction/dépot invalide." -#: config/tc-hppa.c:2826 +#: config/tc-hppa.c:2880 msgid "Invalid Unit Instruction Condition." msgstr "Instruction unaire (Unit) de condition invalide." -#: config/tc-hppa.c:3174 config/tc-hppa.c:3205 config/tc-hppa.c:3238 -#: config/tc-hppa.c:3270 +#: config/tc-hppa.c:3257 config/tc-hppa.c:3289 config/tc-hppa.c:3320 +#: config/tc-hppa.c:3350 msgid "Branch to unaligned address" msgstr "Branchement non aligné sur une adresse" -#: config/tc-hppa.c:3450 +#: config/tc-hppa.c:3528 msgid "Invalid SFU identifier" msgstr "Identificateur SFU invalide" -#: config/tc-hppa.c:3500 +#: config/tc-hppa.c:3578 msgid "Invalid COPR identifier" msgstr "Identificateur COPR invalide" -#: config/tc-hppa.c:3629 +#: config/tc-hppa.c:3707 msgid "Invalid Floating Point Operand Format." msgstr "Format d'opérande en virgule flottante invalide." -#: config/tc-hppa.c:3746 config/tc-hppa.c:3766 config/tc-hppa.c:3786 -#: config/tc-hppa.c:3806 config/tc-hppa.c:3826 +#: config/tc-hppa.c:3824 config/tc-hppa.c:3844 config/tc-hppa.c:3864 +#: config/tc-hppa.c:3884 config/tc-hppa.c:3904 msgid "Invalid register for single precision fmpyadd or fmpysub" msgstr "Registre invalide pour la précision simple fmpyadd ou fmpysub" -#: config/tc-hppa.c:3883 +#: config/tc-hppa.c:3961 +#, c-format msgid "Invalid operands %s" msgstr "opérandes invalides %s" -#: config/tc-hppa.c:4001 -msgid "Cannot handle fixup at %s:%d" -msgstr "Ne peut traiter le correctif à %s:%d" +#: config/tc-hppa.c:4079 +msgid "Cannot handle fixup" +msgstr "Ne peut traiter le correctif" -#: config/tc-hppa.c:4296 +#: config/tc-hppa.c:4380 msgid " -Q ignored\n" msgstr " -Q ignoré\n" -#: config/tc-hppa.c:4300 +#: config/tc-hppa.c:4384 msgid " -c print a warning if a comment is found\n" msgstr " -c avertir si un commentaire est trouver\n" -#: config/tc-hppa.c:4366 +#: config/tc-hppa.c:4455 #, c-format -msgid "no hppa_fixup entry for fixup type 0x%x at %s:%d" -msgstr "pas d'entrée hppa_fixup entry pour le coirrectif du type 0x%x à %s:%d" +msgid "no hppa_fixup entry for fixup type 0x%x" +msgstr "pas d'entrée hppa_fixup entry pour le coirrectif du type 0x%x" -#: config/tc-hppa.c:4533 +#: config/tc-hppa.c:4633 msgid "Unknown relocation encountered in md_apply_fix." msgstr "Relocalisation inconnue rencontrée dans md_apply_fix." -#: config/tc-hppa.c:4676 config/tc-hppa.c:4701 +#: config/tc-hppa.c:4775 config/tc-hppa.c:4800 #, c-format msgid "Undefined register: '%s'." msgstr "Registre indéfinie: '%s'." -#: config/tc-hppa.c:4735 +#: config/tc-hppa.c:4834 #, c-format msgid "Non-absolute symbol: '%s'." msgstr "Symbole non absolu: '%s'." -#: config/tc-hppa.c:4750 +#: config/tc-hppa.c:4849 #, c-format msgid "Undefined absolute constant: '%s'." msgstr "Constante absolue indéfinie: '%s'." -#: config/tc-hppa.c:4851 +#: config/tc-hppa.c:4950 +#, c-format msgid "Invalid FP Compare Condition: %s" msgstr "Condition de comparaison FP invalide: %s" -#: config/tc-hppa.c:4907 +#: config/tc-hppa.c:5006 #, c-format msgid "Invalid FTEST completer: %s" msgstr "Complèteur FTEST invalise: %s" -#: config/tc-hppa.c:4974 config/tc-hppa.c:5012 +#: config/tc-hppa.c:5073 config/tc-hppa.c:5111 +#, c-format msgid "Invalid FP Operand Format: %3s" msgstr "Format d'opérande FP invalide: %3s" -#: config/tc-hppa.c:5091 +#: config/tc-hppa.c:5190 msgid "Bad segment in expression." msgstr "Segment erroné dans l'expression." -#: config/tc-hppa.c:5150 +#: config/tc-hppa.c:5249 msgid "Bad segment (should be absolute)." msgstr "Segement erroné (doit être absolu)." -#: config/tc-hppa.c:5193 +#: config/tc-hppa.c:5292 +#, c-format msgid "Invalid argument location: %s\n" msgstr "Localisation invalide de l'argument: %s\n" -#: config/tc-hppa.c:5224 +#: config/tc-hppa.c:5323 +#, c-format msgid "Invalid argument description: %d" msgstr "Description invalide de l'argument: %d" -#: config/tc-hppa.c:5247 +#: config/tc-hppa.c:5346 +#, c-format msgid "Invalid Nullification: (%c)" msgstr "Nullification invalide: (%c)" -#: config/tc-hppa.c:5983 +#: config/tc-hppa.c:6066 +#, c-format msgid "Invalid .CALL argument: %s" msgstr "Argument invalide .CALL: %s" -#: config/tc-hppa.c:6114 +#: config/tc-hppa.c:6188 msgid ".callinfo is not within a procedure definition" msgstr ".callinfo n'est pas à l'intérieur de la définition de procédure" -#: config/tc-hppa.c:6134 +#: config/tc-hppa.c:6208 #, c-format msgid "FRAME parameter must be a multiple of 8: %d\n" msgstr "Paramètre FRAME doit être un multiple de 8: %d\n" -#: config/tc-hppa.c:6153 +#: config/tc-hppa.c:6227 msgid "Value for ENTRY_GR must be in the range 3..18\n" msgstr "Valeur de ENTRY_GR doit être dans la plage 3..18\n" -#: config/tc-hppa.c:6165 +#: config/tc-hppa.c:6239 msgid "Value for ENTRY_FR must be in the range 12..21\n" msgstr "Valeur de ENTRY_FR doit être dans la plage 12..21\n" -#: config/tc-hppa.c:6175 +#: config/tc-hppa.c:6249 msgid "Value for ENTRY_SR must be 3\n" msgstr "Valeur de ENTRY_SR doit être 3\n" -#: config/tc-hppa.c:6231 +#: config/tc-hppa.c:6305 +#, c-format msgid "Invalid .CALLINFO argument: %s" msgstr "Argument à .CALLINFO invalide: %s" -#: config/tc-hppa.c:6342 +#: config/tc-hppa.c:6416 msgid "The .ENTER pseudo-op is not supported" msgstr "Le pseudo-op .ENTER n'est pas supporté" -#: config/tc-hppa.c:6358 +#: config/tc-hppa.c:6432 msgid "Misplaced .entry. Ignored." msgstr ".entry mal positionné. Ignoré." -#: config/tc-hppa.c:6362 +#: config/tc-hppa.c:6436 msgid "Missing .callinfo." msgstr ".callinfo manquant." -#: config/tc-hppa.c:6426 +#: config/tc-hppa.c:6502 msgid ".REG expression must be a register" msgstr "Expression .REG doit être un registre" -#: config/tc-hppa.c:6442 read.c:4728 +#: config/tc-hppa.c:6518 msgid "bad or irreducible absolute expression; zero assumed" msgstr "expression absolue erronée ou irréductible; zéro assumé" -#: config/tc-hppa.c:6453 +#: config/tc-hppa.c:6529 msgid ".REG must use a label" msgstr ".REG doit avoir une étiquette" -#: config/tc-hppa.c:6455 +#: config/tc-hppa.c:6531 msgid ".EQU must use a label" msgstr ".EQU doit avoir une étiquette" -#: config/tc-hppa.c:6508 +#: config/tc-hppa.c:6584 msgid ".EXIT must appear within a procedure" msgstr ".EXIT doit apparaître à l'intérieur d'une procédure" -#: config/tc-hppa.c:6512 +#: config/tc-hppa.c:6588 msgid "Missing .callinfo" msgstr ".callinfo manquant" -#: config/tc-hppa.c:6516 +#: config/tc-hppa.c:6592 msgid "No .ENTRY for this .EXIT" msgstr "Pas de .ENTRY pour ce .EXIT" -#: config/tc-hppa.c:6543 +#: config/tc-hppa.c:6619 +#, c-format msgid "Cannot define export symbol: %s\n" msgstr "Ne peut définit un symbole d'exportation: %s\n" -#: config/tc-hppa.c:6601 +#: config/tc-hppa.c:6677 #, c-format msgid "Using ENTRY rather than CODE in export directive for %s" msgstr "Utilise ENTRY plutôt que CODE dans la directive d'exportation pour %s" -#: config/tc-hppa.c:6718 +#: config/tc-hppa.c:6794 #, c-format msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s" msgstr "Argument .EXPORT/.IMPORT non défini (ignoré): %s" -#: config/tc-hppa.c:6800 +#: config/tc-hppa.c:6876 msgid "Missing label name on .LABEL" msgstr "Nom d'étiquette manquant pour .LABEL" -#: config/tc-hppa.c:6805 +#: config/tc-hppa.c:6881 msgid "extra .LABEL arguments ignored." msgstr "arguments superflues pour .LABEL sont ignorés." -#: config/tc-hppa.c:6822 +#: config/tc-hppa.c:6898 msgid "The .LEAVE pseudo-op is not supported" msgstr "Le pseudo-op .LEAVE n'est pas supporté" -#: config/tc-hppa.c:6861 +#: config/tc-hppa.c:6937 msgid "Unrecognized .LEVEL argument\n" msgstr "Argument .LEVEL non reconnu\n" -#: config/tc-hppa.c:6897 +#: config/tc-hppa.c:6973 +#, c-format msgid "Cannot define static symbol: %s\n" msgstr "Ne peut définir le symbole statique: %s\n" -#: config/tc-hppa.c:6932 +#: config/tc-hppa.c:7008 msgid "Nested procedures" msgstr "Procédure imbriquées" -#: config/tc-hppa.c:6942 MRO +#: config/tc-hppa.c:7018 msgid "Cannot allocate unwind descriptor\n" msgstr "Ne peut allouer un descripteur non étendu\n" -#: config/tc-hppa.c:7040 +#: config/tc-hppa.c:7118 msgid "misplaced .procend" msgstr ".procend mal positionné" -#: config/tc-hppa.c:7043 +#: config/tc-hppa.c:7121 msgid "Missing .callinfo for this procedure" msgstr ".callinfo manquant pour cette procédure" -#: config/tc-hppa.c:7046 +#: config/tc-hppa.c:7124 msgid "Missing .EXIT for a .ENTRY" msgstr ".EXIT manquant pour un .ENTRY" -#: config/tc-hppa.c:7084 +#: config/tc-hppa.c:7162 msgid "Not in a space.\n" msgstr "N'est pas dans l'espace.\n" -#: config/tc-hppa.c:7087 +#: config/tc-hppa.c:7165 msgid "Not in a subspace.\n" msgstr "N'est pas dans le sous-espace.\n" -#: config/tc-hppa.c:7178 +#: config/tc-hppa.c:7256 msgid "Invalid .SPACE argument" msgstr "Argument .SPACE invalide" -#: config/tc-hppa.c:7225 +#: config/tc-hppa.c:7303 msgid "Can't change spaces within a procedure definition. Ignored" msgstr "Ne peut changes les espace à l'intérieur d'une définition de procédure. Ignoré" -#: config/tc-hppa.c:7354 +#: config/tc-hppa.c:7432 #, c-format msgid "Undefined space: '%s' Assuming space number = 0." msgstr "Espace indéfini: '%s' Numéro d'espace assumé = 0." -#: config/tc-hppa.c:7378 +#: config/tc-hppa.c:7456 msgid "Must be in a space before changing or declaring subspaces.\n" msgstr "Doit être dans un espace avant de changer ou déclarer des sous-espaces.\n" -#: config/tc-hppa.c:7382 +#: config/tc-hppa.c:7460 msgid "Can't change subspaces within a procedure definition. Ignored" msgstr "Ne peut modifier des sous-espaces à l'intéieur de la définitin d'une procédure. Ignoré" -#: config/tc-hppa.c:7417 +#: config/tc-hppa.c:7495 msgid "Parameters of an existing subspace can't be modified" msgstr "Paramètres de sous-espaces existants ne peuvent être modifiés" -#: config/tc-hppa.c:7468 +#: config/tc-hppa.c:7546 msgid "Alignment must be a power of 2" msgstr "Alignement doit être une puissance de 2" -#: config/tc-hppa.c:7510 +#: config/tc-hppa.c:7588 msgid "FIRST not supported as a .SUBSPACE argument" msgstr "FIRST n'est pas supporté comme un argument pour .SUBSPACE" -#: config/tc-hppa.c:7512 +#: config/tc-hppa.c:7590 msgid "Invalid .SUBSPACE argument" msgstr "argument .SUBSPACE invallide" -#: config/tc-hppa.c:7692 +#: config/tc-hppa.c:7770 +#, c-format msgid "Internal error: Unable to find containing space for %s." msgstr "Erreur interne: incapable de repérer l'espace contenu pour %s." -#: config/tc-hppa.c:7731 +#: config/tc-hppa.c:7809 #, c-format msgid "Out of memory: could not allocate new space chain entry: %s\n" msgstr "Mémoire épuisé: ne peut allouer un nouvel espace pour une entrée de chaîne: %s\n" -#: config/tc-hppa.c:7817 +#: config/tc-hppa.c:7895 #, c-format msgid "Out of memory: could not allocate new subspace chain entry: %s\n" msgstr "Mémoire épuisé: ne peut allouer un nouvel sous-espace pour une entrée de chaîne: %s\n" -#: config/tc-hppa.c:8511 +#: config/tc-hppa.c:8589 #, c-format msgid "Symbol '%s' could not be created." msgstr "Symbole '%s' n'a pu être créé." -#: config/tc-hppa.c:8515 +#: config/tc-hppa.c:8593 msgid "No memory for symbol name." msgstr "Pas de mémoire pour le nom de symbole." -#: config/tc-i386.c:581 +#: config/tc-i386.c:594 +#, c-format msgid "%s shortened to %s" msgstr "%s réduit à %s" -#: config/tc-i386.c:636 +#: config/tc-i386.c:649 msgid "same type of prefix used twice" msgstr "même type de préfixe utilisé deux fois" -#: config/tc-i386.c:654 +#: config/tc-i386.c:667 msgid "64bit mode not supported on this CPU." msgstr "mode 64 bits n'est pas supporté sur ce CPU" -#: config/tc-i386.c:658 +#: config/tc-i386.c:671 msgid "32bit mode not supported on this CPU." msgstr "mode 32 bits n'est pas supporté sur ce CPU" -#: config/tc-i386.c:691 +#: config/tc-i386.c:704 msgid "bad argument to syntax directive." msgstr "mauvais argument pour la directive de syntaxe" -#: config/tc-i386.c:734 +#: config/tc-i386.c:748 +#, c-format msgid "no such architecture: `%s'" msgstr "pas de telle architecture: %s" -#: config/tc-i386.c:739 +#: config/tc-i386.c:753 msgid "missing cpu architecture" msgstr "architecture cpu manquante" -#: config/tc-i386.c:812 config/tc-i386.c:835 config/tc-m68k.c:3802 +#: config/tc-i386.c:767 +#, c-format +msgid "no such architecture modifier: `%s'" +msgstr "pas de telle modificateur d'architecture: `%s'" + +#: config/tc-i386.c:821 config/tc-i386.c:4628 +msgid "Unknown architecture" +msgstr "architecture inconnue" + +#: config/tc-i386.c:856 config/tc-i386.c:879 config/tc-m68k.c:3826 +#, c-format msgid "Internal Error: Can't hash %s: %s" msgstr "Erreur interne: ne peut adresser par hachage %s: %s" -#: config/tc-i386.c:1088 +#: config/tc-i386.c:1132 msgid "There are no unsigned pc-relative relocations" msgstr "Il n'y a pas de relocalisations relatives au PC non signées" -#: config/tc-i386.c:1095 config/tc-i386.c:4622 +#: config/tc-i386.c:1139 config/tc-i386.c:4827 #, c-format msgid "can not do %d byte pc-relative relocation" msgstr "ne peut faire une relocalisation relative au PC de %d octets" -#: config/tc-i386.c:1112 +#: config/tc-i386.c:1156 #, c-format msgid "can not do %s %d byte relocation" msgstr "ne peut faire une relocalisation %s %d octets" -#: config/tc-i386.c:1221 config/tc-i386.c:1314 +#: config/tc-i386.c:1263 config/tc-i386.c:1357 #, c-format msgid "no such instruction: `%s'" msgstr "pas de telle instruction: `%s'" -#: config/tc-i386.c:1230 +#: config/tc-i386.c:1273 config/tc-i386.c:1389 #, c-format msgid "invalid character %s in mnemonic" msgstr "caractère invalide %s dans la mnémonique" -#: config/tc-i386.c:1237 +#: config/tc-i386.c:1280 msgid "expecting prefix; got nothing" msgstr "préfixe attendu; n'a rien obtenu" -#: config/tc-i386.c:1239 +#: config/tc-i386.c:1282 msgid "expecting mnemonic; got nothing" msgstr "mnémonique attendue; n'a rien obtenu" -#: config/tc-i386.c:1257 +#: config/tc-i386.c:1300 #, c-format msgid "redundant %s prefix" msgstr "préfixe %s redondant" -#: config/tc-i386.c:1325 +#: config/tc-i386.c:1398 +#, c-format msgid "`%s' is not supported on `%s'" msgstr "`%s' n'est pas supporté sur `%s'" -#: config/tc-i386.c:1330 +#: config/tc-i386.c:1403 msgid "use .code16 to ensure correct addressing mode" msgstr "utilise .code16 pour assurer un mode d'adressage correct" -#: config/tc-i386.c:1338 +#: config/tc-i386.c:1410 #, c-format msgid "expecting string instruction after `%s'" msgstr "chaîne d'instruction attendue après `%s'" -#: config/tc-i386.c:1359 +#: config/tc-i386.c:1431 #, c-format msgid "invalid character %s before operand %d" msgstr "caractère ivalide %s avant l'opérande %d" -#: config/tc-i386.c:1373 +#: config/tc-i386.c:1445 #, c-format msgid "unbalanced parenthesis in operand %d." msgstr "parenthèses non pairées dans l'éopérande %d." -#: config/tc-i386.c:1376 +#: config/tc-i386.c:1448 #, c-format msgid "unbalanced brackets in operand %d." msgstr "crochets non pairés dans l'opérande %d." -#: config/tc-i386.c:1385 +#: config/tc-i386.c:1457 #, c-format msgid "invalid character %s in operand %d" msgstr "caractère invalide %s dans l'opérande %d" -#: config/tc-i386.c:1412 +#: config/tc-i386.c:1484 #, c-format msgid "spurious operands; (%d operands/instruction max)" msgstr "fausses opérandes; (%d opérandes/instructions au maximum)" -#: config/tc-i386.c:1435 +#: config/tc-i386.c:1507 msgid "expecting operand after ','; got nothing" msgstr "opérande attendue après ','; n'a rien obtenu" -#: config/tc-i386.c:1440 +#: config/tc-i386.c:1512 msgid "expecting operand before ','; got nothing" msgstr "opérande attendue avant ','; n'a rien obtenu" #. We found no match. -#: config/tc-i386.c:1782 +#: config/tc-i386.c:1856 #, c-format msgid "suffix or operands invalid for `%s'" msgstr "suffixe ou opérande invalide pour `%s'" -#: config/tc-i386.c:1793 +#: config/tc-i386.c:1867 #, c-format msgid "indirect %s without `*'" msgstr "indirect %s sans `*'" #. Warn them that a data or address size prefix doesn't #. affect assembly of the next line of code. -#: config/tc-i386.c:1801 +#: config/tc-i386.c:1875 #, c-format msgid "stand-alone `%s' prefix" msgstr "préfixe `%s' autonome" -#: config/tc-i386.c:1837 config/tc-i386.c:1852 +#: config/tc-i386.c:1911 config/tc-i386.c:1926 +#, c-format msgid "`%s' operand %d must use `%%es' segment" msgstr "`%s' opérande %d doit utiliser le segment `%%es'" -#: config/tc-i386.c:1867 -msgid "Extended register `%%%s' available only in 64bit mode." -msgstr "Registre étendu `%%%s' disponible seulement en mode 64 bits." - #. Prohibit these changes in the 64bit mode, since #. the lowering is more complicated. -#: config/tc-i386.c:1938 config/tc-i386.c:1989 config/tc-i386.c:2004 -#: config/tc-i386.c:2032 config/tc-i386.c:2060 +#: config/tc-i386.c:1999 config/tc-i386.c:2053 config/tc-i386.c:2068 +#: config/tc-i386.c:2096 config/tc-i386.c:2124 +#, c-format msgid "Incorrect register `%%%s' used with`%c' suffix" msgstr "Registre incorrect `%%%s' utilisé avec le suffixe `%c'" -#: config/tc-i386.c:1944 config/tc-i386.c:1994 config/tc-i386.c:2065 +#: config/tc-i386.c:2005 config/tc-i386.c:2058 config/tc-i386.c:2129 +#, c-format msgid "using `%%%s' instead of `%%%s' due to `%c' suffix" msgstr "utilise `%%%s' au lieu de `%%%s' en raison du suffixe `%c'" -#: config/tc-i386.c:1957 config/tc-i386.c:1975 config/tc-i386.c:2019 -#: config/tc-i386.c:2046 +#: config/tc-i386.c:2021 config/tc-i386.c:2039 config/tc-i386.c:2083 +#: config/tc-i386.c:2110 +#, c-format msgid "`%%%s' not allowed with `%s%c'" msgstr "`%%%s' n'est pas permis avec `%s%c'" -#: config/tc-i386.c:2106 +#: config/tc-i386.c:2170 msgid "no instruction mnemonic suffix given; can't determine immediate size" msgstr "aucun suffixe de mnémonique d'instruction fourni; ne peut déterminer la taille de l'immédiat" -#: config/tc-i386.c:2132 +#: config/tc-i386.c:2196 #, c-format msgid "no instruction mnemonic suffix given; can't determine immediate size %x %c" msgstr "aucun suffixe de mnémonique d'instruction fourni; ne peut déterminer la taille de l'immédiat %x %c" -#: config/tc-i386.c:2157 +#: config/tc-i386.c:2221 msgid "no instruction mnemonic suffix given and no register operands; can't size instruction" msgstr "" "aucun suffixe de mnémonique d'instruction fourni et pas d'opérandes registre;\n" "ne peut déterminer la taille de l'instruction" -#: config/tc-i386.c:2205 +#: config/tc-i386.c:2269 msgid "64bit operations available only in 64bit modes." msgstr "opérations 64 bits disponibles seulement en mode 64 bits." #. Reversed arguments on faddp, fsubp, etc. -#: config/tc-i386.c:2273 +#: config/tc-i386.c:2337 +#, c-format msgid "translating to `%s %%%s,%%%s'" msgstr "traduction à `%s %%%s,%%%s'" #. Extraneous `l' suffix on fp insn. -#: config/tc-i386.c:2280 +#: config/tc-i386.c:2344 +#, c-format msgid "translating to `%s %%%s'" msgstr "traduction à `%s %%%s'" -#: config/tc-i386.c:2551 +#: config/tc-i386.c:2617 +#, c-format msgid "you can't `pop %%cs'" msgstr "vous ne pouvez pas utiliser `pop %%cs'" #. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc. -#: config/tc-i386.c:2584 +#: config/tc-i386.c:2650 #, c-format msgid "translating to `%sp'" msgstr "traduction à `%sp'" -#: config/tc-i386.c:2627 +#: config/tc-i386.c:2693 +#, c-format msgid "Can't encode registers '%%%s' in the instruction requiring REX prefix.\n" msgstr "Ne peut encoder les registres '%%%s' dans l'instruction nécessitant le préfixe REX.\n" -#: config/tc-i386.c:2679 config/tc-i386.c:2751 config/tc-i386.c:2798 +#: config/tc-i386.c:2755 config/tc-i386.c:2845 config/tc-i386.c:2881 msgid "skipping prefixes on this instruction" msgstr "escamotage des préfixes sur cette instruction" -#: config/tc-i386.c:2819 +#: config/tc-i386.c:2901 msgid "16-bit jump out of range" msgstr "saut de 16 bits hors gamme" -#: config/tc-i386.c:2828 +#: config/tc-i386.c:2910 +#, c-format msgid "can't handle non absolute segment in `%s'" msgstr "ne peut traiter un segment non absolu dans `%s'" -#: config/tc-i386.c:3085 +#: config/tc-i386.c:3217 +#, c-format +msgid "@%s reloc is not supported in %s bit mode" +msgstr "relocalisation @%s n'est pas supporté en mode %s bits" + +#: config/tc-i386.c:3293 msgid "only 1 or 2 immediate operands are allowed" msgstr "seulement les opérandes immédiates 1 ou 2 sont permises" -#: config/tc-i386.c:3115 config/tc-i386.c:3353 -msgid "GOT relocations not supported in 16 bit mode" -msgstr "relocalisation GOT n'est pas supporté enmode 16 bits" - -#: config/tc-i386.c:3152 config/tc-i386.c:3389 -msgid "bad reloc specifier in expression" -msgstr "spécificateur de relocalisation erroné dans l'expression" - -#: config/tc-i386.c:3170 config/tc-i386.c:3424 +#: config/tc-i386.c:3316 config/tc-i386.c:3504 #, c-format -msgid "ignoring junk `%s' after expression" -msgstr "ignoré les rebuts `%s' après l'expression" +msgid "junk `%s' after expression" +msgstr "rebuts `%s' après l'expression" #. Missing or bad expr becomes absolute 0. -#: config/tc-i386.c:3177 +#: config/tc-i386.c:3327 #, c-format msgid "missing or invalid immediate expression `%s' taken as 0" msgstr "expression immédiate invalide ou manquante `%s' prise alors pour 0" -#: config/tc-i386.c:3208 config/tc-i386.c:3454 +#: config/tc-i386.c:3358 config/tc-i386.c:3565 #, c-format msgid "unimplemented segment %s in operand" msgstr "segment non implanté %s dans l'opérande" -#: config/tc-i386.c:3210 config/tc-i386.c:3456 +#: config/tc-i386.c:3360 config/tc-i386.c:3567 #, c-format msgid "unimplemented segment type %d in operand" msgstr "type de segment non implanté %d dans l'opérande" -#: config/tc-i386.c:3252 config/tc-i386.c:5392 +#: config/tc-i386.c:3404 config/tc-i386.c:5588 #, c-format msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'" msgstr "facteur d'échelle attendu de 1, 2, 4, ou 8: a obtenu `%s'" -#: config/tc-i386.c:3258 +#: config/tc-i386.c:3411 #, c-format msgid "scale factor of %d without an index register" msgstr "facteur d'échelle de %d sans registre d'index" +#: config/tc-i386.c:3524 +#, c-format +msgid "bad expression used with @%s" +msgstr "expression erronée utilisé avec @%s" + #. Missing or bad expr becomes absolute 0. -#: config/tc-i386.c:3435 +#: config/tc-i386.c:3546 #, c-format msgid "missing or invalid displacement expression `%s' taken as 0" msgstr "expression de déplacement invalide ou manquante `%s' alors 0 assumé" -#: config/tc-i386.c:3541 +#: config/tc-i386.c:3652 +#, c-format msgid "`%s' is not a valid base/index expression" msgstr "`%s' n'est pas une expression de base/index valide" -#: config/tc-i386.c:3545 +#: config/tc-i386.c:3656 #, c-format msgid "`%s' is not a valid %s bit base/index expression" msgstr "`%s' n'est pas une expression de base/index valide de %s bits" -#: config/tc-i386.c:3620 +#: config/tc-i386.c:3731 +#, c-format msgid "bad memory operand `%s'" msgstr "opérande mémoire erronée `%s'" -#: config/tc-i386.c:3635 +#: config/tc-i386.c:3746 #, c-format msgid "junk `%s' after register" msgstr "rebut `%s' après le registre" -#: config/tc-i386.c:3644 config/tc-i386.c:3759 config/tc-i386.c:3795 +#: config/tc-i386.c:3755 config/tc-i386.c:3870 config/tc-i386.c:3908 +#, c-format msgid "bad register name `%s'" msgstr "mauvais nom de registre `%s'" -#: config/tc-i386.c:3652 +#: config/tc-i386.c:3763 msgid "immediate operand illegal with absolute jump" msgstr "opérande immédiate illégale avec un saut absolu" -#: config/tc-i386.c:3674 +#: config/tc-i386.c:3785 #, c-format msgid "too many memory references for `%s'" msgstr "trop de références en mémoire pour `%s'" -#: config/tc-i386.c:3752 +#: config/tc-i386.c:3863 #, c-format msgid "expecting `,' or `)' after index register in `%s'" msgstr "attendu `,' ou `)' après le registre d'index dans `%s'" -#: config/tc-i386.c:3774 +#: config/tc-i386.c:3887 #, c-format msgid "expecting `)' after scale factor in `%s'" msgstr "attendu `)' après le facteur d'échelle dans `%s'" -#: config/tc-i386.c:3781 +#: config/tc-i386.c:3894 #, c-format msgid "expecting index register or scale factor after `,'; got '%c'" msgstr "attendu un registre d'index ou un facteur d'échelle après `,'; a obtenu '%c'" -#: config/tc-i386.c:3788 +#: config/tc-i386.c:3901 #, c-format msgid "expecting `,' or `)' after base register in `%s'" msgstr "attendu `,' ou `)' après le registre de base dans `%s'" #. It's not a memory operand; argh! -#: config/tc-i386.c:3829 +#: config/tc-i386.c:3942 #, c-format msgid "invalid char %s beginning operand %d `%s'" msgstr "caractère invalide %s au débutde l'opérande %d `%s'" -#: config/tc-i386.c:4267 +#: config/tc-i386.c:4117 +msgid "long jump required" +msgstr "long saut (jump) requis" + +#: config/tc-i386.c:4417 msgid "Bad call to md_atof ()" msgstr "Appel erroné à md_atof ()" -#: config/tc-i386.c:4431 config/tc-sparc.c:548 -#, c-format -msgid "No compiled in support for %d bit object file format" -msgstr "N'est pas compilé pour le support de format de fichier objet de %d bits" +#: config/tc-i386.c:4581 +msgid "No compiled in support for x86_64" +msgstr "Pas compilé pour le support pour x86_64" -#: config/tc-i386.c:4449 +#: config/tc-i386.c:4602 msgid "" " -Q ignored\n" " -V print assembler version number\n" @@ -3599,62 +3875,64 @@ msgstr "" " -q ne pas produire d'avertissements\n" " -s ignoré\n" -#: config/tc-i386.c:4456 +#: config/tc-i386.c:4609 msgid " -q quieten some warnings\n" msgstr " -q ne pas produire d'avertissement\n" -#: config/tc-i386.c:4475 -msgid "Unknown architecture" -msgstr "architecture inconnue" - -#: config/tc-i386.c:4515 +#: config/tc-i386.c:4710 config/tc-s390.c:1592 msgid "GOT already in symbol table" msgstr "GOT est déjà dans la table de symboles" -#: config/tc-i386.c:4636 +#: config/tc-i386.c:4842 #, c-format msgid "can not do %d byte relocation" msgstr "ne peut relocaliser %d octets" -#: config/tc-i386.c:4697 +#: config/tc-i386.c:4894 config/tc-s390.c:1957 +#, c-format msgid "cannot represent relocation type %s" msgstr "ne peut représenter le type de relocalisation %s" -#: config/tc-i386.c:4994 +#: config/tc-i386.c:5190 #, c-format msgid "too many memory references for '%s'" msgstr "trop de références mémoire pour `%s'" -#: config/tc-i386.c:5157 +#: config/tc-i386.c:5353 +#, c-format msgid "Unknown operand modifier `%s'\n" msgstr "modificateur d'opérande inconnu `%s'\n" -#: config/tc-i386.c:5364 +#: config/tc-i386.c:5560 +#, c-format msgid "`%s' is not a valid segment register" msgstr "`%s' n'est pas un registre de segment valide" -#: config/tc-i386.c:5374 config/tc-i386.c:5495 +#: config/tc-i386.c:5570 config/tc-i386.c:5691 msgid "Register scaling only allowed in memory operands." msgstr "Registre d'échelle seulement permis dans les opérandes en mémoire" -#: config/tc-i386.c:5405 +#: config/tc-i386.c:5601 msgid "Too many register references in memory operand.\n" msgstr "Trop de références registre dans l'opérande mémoire.\n" -#: config/tc-i386.c:5474 +#: config/tc-i386.c:5670 #, c-format msgid "Syntax error. Expecting a constant. Got `%s'.\n" msgstr "Erreur de syntaxe. Attendait une constante. A obtenu `%s'.\n" -#: config/tc-i386.c:5544 +#: config/tc-i386.c:5740 +#, c-format msgid "Unrecognized token '%s'" msgstr "Jeton non reconnu '%s'" -#: config/tc-i386.c:5561 +#: config/tc-i386.c:5757 +#, c-format msgid "Unexpected token `%s'\n" msgstr "Jeton attendu `%s'\n" -#: config/tc-i386.c:5705 +#: config/tc-i386.c:5901 +#, c-format msgid "Unrecognized token `%s'\n" msgstr "Jeton non reconnnu `%s'\n" @@ -3662,7 +3940,8 @@ msgstr "Jeton non reconnnu `%s'\n" msgid "Unknown temporary pseudo register" msgstr "Pseudo registre temporaire inconnu" -#: config/tc-i860.c:181 config/tc-mips.c:1027 +#: config/tc-i860.c:181 config/tc-mips.c:1248 +#, c-format msgid "internal error: can't hash `%s': %s\n" msgstr "Erreur interne: ne peut adresser par hachage `%s': %s\n" @@ -3673,11 +3952,12 @@ msgstr "Assembleur défectueux. Aucune te #: config/tc-i860.c:347 #, c-format msgid "Expanded opcode after delayed branch: `%s'" -msgstr "Code-op étendu après un branchement retardé: `%s'" +msgstr "opcode étendu après un branchement retardé: `%s'" #: config/tc-i860.c:351 +#, c-format msgid "Expanded opcode in dual mode: `%s'" -msgstr "Expansion du code-op en mode dual: `%s'" +msgstr "Expansion du opcode en mode dual: `%s'" #: config/tc-i860.c:355 #, c-format @@ -3693,10 +3973,11 @@ msgid "Assembler does not yet support PI msgstr "Assembleu be supporte pas encore PIC" #: config/tc-i860.c:849 +#, c-format msgid "Illegal operands for %s" msgstr "opérandes illégales pour %s" -#: config/tc-i860.c:873 config/tc-sparc.c:2730 +#: config/tc-i860.c:873 config/tc-sparc.c:2731 msgid "bad segment" msgstr "segment erroné" @@ -3755,51 +4036,54 @@ msgstr "immédiate de 5 bits trop grande" msgid "5-bit field must be absolute" msgstr "champ de 5 bits doit être absolu" -#: config/tc-i860.c:1306 config/tc-i860.c:1329 +#: config/tc-i860.c:1305 config/tc-i860.c:1328 msgid "A branch offset requires 0 MOD 4 alignment" msgstr "Un décalage de branchement requiert un alignement 0 MOD 4" -#: config/tc-i860.c:1350 +#: config/tc-i860.c:1349 +#, c-format msgid "Unrecognized fix-up (0x%08x)" msgstr "Forme de correctif non reconnu (0x%08x)" -#: config/tc-i860.h:82 +#: config/tc-i860.h:80 msgid "i860_convert_frag\n" msgstr "i860_convert_frag\n" -#: config/tc-i960.c:549 +#: config/tc-i960.c:550 #, c-format msgid "Hashing returned \"%s\"." msgstr "La fonction de hachage a retourné \"%s\"." #. Offset of last character in opcode mnemonic -#: config/tc-i960.c:583 +#: config/tc-i960.c:584 msgid "branch prediction invalid on this opcode" -msgstr "prédiction de branchement invalide pour ce code-op" +msgstr "prédiction de branchement invalide pour ce opcode" -#: config/tc-i960.c:623 +#: config/tc-i960.c:624 +#, c-format msgid "invalid opcode, \"%s\"." -msgstr "code-op invalide, \"%s\"." +msgstr "opcode invalide, \"%s\"." -#: config/tc-i960.c:628 +#: config/tc-i960.c:629 #, c-format msgid "improper number of operands. expecting %d, got %d" msgstr "nombre incorrect d'opérandes. Attendait %d, a obtenu %d" -#: config/tc-i960.c:860 +#: config/tc-i960.c:861 #, c-format msgid "Fixup of %ld too large for field width of %d" msgstr "Correctif de %ld trop grand pour la largeur du champ de %d" -#: config/tc-i960.c:977 +#: config/tc-i960.c:978 +#, c-format msgid "invalid architecture %s" msgstr "architecture invalide %s" -#: config/tc-i960.c:997 +#: config/tc-i960.c:998 msgid "I960 options:\n" msgstr "Options I960:\n" -#: config/tc-i960.c:1000 +#: config/tc-i960.c:1001 msgid "" "\n" "\t\t\tspecify variant of 960 architecture\n" @@ -3817,201 +4101,206 @@ msgstr "" "-no-relax ne pas altérer les instructions comparer-et-aiguiller pour\n" " les longs déplacements\n" -#: config/tc-i960.c:1403 +#: config/tc-i960.c:1404 msgid "too many operands" msgstr "trop d'opérandes" -#: config/tc-i960.c:1462 config/tc-i960.c:1689 +#: config/tc-i960.c:1463 config/tc-i960.c:1690 msgid "expression syntax error" msgstr "erreur de syntaxe dans l'expression" -#: config/tc-i960.c:1500 +#: config/tc-i960.c:1501 msgid "attempt to branch into different segment" msgstr "tentative de branchement dans un segment différent" -#: config/tc-i960.c:1504 +#: config/tc-i960.c:1505 #, c-format msgid "target of %s instruction must be a label" msgstr "cible de l'instruction %s doit être une étiquette" -#: config/tc-i960.c:1543 +#: config/tc-i960.c:1544 msgid "unmatched '['" msgstr "'[' non pairé" -#: config/tc-i960.c:1554 +#: config/tc-i960.c:1555 msgid "garbage after index spec ignored" msgstr "rabiut après la spécification d'index ignoré" #. We never moved: there was no opcode either! -#: config/tc-i960.c:1620 +#: config/tc-i960.c:1621 msgid "missing opcode" -msgstr "code-op manquant" - -#: config/tc-i960.c:1923 -msgid "invalid constant" -msgstr "constante invalide" +msgstr "opcode manquant" -#: config/tc-i960.c:2035 +#: config/tc-i960.c:2036 msgid "invalid index register" msgstr "registre d'index invalide" -#: config/tc-i960.c:2058 +#: config/tc-i960.c:2059 msgid "invalid scale factor" msgstr "facteur d'échelle invalide" -#: config/tc-i960.c:2241 +#: config/tc-i960.c:2242 msgid "unaligned register" msgstr "registre non aligné" -#: config/tc-i960.c:2264 +#: config/tc-i960.c:2265 msgid "no such sfr in this architecture" msgstr "pas de tel 'sfr' pour cette architecture" -#: config/tc-i960.c:2302 +#: config/tc-i960.c:2303 msgid "illegal literal" msgstr "litéral illégal" #. Should not happen: see block comment above -#: config/tc-i960.c:2532 +#: config/tc-i960.c:2533 #, c-format msgid "Trying to 'bal' to %s" msgstr "Tentative de 'bal' vers %s" -#: config/tc-i960.c:2543 +#: config/tc-i960.c:2544 msgid "Looks like a proc, but can't tell what kind.\n" msgstr "Ressemble à une procédure, mais ne peut dire de quel genre.\n" -#: config/tc-i960.c:2574 +#: config/tc-i960.c:2575 msgid "should have 1 or 2 operands" msgstr "devrait avoir 1 ou 2 opérandes" -#: config/tc-i960.c:2583 config/tc-i960.c:2602 +#: config/tc-i960.c:2584 config/tc-i960.c:2603 #, c-format msgid "Redefining leafproc %s" msgstr "Redéfinition leafproc %s" -#: config/tc-i960.c:2633 +#: config/tc-i960.c:2634 msgid "should have two operands" msgstr "devrait avoir deux opérandes" -#: config/tc-i960.c:2643 +#: config/tc-i960.c:2644 msgid "'entry_num' must be absolute number in [0,31]" msgstr "'entry_num' doit être un nombre absolu dans [0,31]" -#: config/tc-i960.c:2652 +#: config/tc-i960.c:2653 #, c-format msgid "Redefining entrynum for sysproc %s" msgstr "Redéfinition entrynum pour sysproc %s" -#: config/tc-i960.c:2759 +#: config/tc-i960.c:2760 msgid "architecture of opcode conflicts with that of earlier instruction(s)" -msgstr "conflit de code-op d'architecture avec ceux d'instructions déjà définies" +msgstr "conflit de opcode d'architecture avec ceux d'instructions déjà définies" -#: config/tc-i960.c:2780 +#: config/tc-i960.c:2781 msgid "big endian mode is not supported" msgstr "système à octets de poids fort n'est pas supporté" -#: config/tc-i960.c:2782 +#: config/tc-i960.c:2783 +#, c-format msgid "ignoring unrecognized .endian type `%s'" msgstr "type de système à octets non reconnu dans .endian `%s'" -#: config/tc-i960.c:3064 +#: config/tc-i960.c:3055 #, c-format msgid "leafproc symbol '%s' undefined" msgstr "symbole leafproc '%s' est indéfini" -#: config/tc-i960.c:3074 +#: config/tc-i960.c:3065 #, c-format msgid "Warning: making leafproc entries %s and %s both global\n" msgstr "AVERTISSEMENT: créer des entrées 'leafproc' %s et %s toutes les 2 globales\n" -#: config/tc-i960.c:3183 +#: config/tc-i960.c:3174 msgid "option --link-relax is only supported in b.out format" msgstr "L'option --link-relax est seulement supporté dans le format b.out" -#: config/tc-i960.c:3226 +#: config/tc-i960.c:3217 write.c:2670 msgid "callj to difference of two symbols" msgstr "appel de callj pour différencier deux symboles" -#: config/tc-ia64.c:4077 +#: config/tc-ia64.c:1052 +msgid "Unwind directive not followed by an instruction." +msgstr "directive unwind n'est pas suivie d'une instruction." + +#: config/tc-ia64.c:4416 msgid "Register name expected" msgstr "Nom de registre attendu" -#: config/tc-ia64.c:4082 config/tc-ia64.c:4368 +#: config/tc-ia64.c:4421 config/tc-ia64.c:4707 msgid "Comma expected" msgstr "Virgule attendu" -#: config/tc-ia64.c:4090 +#: config/tc-ia64.c:4429 msgid "Register value annotation ignored" msgstr "Annotation de valeur de registre ignorée" -#: config/tc-ia64.c:4114 +#: config/tc-ia64.c:4453 msgid "Directive invalid within a bundle" msgstr "Directive invalide à l'intérieur du paquet" -#: config/tc-ia64.c:4181 +#: config/tc-ia64.c:4520 msgid "Missing predicate relation type" msgstr "Type de relation de prédicact manquant" -#: config/tc-ia64.c:4197 +#: config/tc-ia64.c:4536 msgid "Unrecognized predicate relation type" msgstr "Type de relation de prédicat non reconnu" -#: config/tc-ia64.c:4217 config/tc-ia64.c:4242 +#: config/tc-ia64.c:4556 config/tc-ia64.c:4581 msgid "Predicate register expected" msgstr "Registre de prédicat attendu" -#: config/tc-ia64.c:4229 +#: config/tc-ia64.c:4568 msgid "Duplicate predicate register ignored" msgstr "Prédicat de registre en double ignoré" -#: config/tc-ia64.c:4251 +#: config/tc-ia64.c:4590 msgid "Bad register range" msgstr "Gamme de registre erronée" -#: config/tc-ia64.c:4279 +#: config/tc-ia64.c:4618 msgid "Predicate source and target required" msgstr "Prédicat source et cible requis" -#: config/tc-ia64.c:4281 config/tc-ia64.c:4293 +#: config/tc-ia64.c:4620 config/tc-ia64.c:4632 msgid "Use of p0 is not valid in this context" msgstr "Utilisation de p n'est pas valide dans ce contexte" -#: config/tc-ia64.c:4288 +#: config/tc-ia64.c:4627 msgid "At least two PR arguments expected" msgstr "Au moins deux arguments PR attendus" -#: config/tc-ia64.c:4302 +#: config/tc-ia64.c:4641 msgid "At least one PR argument expected" msgstr "Au moins un argument PR attendu" -#: config/tc-ia64.c:4338 MRO +#: config/tc-ia64.c:4677 #, c-format msgid "Inserting \"%s\" into entry hint table failed: %s" msgstr "Insertion de \"%s\" dans la table d'indices a échoué: %s" #. FIXME -- need 62-bit relocation type -#: config/tc-ia64.c:4758 +#: config/tc-ia64.c:5147 msgid "62-bit relocation not yet implemented" msgstr "Relocalisation 62 bits n'est pas encore implantée" -#: config/tc-ia64.c:4820 +#. XXX technically, this is wrong: we should not be issuing warning +#. messages until we're sure this instruction pattern is going to +#. be used! +#: config/tc-ia64.c:5220 msgid "lower 16 bits of mask ignored" msgstr "16 bits du bas du masque sont ignorés" -#: config/tc-ia64.c:5317 +#: config/tc-ia64.c:5775 msgid "Value truncated to 62 bits" msgstr "Valeur tronquée à 62 bits" -#: config/tc-ia64.c:5668 +#: config/tc-ia64.c:6126 msgid "Additional NOP may be necessary to workaround Itanium processor A/B step errata" msgstr "L'ajout de NOP peut être nécessaire pour contrer les erreurs d'étapes A/B du processeur Itanium" -#: config/tc-ia64.c:5849 +#: config/tc-ia64.c:6309 +#, c-format msgid "Unrecognized option '-x%s'" msgstr "Option non reconnue '-x%s'" -#: config/tc-ia64.c:5877 +#: config/tc-ia64.c:6337 msgid "" "IA-64 options:\n" " -milp32|-milp64|-mlp64|-mp64\tselect data model (default -mlp64)\n" @@ -4027,32 +4316,37 @@ msgstr "" " -xauto enlever automatiquement les violations de dépendance\n" " -xdebug passer en mode débug le vérificateur de violations de dépendance\n" -#: config/tc-ia64.c:6147 config/tc-mips.c:1014 +#: config/tc-ia64.c:6351 +msgid "--gstabs is not supported for ia64" +msgstr "--gstabs n'est pas supporté pour ia64" + +#: config/tc-ia64.c:6618 config/tc-mips.c:1227 msgid "Could not set architecture and machine" msgstr "Ne peut initialiser l'architecture et la machine" -#: config/tc-ia64.c:6223 +#: config/tc-ia64.c:6725 msgid "Explicit stops are ignored in auto mode" msgstr "Les arrêts explicites sont ignorés en mode auto" -#: config/tc-ia64.c:6273 +#: config/tc-ia64.c:6775 msgid "Found '{' after explicit switch to automatic mode" msgstr "Trouvé '{' après un passage explicite en mode automatique" -#: config/tc-ia64.c:6686 +#: config/tc-ia64.c:7222 #, c-format msgid "Unhandled dependency %s for %s (%s), note %d" msgstr "Dépendance non traitée %s pour %s (%s), noter %d" -#: config/tc-ia64.c:7962 +#: config/tc-ia64.c:8498 +#, c-format msgid "Unrecognized dependency specifier %d\n" msgstr "Spécificateur de dépendance non reconnu %d\n" -#: config/tc-ia64.c:8753 +#: config/tc-ia64.c:9300 msgid "Only the first path encountering the conflict is reported" msgstr "Seul le premier chemin où le conflit est rencontré est rapporté" -#: config/tc-ia64.c:8756 +#: config/tc-ia64.c:9303 msgid "This is the location of the conflicting usage" msgstr "Voici la localisation d'un usage conflictuel." @@ -4127,86 +4421,90 @@ msgstr " -relax créer d msgid " -cpu-desc provide runtime cpu description file\n" msgstr " -cpu-desc fournir un fichier description du cpu pour l'exécution\n" -#: config/tc-m32r.c:688 +#: config/tc-m32r.c:691 msgid "Instructions write to the same destination register." msgstr "Les instructions écrivent au même registre de destination." -#: config/tc-m32r.c:696 +#: config/tc-m32r.c:699 msgid "Instructions do not use parallel execution pipelines." msgstr "Les instructions n'utilisent pas de pipelines parallèles durant l'exécution." -#: config/tc-m32r.c:703 +#: config/tc-m32r.c:706 msgid "Instructions share the same execution pipeline" msgstr "Les instructions partagent le même pipeline durant l'exécution" -#: config/tc-m32r.c:773 config/tc-m32r.c:870 +#: config/tc-m32r.c:776 config/tc-m32r.c:872 #, c-format msgid "not a 16 bit instruction '%s'" msgstr "n'est pas une instruction de 16 bits '%s'" -#: config/tc-m32r.c:780 config/tc-m32r.c:877 config/tc-m32r.c:1033 +#: config/tc-m32r.c:783 config/tc-m32r.c:879 config/tc-m32r.c:1035 +#, c-format msgid "unknown instruction '%s'" msgstr "instruction inconnue '%s'" -#: config/tc-m32r.c:789 config/tc-m32r.c:884 config/tc-m32r.c:1040 +#: config/tc-m32r.c:792 config/tc-m32r.c:886 config/tc-m32r.c:1042 #, c-format msgid "instruction '%s' is for the M32RX only" msgstr "instruction '%s' est valable seulement pour M32RX" -#: config/tc-m32r.c:798 config/tc-m32r.c:893 +#: config/tc-m32r.c:801 config/tc-m32r.c:895 #, c-format msgid "instruction '%s' cannot be executed in parallel." msgstr "instruction '%s' ne peut êtreexécutée en parallèle." -#: config/tc-m32r.c:854 config/tc-m32r.c:918 config/tc-m32r.c:1090 +#: config/tc-m32r.c:856 config/tc-m32r.c:920 config/tc-m32r.c:1092 msgid "internal error: lookup/get operands failed" msgstr "erreur interne: opérande lookup/get a échoué" -#: config/tc-m32r.c:903 +#: config/tc-m32r.c:905 #, c-format msgid "'%s': only the NOP instruction can be issued in parallel on the m32r" msgstr "'%s': seule l'instruction NOP peut être utilisée en parallèle sur le m32r" -#: config/tc-m32r.c:932 +#: config/tc-m32r.c:934 #, c-format msgid "%s: output of 1st instruction is the same as an input to 2nd instruction - is this intentional ?" msgstr "%s: la sortie de la 1ere instruction est la même que l'entrée de la 2e instruction - est-ce intentionnel ?" -#: config/tc-m32r.c:936 +#: config/tc-m32r.c:938 #, c-format msgid "%s: output of 2nd instruction is the same as an input to 1st instruction - is this intentional ?" msgstr "%s: la sortie de la 2e instruction est la même que l'entrée de la 1ere instruction - est-ce intentionnel ?" -#: config/tc-m32r.c:1250 config/tc-ppc.c:1459 config/tc-ppc.c:3681 read.c:1358 +#: config/tc-m32r.c:1252 config/tc-ppc.c:1571 config/tc-ppc.c:3966 msgid "Expected comma after symbol-name: rest of line ignored." msgstr "Virgule attendue après le nomde symbole: reste de la ligne ignoré." -#: config/tc-m32r.c:1260 +#: config/tc-m32r.c:1262 #, c-format msgid ".SCOMMon length (%ld.) <0! Ignored." msgstr "longueur .SCOMMon (%ld.) <0! Ignoré." -#: config/tc-m32r.c:1274 config/tc-ppc.c:1481 config/tc-ppc.c:2392 -#: config/tc-ppc.c:3705 +#: config/tc-m32r.c:1276 config/tc-ppc.c:1593 config/tc-ppc.c:2615 +#: config/tc-ppc.c:3990 msgid "ignoring bad alignment" msgstr "mauvais alignement ignoré" -#: config/tc-m32r.c:1301 config/tc-ppc.c:1492 config/tc-ppc.c:3717 read.c:1382 -#: read.c:2108 +#: config/tc-m32r.c:1288 config/tc-ppc.c:1630 config/tc-v850.c:383 +msgid "Common alignment not a power of 2" +msgstr "Alignement du commun n'est pas une puissance de 2" + +#: config/tc-m32r.c:1303 config/tc-ppc.c:1604 config/tc-ppc.c:4002 #, c-format msgid "Ignoring attempt to re-define symbol `%s'." msgstr "Tentative ignorée de re-définition du symbole `%s'." -#: config/tc-m32r.c:1310 +#: config/tc-m32r.c:1312 #, c-format msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld." msgstr "Longueur de .scomm \"%s\" est déjà %ld. N'a pas été changé à %ld." -#: config/tc-m32r.c:1786 +#: config/tc-m32r.c:1789 msgid "Unmatched high/shigh reloc" msgstr "Relocalisation high/shigh non pairée" -#: config/tc-m68hc11.c:305 +#: config/tc-m68hc11.c:327 #, c-format msgid "" "Motorola 68HC11/68HC12 options:\n" @@ -4233,54 +4531,55 @@ msgstr "" " --generate-example générer un exemple de chaque instruction\n" " (utiliser en mode test)\n" -#: config/tc-m68hc11.c:346 +#: config/tc-m68hc11.c:368 +#, c-format msgid "Default target `%s' is not supported." msgstr "Cible de défaut `%s' n'est pas supportée." #. Dump the opcode statistics table. -#: config/tc-m68hc11.c:365 +#: config/tc-m68hc11.c:387 msgid "Name # Modes Min ops Max ops Modes mask # Used\n" msgstr "Nom # Modes Min ops Max ops Modes masq. # Utilisé\n" -#: config/tc-m68hc11.c:415 +#: config/tc-m68hc11.c:437 #, c-format msgid "Option `%s' is not recognized." msgstr "L'option `%s' n'est pas reconnue." -#: config/tc-m68hc11.c:636 +#: config/tc-m68hc11.c:658 msgid "#" msgstr "#" -#: config/tc-m68hc11.c:645 +#: config/tc-m68hc11.c:667 msgid "#" msgstr "#" -#: config/tc-m68hc11.c:654 config/tc-m68hc11.c:663 +#: config/tc-m68hc11.c:676 config/tc-m68hc11.c:685 msgid ",X" msgstr ",X" -#: config/tc-m68hc11.c:681 +#: config/tc-m68hc11.c:703 msgid "*" msgstr "*" -#: config/tc-m68hc11.c:693 +#: config/tc-m68hc11.c:715 msgid "#" msgstr "#" -#: config/tc-m68hc11.c:703 +#: config/tc-m68hc11.c:725 #, c-format msgid "symbol%d" msgstr "symbole%d" -#: config/tc-m68hc11.c:705 +#: config/tc-m68hc11.c:727 msgid "" msgstr "" -#: config/tc-m68hc11.c:724 +#: config/tc-m68hc11.c:746 msgid "